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 | 非易失的 | 必須根據需要由被調用方保留。 |
