gpt4 book ai didi

assembly - 通用寄存器 - 订购

转载 作者:行者123 更新时间:2023-12-02 18:59:13 29 4
gpt4 key购买 nike

为什么通用寄存器按原样排序(eax、ecx、edx、ebx)?例如,对于“inc”指令,操作码是:

inc eax - 40
inc ecx - 41
inc edx - 42
inc ebx - 43

这样排序有什么原因吗?

最佳答案

(E)BX 的奇怪位置可能是由于 8086 从 8080 演变而来。

8080有一个累加器(A)和6个通用寄存器B、C、D、E、H和L,其中B/C、D/E和H/L可以成对一起使用,并且在特定的H/L可以用作存储器访问的地址。 8086 的设计使得现有的 8080 代码可以轻松地转换为它;我想按以下顺序映射寄存器似乎是合乎逻辑的:

8080 register A   -> 8086 internal register 0
B,C -> 1
D,E -> 2
H,L -> 3
SP -> 4
正如另一个答案中所指出的,8086 中的 AX、BX、CX 和 DX 不仅仅是 4 个通用寄存器的任意名称 - 它们对于这些寄存器具有的特殊功能具有助记含义:“累加器”、“基址” ”、“计数”和“数据”。考虑到上面的映射,分配内部寄存器0的“累加器”函数,内部寄存器3的“基数”函数。(8086内部寄存器5、6和7是BP、SI和DI,这是新功能。)

当然,这实际上只是一些知情人士(例如,参见 here)的猜测 - 只有 8086 设计师确切知道......

关于assembly - 通用寄存器 - 订购,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3823970/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com