Assembly 为什么在执行PUSH指令时rA:rB是2:8而不是2:f?

Assembly 为什么在执行PUSH指令时rA:rB是2:8而不是2:f?,assembly,cpu-architecture,instructions,y86,Assembly,Cpu Architecture,Instructions,Y86,我正在阅读《计算机系统:程序员的观点》的第四章,了解Y86的顺序实现。下面是汇编代码: 我们跟踪push指令的执行情况,以分析push操作的每个步骤。以下是流程,左部分是通用的,右部分是专用的: 除了rA:rB,我能理解所有的步骤。看第一张图片,指令是a02f,所以在这种情况下,icode:ifun应该是a:0,rA:rB应该是2:f。然而,根据这本书,rA:rB实际上是2:8,而不是2:f。但是为什么?我真的不知道'8'来自哪里。这是一个勘误表,它被列在: 第4章:处理器体系结构 p。3

我正在阅读《计算机系统:程序员的观点》的第四章,了解Y86的顺序实现。下面是汇编代码:

我们跟踪push指令的执行情况,以分析push操作的每个步骤。以下是流程,左部分是通用的,右部分是专用的:


除了rA:rB,我能理解所有的步骤。看第一张图片,指令是a02f,所以在这种情况下,icode:ifun应该是a:0,rA:rB应该是2:f。然而,根据这本书,rA:rB实际上是2:8,而不是2:f。但是为什么?我真的不知道'8'来自哪里。

这是一个勘误表,它被列在:

第4章:处理器体系结构

  • p。370,除了跟踪PUSH指令之外:第二个指令字节应该是0x2f,而不是0x28。Fetch阶段中rB的值应为0xf,而不是0x8

这是一个勘误表,列在:

第4章:处理器体系结构

  • p。370,除了跟踪PUSH指令之外:第二个指令字节应该是0x2f,而不是0x28。Fetch阶段中rB的值应为0xf,而不是0x8

装配清单显示
pushl
A02F
,但旁白说
pushl
A028
,一些文本表明
F
用于编码无寄存器,而其他文本则使用8。我认为这两种编码都是允许的。您可以看到,对于泛型或特定的
pushl
,没有使用
rB
,因此显然没有太大关系。“旁白说pushl是A028”,其中“我们还可以看到指令位于地址0x01a,由两个字节组成,值分别为0xa0和0x28。”但是我不知道他从哪里得出这个结论。他只是直接说了这个结论。汇编列表显示
pushl
A02F
,而旁白说
pushl
A028
,一些文本表明
F
用于编码无寄存器,而其他文本则使用8。我认为这两种编码都是允许的。您可以看到,对于泛型或特定的
pushl
,没有使用
rB
,因此显然没有太大关系。“旁白说pushl是A028”,其中“我们还可以看到指令位于地址0x01a,由两个字节组成,值分别为0xa0和0x28。”但我不知道他从哪里得出这个结论。他只是直接说了那个结论。