Visual Studio 2017 を使用することをお勧めします

レジスタの使用

 

公開日: 2016年7月

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

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

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

登録状態用途
RAXVolatile戻り値レジスタ
RCXVolatile1 番目の整数引数
RDXVolatile2 番目の整数引数
R8Volatile3 番目の整数引数
R9Volatile4 番目の整数引数
R10:R11Volatile必要に応じて、呼び出し元によって保持される必要があります。syscall/sysret 命令で使用されます。
R12:R15非 volatile呼び出し先によって保持される必要があります。
RDI非 volatile呼び出し先によって保持される必要があります。
RSI非 volatile呼び出し先によって保持される必要があります。
RBX非 volatile呼び出し先によって保持される必要があります。
RBP非 volatileフレーム ポインターとして使用できます。呼び出し先によって保持される必要があります。
RSP非 volatileスタック ポインター
XMM0, YMM0Volatile1 番目の FP 引数。__vectorcall が使用された場合の 1 番目のベクター型引数。
XMM1, YMM1Volatile2 番目の FP 引数。__vectorcall が使用された場合の 2 番目のベクター型引数。
XMM2, YMM2Volatile3 番目の FP 引数。__vectorcall が使用された場合の 3 番目のベクター型引数。
XMM3, YMM3Volatile4 番目の FP 引数。__vectorcall が使用された場合の 4 番目のベクター型引数。
XMM4, YMM4Volatile必要に応じて、呼び出し元によって保持される必要があります。__vectorcall が使用された場合の 5 番目のベクター型引数。
XMM5, YMM5Volatile必要に応じて、呼び出し元によって保持される必要があります。__vectorcall が使用された場合の 6 番目のベクター型引数。
XMM6:XMM15, YMM6:YMM15非 volatile (XMM)、volatile (YMM の上半分)必要に応じて、呼び出し先によって保持される必要があります。 必要に応じて、呼び出し元によって YMM レジスタが保持される必要があります。

x64 ソフトウェア規約
__vectorcall

表示: