32位寄存器名稱以E開頭,64位以R開頭。E和R代表什麼意思?有沒有選擇這些字母的理由?另外,在64位寄存器中,我們也可以在任何低級別調試器(例如Windbg)中看到最右邊的位仍被稱爲與64位寄存器相同的名稱,除了名稱以E開頭。例如64位系統中RAX寄存器的最右側32位稱爲EAX。E和R前綴在Intel 32位和64位寄存器的名稱中代表什麼?
那麼,E和R代表什麼?還有,爲什麼後綴X用於註冊?
32位寄存器名稱以E開頭,64位以R開頭。E和R代表什麼意思?有沒有選擇這些字母的理由?另外,在64位寄存器中,我們也可以在任何低級別調試器(例如Windbg)中看到最右邊的位仍被稱爲與64位寄存器相同的名稱,除了名稱以E開頭。例如64位系統中RAX寄存器的最右側32位稱爲EAX。E和R前綴在Intel 32位和64位寄存器的名稱中代表什麼?
那麼,E和R代表什麼?還有,爲什麼後綴X用於註冊?
R
just stands for "register"。 AMD64 ISA擴展添加了8個附加通用寄存器,名稱爲R8
到R15
。原始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位AL
和AH
寄存器,它們是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 8080爲instructions that treated a pair of otherwise-separate 8-bit registers as a 16-bit integer,類似於如何AX
表示AH:AL
對。因此,另一種可能的解釋是,X
意味着對,和命名高時,繼續這種用法:在隨後的處理器低對,其中包括8086,這是的8080
https://stackoverflow.com/a/2565092/224132表明X可能代表「對」。 8086是8086的祖先,可以使用8位寄存器對作爲16位整數或指針,其方式與CX是CH:CL寄存器對相同。 –
謝謝,很好找。雖然我同意這是一個有趣的歷史珍聞,值得納入一個規範的答案,但我不確定它說服我「X」實際上代表「對」。它可能仍然代表「擴展」,因爲這些指令被「擴展」以在16位對上操作。 @Peter –
是的,在我離開我的第一條評論後編輯你的答案時,我認爲它可能意味着/來自一對,但並不代表它。 IDK if I.J.肯尼迪的意思是說*代表*對,或者只是爲了說明8080的歷史。 –
一個完整的16位擴展部分至少http://stackoverflow.com/questions/5125729/where-can-i-find-x86-register-names –
@SamiKuhmonen謝謝。 –
@LưuVĩnhPhúc謝謝。 –