レジスタの使用

更新 : 2007 年 11 月

x64 アーキテクチャには、16 個の汎用レジスタと 16 個の浮動小数点用の XMM レジスタが用意されています。揮発性レジスタは、呼び出しで使用された後に内容が破棄されることが、呼び出し元によって想定されているスクラッチ レジスタです。関数呼び出しで使用された後もレジスタの値を保持するには不揮発性レジスタが必要です。使用された不揮発性レジスタの保存は、呼び出された関数が行う必要があります。

関数呼び出しで各レジスタがどのように使用されるかを次の表に示します。

Register

ステータス

使用方法

RAX

揮発性

戻り値レジスタ

RCX

揮発性

1 番目の整数引数

RDX

揮発性

2 番目の整数引数

R8

揮発性

3 番目の整数引数

R9

揮発性

4 番目の整数引数

R10:R11

揮発性

必要に応じて、呼び出された関数が保存する必要があります。syscall/sysret 命令で使用されます。

R12:R15

不揮発性

呼び出された関数が保存する必要があります。

RDI

不揮発性

呼び出された関数が保存する必要があります。

RSI

不揮発性

呼び出された関数が保存する必要があります。

RBX

不揮発性

呼び出された関数が保存する必要があります。

RBP

不揮発性

フレーム ポインタとして使用できます。呼び出された関数が保存する必要があります。

RSP

不揮発性

スタック ポインタ

XMM0

揮発性

1 番目の FP 引数

XMM1

揮発性

2 番目の FP 引数

XMM2

揮発性

3 番目の FP 引数

XMM3

揮発性

4 番目の FP 引数

XMM4:XMM5

揮発性

必要に応じて、呼び出された関数が保存する必要があります。

XMM6:XMM15

不揮発性

必要に応じて、呼び出された関数が保存する必要があります。

参照

参照

x64 ソフトウェア規約