2017-05-12 74 views
3

32位寄存器名稱以E開頭,64位以R開頭。E和R代表什麼意思?有沒有選擇這些字母的理由?另外,在64位寄存器中,我們也可以在任何低級別調試器(例如Windbg)中看到最右邊的位仍被稱爲與64位寄存器相同的名稱,除了名稱以E開頭。例如64位系統中RAX寄存器的最右側32位稱爲EAX。E和R前綴在Intel 32位和64位寄存器的名稱中代表什麼?

那麼,E和R代表什麼?還有,爲什麼後綴X用於註冊?

+0

一個完整的16位擴展部分至少http://stackoverflow.com/questions/5125729/where-can-i-find-x86-register-names –

+0

@SamiKuhmonen謝謝。 –

+0

@LưuVĩnhPhúc謝謝。 –

回答

7

R just stands for "register"。 AMD64 ISA擴展添加了8個附加通用寄存器,名稱爲R8R15。原始8個寄存器的64位擴展版本有R前綴添加到他們for symmetry

E代表 「è xtended」 或 「è nhanced」。 (Wikipedia says "extended")。它們是16位寄存器的「擴展」版本,因爲它們提供總共32位的16個附加位。

X也是 「電子X傾向於」 - 或者也許這意味着16在他X adecimal。 *X-附加寄存器是8位寄存器的16位擴展版本。對於8位寄存器,後綴L意味着「低」,後綴H意味着「高」。

因此,考慮一個特定的寄存器,例如,你有8位ALAH寄存器,它們是16位AX寄存器,它是32位的低位字的低字節和高字節EAX寄存器,它是64位RAX寄存器的低位雙字。

| 63 - 32 | 31 - 16 | 15 - 8 | 7 - 0 | 
====================================== 
.   .   | AH  | AL | 
.   .   | AX    | 
.   | EAX      | 
| RAX        | 
====================================== 
| 63 - 32 | 31 - 16 | 15 - 8 | 7 - 0 | 

__
* X was used in the mnemonics (such as LXI and DCX) on the 8080instructions that treated a pair of otherwise-separate 8-bit registers as a 16-bit integer,類似於如何AX表示AH:AL對。因此,另一種可能的解釋是,X意味着,和命名高時,繼續這種用法:在隨後的處理器低對,其中包括8086,這是的8080

+1

https://stackoverflow.com/a/2565092/224132表明X可能代表「對」。 8086是8086的祖先,可以使用8位寄存器對作爲16位整數或指針,其方式與CX是CH:CL寄存器對相同。 –

+0

謝謝,很好找。雖然我同意這是一個有趣的歷史珍聞,值得納入一個規範的答案,但我不確定它說服我「X」實際上代表「對」。它可能仍然代表「擴展」,因爲這些指令被「擴展」以在16位對上操作。 @Peter –

+0

是的,在我離開我的第一條評論後編輯你的答案時,我認爲它可能意味着/來自一對,但並不代表它。 IDK if I.J.肯尼迪的意思是說*代表*對,或者只是爲了說明8080的歷史。 –