25

例如,累加器被命名为EAXand,而指令指针被调用IP。我也知道有字节称为CLand DH。我知道所有名称都必须有一个约定,但它是什么?

4

5 回答 5

24

C 和 D 是数字/类型,H 表示高位,L 表示高位寄存器的低位。 http://en.wikipedia.org/wiki/X86

维基百科解释得很好。

更多来自维基百科:

  1. AX/EAX/RAX:累加器
  2. BX/EBX/RBX:基础
  3. CX/ECX/RCX:计数器
  4. DX/EDX/RDX:数据/一般
于 2009-05-21T13:28:44.253 回答
24

我发现的东西

* EAX - Accumulator Register
* EBX - Base Register
* ECX - Counter Register
* EDX - Data Register
* ESI - Source Index
* EDI - Destination Index
* EBP - Base Pointer
* ESP - Stack Pointer
于 2009-05-21T13:30:04.077 回答
18

它的历史。x86 来自 8086,8080 来自 8008,8008 来自 4004。有 16 位寄存器 AX、BX 等,对于 80386,它们被“扩展”为 32 位。

补充:顺便说一句,摩托罗拉 68K 从一开始就有 32 位寄存器,所以在最初的几十年里编程要容易得多。我参与的项目选择英特尔是出于商业原因,而不是技术原因。

于 2009-05-21T13:31:28.787 回答
5

较旧的处理器具有名为 A、B 等的累加器(按字母顺序排列)。在开发 16 位和 32 位累加器时,工程师添加了一个 X(扩展)。所以这都是关于历史的,因为 C 语言是这样称呼的,因为它是从 B 语言(贝尔实验室)发展而来的。

该约定只是内部的,以跟上他们已经熟悉的名称。

于 2009-05-21T13:31:44.417 回答
5

这里有一些很好的答案:x86 汇编寄存器——为什么它们的工作方式是这样的?

于 2009-05-21T13:34:34.693 回答