低レイヤー勉強会 第 5 回 - 個人メモ
前回のおさらい
- メインメモリ
- 例えるならビルや巨大なロッカー
- ビルに例えるならフロアの番号がアドレス
- 1フロアに1バイトのデータを格納できる
- ビルに例えるならフロアの番号がアドレス
- 容量が大きくて処理が遅い
- 例えるならビルや巨大なロッカー
- レジスタ
- 命令とデータ
- 容量が小さくて処理が早い
- CPU
- プログラムを解釈して実行する場所
- アセンブリ
ウォーミングアップ
- CPUが解釈実行できるプログラムはネイティブコード
- 拡張子は .obj
- 複数のオブジェクトを結合して実行可能ファイルを生成するのはリンカーというツール
- コンパイルとリンクで実行可能な EXE ファイルが生成される
- プログラムの命令によって動的に確保される領域をヒープ
- ヒープはプログラムの命令によって明示的に確保と解放が行われる
- スタック
- スタックにあるデータはコンパイラが自動的に格納したり削除してくれる
- ビルド
- 実行ファイルをつくること
- パース、コンパイル、 リンクすること
- リンク
- コンパイルだけでは作成できない実行可能ファイルを作成すること
- ガーベージコレクション
- 処理が終わって不要になったヒープ領域のデータを削除してそのメモリ領域を自動的に解放すること
コンピュータはネィティブコードしか実行できない
- プログラムとはコンピュータに作業させるための指示を束ねた全体のことをいう
ネイティブコードの内容を見てみる
- exe ファイルをダンプしないと中身が見れない
- ダンプとはファイルの内容を1バイトずつ2桁の16真数で表示すること
- objdump は obj を dump すること