導入
CPU が計算をするとき、値を置く超高速な小さな箱を レジスタ と呼びます。メモリ(RAM)よりずっと速く、CPU 内部にわずかな数だけあります。アセンブリの多くは「レジスタに値を出し入れして計算する」ことの繰り返しです。
説明
x86-64 の代表的な汎用レジスタ(64ビット)と、その一部を指す別名です。
| 64bit | 下位32bit | 主な用途(慣習) |
|---|---|---|
rax | eax | 計算結果・関数の戻り値 |
rbx | ebx | 汎用(保存される) |
rcx | ecx | ループ回数・第4引数 |
rdx | edx | 汎用・第3引数 |
rsi | esi | 第2引数 |
rdi | edi | 第1引数 |
rsp | esp | スタックポインタ(第4章) |
rbp | ebp | ベースポインタ |
rax(64ビット)の下位32ビットがeax、下位16ビットがax、その下位8ビットがal… と、同じレジスタを違う幅で呼べます。- 「戻り値は
rax」「第1引数はrdi」といった**慣習(呼び出し規約)**があり、これを知っているとアセンブリが読めるようになります。
mov rax, 42 ; rax に 42 を入れる
mov rbx, rax ; rbx に rax の値(42)をコピー
まとめ
レジスタは「CPU の作業机の上の小箱」。数が限られるので、足りなくなったらメモリに退避します。次章では、このレジスタを使った基本命令を見ていきます。