ポシンタンから歴史を
6章 今井
○ファイルにはバイト単位で記録する
ファイルとは、バイト単位のデータがの集まったものである。[図6-1]
○ランレングス法の仕組み
ランレングス法とは、ファイルの内容を「データ×繰り返し回数」で表すことで圧縮する方法である。[図6-2]
○ランレングス法の欠点
同じデータが連続しないファイルでは逆にサイズが大きくなってしまうことである。
一般的に、
向くもの :画像ファイル
向かないもの:文書ファイル
○モールス符号にハフマン法の基礎を見た
ハフマン法の概念
「出現頻度の高いデータには少ないビット数を割り当てれば、かわりに出現頻度の低いデータに通常より多いビット数を当てても全体としては圧縮できる」
この考え方は、一般的な文書での出現頻度から文字に信号の長短を割り振ったモールス符号と似ている。
○ハフマン符号は木を用いて作る
ハフマン法の特徴
・ファイルごとにデータに割り当てられる符合が異なる。
・圧縮ファイルには「符号の情報」と「圧縮されたデータ」の両方が格納される。
・ハフマン法はランレングス法よりもプログラムが複雑になる。
木とは?[図6-5]
○ハフマン法で圧縮率が2倍に
[表6-1]と[表6-4]を比べるとみな2倍以上の圧縮率に。
データが文字や画像など、何を表しているのかは圧縮技術には無関係である。
○画像ファイルに使う非可逆圧縮
元ファイルに、
戻せる圧縮 :「可逆圧縮」
戻せない圧縮:「非可逆圧縮」
圧縮率、処理時間、ファイル種類との相性など条件が複数あるので、万能な圧縮技法は考案されていない。
担当 ウンリョン
第8章ソース・ファイルから実行可能ファイルができるまで
* コンピュータはネイティブコードしか実行できない
「メモ帳」などにソースコードでプログラミングしても実行できない
理由:コンピュータのマイクロプロセッサが翻訳・実行できるのはネイティブコードのプログラムだけ
*ネイティブコードの内容を見てみよう
WindowsのEXEファイルの内容はネイティブコード
「ダンブ」:ファイルの内容を1バイトずつ16進数で表示
ネイティブコード=数値の羅列
*ソースコードを翻訳するのがコンパイラ
「コンパイラ」:ソースコードをネイティブコードに翻訳するプログラム
コンパイラの種類:プログラミング言語、マイクロプロセッサの種類に応じる
*コンパイルだけで実行可能ファイルが得られない
実行可能なEXEファイルを得るため−「リンク」処理が必要
コンパイル後「.obj」(オブジェクト・ファイル)が生成
「リンク」:複数のオブジェクト・ファイルを結合して1つのEXE
ファイル生成する処理
*スタートアップとライブラリ・ファイル
「スタートアップ」:cOw32.obj
すべてのプログラムの先頭に結合する共通的な処理が記述されたオブジェクト・ファイル
「ライブラリ・ファイル」複数のオブジェクト・ファイルをまとめて記録したもの
*DLLファイルとインポート・ライブラリ
「DLLファイル」:特殊なライブラリ・ファイル
ダイナミックという名前が示す
プログラムの実行時にEXEファイルに結合されるもの
「インポート・ライブラリ」
*実行可能ファイルの実行に必要なことは?
「再配置情報」:メモリー・アドレスの交換が必要な部分を示す情報
*ロード時に作られるスタックとヒープ
「スタック」:関数の内部で一時的に使用される変数や関数を呼び出すときのパラメータを格納するためのメモリー領域
「ヒープ」:プログラムの実行時に動的に作成される配列やオブジェクトを格納するためのメモリー領域