1
我一直在研究x86汇编语言,并且PUSHA指令产生了一个问题。据我所知,Pusha与PUSH AX,CX,DX,BX,原始SP,BP,SI和DI相同。
我想知道的是为什么在PUSHA指令中执行PUSH BX之前执行PUSH CX。为什么在PUSHA指令中执行PUSH BX之前执行PUSH CX
硬件架构中是否有任何理由?
我一直在研究x86汇编语言,并且PUSHA指令产生了一个问题。据我所知,Pusha与PUSH AX,CX,DX,BX,原始SP,BP,SI和DI相同。
我想知道的是为什么在PUSHA指令中执行PUSH BX之前执行PUSH CX。为什么在PUSHA指令中执行PUSH BX之前执行PUSH CX
硬件架构中是否有任何理由?
的通用寄存器不按字母顺序排列的字母是一个词捷径:
AX => Accumulator register
BX => Base register
CX => Counter register
DX => Data register
大多数人使用AX
,BX
,CX
,DX
因为它更容易记住,但对于建筑,订单实际上是AX
,CX
,DX
,BX
,这可以在指令操作码noties:
opcode | instruction
--------+------------------
B80000 | MOV AX,0000
B90000 | MOV CX,0000
BA0000 | MOV DX,0000
BB0000 | MOV BX,0000
50 | PUSH AX
51 | PUSH CX
52 | PUSH DX
53 | PUSH BX
非常感谢您的回复,对于迟到的回复感到抱歉。但在阅读你的回复之后,又有一个问题出现了。为什么操作码的顺序不是按字母顺序排列的?有什么历史原因吗? – joejo
@joejo它是通过op代码来排序的,所以你可以看到架构在任何地方都可以使用这个命令......将重新映射表添加到CPU控制单元或微代码中只是为了重新排序操作数而不匹配寄存器文件地址(这会浪费时间,晶体管和芯片空间并降低功耗)。 – Spektre