共用方式為


暫存器使用方式

x64 架構提供 16 個一般用途的暫存器 (以下稱為整數暫存器) 以及 16 個做為浮點用途的 XMM 暫存器。 動態暫存器是可隨意讀寫的暫存器,呼叫端假設在呼叫之間其內容會遭到修改。 靜態暫存器需要在函式呼叫之間保留其值,而且如果會使用到,則必須由被呼叫端儲存。

下表說明每個暫存器在函式呼叫之間的使用方式:

註冊

狀態

使用

RAX

動態

傳回值的暫存器

RCX

動態

第一個整數引數

RDX

動態

第二個整數引數

R8

動態

第三個整數引數

R9

動態

第四個整數引數

R10:R11

動態

必須由呼叫端視需要保留;在 syscall/sysret 指令中使用

R12:R15

靜態

必須由被呼叫端保留

RDI

靜態

必須由被呼叫端保留

RSI

靜態

必須由被呼叫端保留

RBX

靜態

必須由被呼叫端保留

RBP

靜態

可用來做為框架指標;必須由被呼叫端保留。

RSP

靜態

堆疊指標

XMM0

動態

第一個 FP 引數

XMM1

動態

第二個 FP 引數

XMM2

動態

第三個 FP 引數

XMM3

動態

第四個 FP 引數

XMM4:XMM5

動態

必須由呼叫端視需要保留

XMM6:XMM15

靜態

必須由被呼叫端視需要保留。

請參閱

參考

x64 軟體慣例