64 位暫存器

AMD 是一家處理器製造商,已經從英特爾獲得了 80386 的設計許可,以生產相容但競爭的版本。他們對設計進行了內部更改,以提高設計的吞吐量或其他增強功能,同時仍然能夠執行相同的程式。

對於單一的英特爾,他們提出了英特爾 32 位設計的 64 位擴充套件,並生產出第一個仍然可以執行 32 位 x86 程式碼的 64 位晶片。英特爾最終在他們的 64 位架構版本中採用了 AMD 的設計。

64 位設計對暫存器組進行了一些更改,同時仍然向後相容:

  • 現有的通用暫存器擴充套件為 64 位,並以 R 字首命名:RAXRBXRCXRDXRSIRDIRBPRSP

    同樣,這些暫存器的下半部分與之前的 E 字首暫存器相同,並且無法獨立訪問上半部分。

  • 增加了 8 個 64 位暫存器,並沒有命名,只是編號:R8R9R10R11R12R13R14R15

    • 這些暫存器的 32 位低半部分是 R8DR15D(D 通常用於 DWORD)。
    • 這些暫存器的最低 16 位可以通過將 W 字尾為暫存器名稱來訪問:R8WR15W
  • 現在可以訪問所有 16 個暫存器的最低 8 位 :

    • 傳統的 ALBLCLDL;
    • (傳統)指標暫存器的低位元組:SILDILBPLSPL;
    • 8 個新暫存器的低位元組:R8BR15B
    • 但是,AHBHCHDH 在使用 REX 字首的指令中無法訪問(對於 64 位運算元大小,或訪問 R8-R15,或訪問 SILDILBPLSPL)。使用 REX 字首,用於表示 AH 的機器碼位模式代替 SPL,依此類推。請參閱英特爾指令參考手冊(第 2 卷)的表 3-1。

寫入 32 位暫存器始終將全寬暫存器的高 32 位歸零,這與寫入 8 位或 16 位暫存器(與舊值合併,這是對無序執行的額外依賴性)不同。 )。