Open4
低レイヤを知りたい人のためのCコンパイラ作成入門
低レイヤを知りたい人のためのCコンパイラ作成入門
- CPUが実行するプログラムと、そのプログラムが扱うデータは、どちらもメモリに入っていて、CPUはメモリから順に機械語命令を読み、その命令を実行する
- CPUにはレジスタという小さな記憶領域があり、多くの機械語はレジスタ間での操作として定義されている
オンライン・コンパイラ
Compiler Explorer
AT&T記法では結果レジスタが第2引数に来ます。したがって2引数の命令では引数を逆順に書くことになります。レジスタ名には%プレフィックスをつけて%raxというように書きます。数値には$プレフィックスをつけて$42というように記述します。
また、メモリを参照する場合、[]の代わりに()を使って、独特の記法で式を記述します。
本文中はIntel記法を使用
mov rbp, rsp // Intel
mov %rsp, %rbp // AT&T
mov rax, 8 // Intel
mov $8, %rax // AT&T
mov [rbp + rcx * 4 - 8], rax // Intel
mov %rax, -8(rbp, rcx, 4) // AT&T