http://blog.csdn.net/cosmoslife/article/details/8771773
http://blog.csdn.net/herx1/article/details/3134889
x64 結構提供了 16 個通用寄存器(以后稱為整數寄存器),以及 16 個可供浮點使用的 XMM 寄存器。易失寄存器是由調用方假想的臨時寄存器,並要在調用過程中銷毀。非易失寄存器需要在整個函數調用過程中保留其值,並且一旦使用,則必須由被調用方保存。
下表說明了每種寄存器在整個函數調用過程中的使用方法:
下表說明了每種寄存器在整個函數調用過程中的使用方法:
Register | 狀態 | 請使用 |
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 | 非易失的 | 必須根據需要由被調用方保留。 |