本文へスキップ
BecomeCoder

アセンブリ言語コース · 第1章 アセンブリ言語とは · レッスン2

レジスタ ― CPUの中の作業机

導入

CPU が計算をするとき、値を置く超高速な小さな箱を レジスタ と呼びます。メモリ(RAM)よりずっと速く、CPU 内部にわずかな数だけあります。アセンブリの多くは「レジスタに値を出し入れして計算する」ことの繰り返しです。

説明

x86-64 の代表的な汎用レジスタ(64ビット)と、その一部を指す別名です。

64bit下位32bit主な用途(慣習)
raxeax計算結果・関数の戻り値
rbxebx汎用(保存される)
rcxecxループ回数・第4引数
rdxedx汎用・第3引数
rsiesi第2引数
rdiedi第1引数
rspespスタックポインタ(第4章)
rbpebpベースポインタ
  • rax(64ビット)の下位32ビットが eax、下位16ビットが ax、その下位8ビットが al … と、同じレジスタを違う幅で呼べます。
  • 「戻り値は rax」「第1引数は rdi」といった**慣習(呼び出し規約)**があり、これを知っているとアセンブリが読めるようになります。
    mov     rax, 42       ; rax に 42 を入れる
    mov     rbx, rax      ; rbx に rax の値(42)をコピー

まとめ

レジスタは「CPU の作業机の上の小箱」。数が限られるので、足りなくなったらメモリに退避します。次章では、このレジスタを使った基本命令を見ていきます。