例如,累加器被命名爲EAX
,而指令指針被稱爲IP
。我也知道有字節CL
和DH
。我知道所有名字必須有一個約定,但它是什麼?爲什麼x86寄存器的命名方式是?
21
A
回答
22
C和D是數字/類型,H表示高位,H表示高位寄存器的低位部分。 http://en.wikipedia.org/wiki/X86
維基百科解釋得非常好。
從維基百科更多:
- AX/EAX/RAX:累加器
- BX/EBX/RBX:鹼
- CX/ECX/RCX:計數器
- DX/EDX/RDX : 數據/一般
18
* EAX - Accumulator Register
* EBX - Base Register
* ECX - Counter Register
* EDX - Data Register
* ESI - Source Index
* EDI - Destination Index
* EBP - Base Pointer
* ESP - Stack Pointer
17
這是歷史。 x86來自8086,8080來自8008,它來自4004.有16位寄存器AX,BX等,而80386則被「擴展」爲32位。
補充:順便說一下,摩托羅拉68K從一開始就擁有32位寄存器,所以在開始的幾十年裏編程變得更容易。我曾參與那些因爲商業原因選擇英特爾而非技術的項目。
+0
歷史ISN不連續--8080具有不同的寄存器名稱,並且這些名稱與8086一起出現。值得注意的是,在這裏,具有專用寄存器的CISC架構在8086和8080兩種版本中都有說明 - 儘管RISC後來出現了,所有的寄存器都是相同的方法(每條指令有32位,而不是試圖將大多數指令編碼爲8位)。 – ijw 2012-09-16 00:28:02
3
較舊的處理器具有名爲A,B等的累加器(按字母順序排列)。當開發16位和32位累加器時,工程師添加了X(擴展)。所以它的全部關於歷史,因爲語言C被稱爲這種方式,因爲它是從B語言(貝爾實驗室)發展而來的。
約定只是內部的,以跟上他們熟悉的名字。
5
相關問題
- 1. x86:使用寄存器作爲中間件,爲什麼?
- 2. x86寄存器名稱,尋址模式,位移和存儲器
- 3. 的x86寄存器值
- 4. 得到TypeScript生成命名的寄存器,而不是匿名寄存器
- 5. 新的X86_64處理器寄存器的名稱是什麼?
- 6. PIC寄存器(%ebx)是做什麼的?
- 7. EBX寄存器用於內存訪問的模式是什麼?
- 8. 什麼是x86寄存器表示movsb指令中的源位置?
- 9. 爲什麼在命名寄存器時ASM有不可能的限制?
- 10. 什麼是ESP和EBP寄存器?
- 11. 什麼是專用寄存器?
- 12. x86中的額外寄存器64位
- 13. 理解寄存器的問題x86
- 14. 什麼是存儲命名範圍信息的最佳方式?
- 15. 爲什麼24位寄存器?
- 16. 爲什麼只有四個寄存器?
- 17. 爲什麼Numpy的LinAlg Norm函數的命名方式是?
- 18. 爲什麼值被存儲在寄存器0x605040c,而不是12?
- 19. 作爲一個移位寄存器的數據結構的名稱是什麼
- 20. 爲什麼參數存儲在寄存器中而不是x86-64彙編中的堆棧上?
- 21. 爲什麼字符串插值命名的方式是?
- 22. x86彙編打印寄存器ascii
- 23. x86部分寄存器使用情況
- 24. 通過LLVM IR控制x86寄存器?
- 25. x86彙編寄存器地址
- 26. 爲什麼指向16位寄存器的指針是uword?
- 27. MRC命令的附加協處理器寄存器的功能是什麼?
- 28. 寄存器和臨時寄存器有什麼區別?
- 29. X86嵌入式彙編,訪問寄存器的特定部分
- 30. SSE設置寄存器爲0.0和1.0的最佳方法是什麼?
欲瞭解更多的歷史和解釋:http://www.swansontec.com/sregisters.html – rmmh 2013-01-25 00:16:29
@Daniel,你錯過了ESI,EDI,EBP等 – Pacerier 2017-05-17 16:59:17