例如,累加器被命名为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
欲了解更多的历史和解释:http://www.swansontec.com/sregisters.html – rmmh 2013-01-25 00:16:29
@Daniel,你错过了ESI,EDI,EBP等 – Pacerier 2017-05-17 16:59:17