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。
  • 現在可以訪問所有 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 位暫存器(與舊值合併,這是對無序執行的額外依賴性)不同。 )。