64 位暫存器
AMD 是一家處理器製造商,已經從英特爾獲得了 80386 的設計許可,以生產相容但競爭的版本。他們對設計進行了內部更改,以提高設計的吞吐量或其他增強功能,同時仍然能夠執行相同的程式。
對於單一的英特爾,他們提出了英特爾 32 位設計的 64 位擴充套件,並生產出第一個仍然可以執行 32 位 x86 程式碼的 64 位晶片。英特爾最終在他們的 64 位架構版本中採用了 AMD 的設計。
64 位設計對暫存器組進行了一些更改,同時仍然向後相容:
-
現有的通用暫存器擴充套件為 64 位,並以
R
字首命名:RAX
,RBX
,RCX
,RDX
,RSI
,RDI
,RBP
和RSP
。同樣,這些暫存器的下半部分與之前的
E
字首暫存器相同,並且無法獨立訪問上半部分。 -
增加了 8 個 64 位暫存器,並沒有命名,只是編號:
R8
,R9
,R10
,R11
,R12
,R13
,R14
和R15
。- 這些暫存器的 32 位低半部分是
R8D
到R15D
(D 通常用於 DWORD)。 - 這些暫存器的最低 16 位可以通過將
W
字尾為暫存器名稱來訪問:R8W
到R15W
。
- 這些暫存器的 32 位低半部分是
-
現在可以訪問所有 16 個暫存器的最低 8 位 :
- 傳統的
AL
,BL
,CL
和DL
; - (傳統)指標暫存器的低位元組:
SIL
,DIL
,BPL
和SPL
; - 8 個新暫存器的低位元組:
R8B
到R15B
。 - 但是,
AH
,BH
,CH
和DH
在使用 REX 字首的指令中無法訪問(對於 64 位運算元大小,或訪問 R8-R15,或訪問SIL
,DIL
,BPL
或SPL
)。使用 REX 字首,用於表示AH
的機器碼位模式代替SPL
,依此類推。請參閱英特爾指令參考手冊(第 2 卷)的表 3-1。
- 傳統的
寫入 32 位暫存器始終將全寬暫存器的高 32 位歸零,這與寫入 8 位或 16 位暫存器(與舊值合併,這是對無序執行的額外依賴性)不同。 )。