MIPS-如何查找分支和跳转指令的地址值
我马上就要考试了,我完全被这个问题困住了(见下文);即使是看模型答案也无济于事。我已经试着阅读我们的主题的主要文本,但仍然不知道如何做到这一点。如果有人能一步一步地介绍这个问题,我将不胜感激 “假设下面MIPS代码段的第一条指令位于内存地址0x1000000。在bne和j指令中,else和exit的值是多少?” 模型答案:MIPS-如何查找分支和跳转指令的地址值,mips,addressing,Mips,Addressing,我马上就要考试了,我完全被这个问题困住了(见下文);即使是看模型答案也无济于事。我已经试着阅读我们的主题的主要文本,但仍然不知道如何做到这一点。如果有人能一步一步地介绍这个问题,我将不胜感激 “假设下面MIPS代码段的第一条指令位于内存地址0x1000000。在bne和j指令中,else和exit的值是多少?” 模型答案: Else: 0000000000000011 Exit: 00000000000000010000000111 我还包括了一个链接,指向原始问题的图像。 首先,我们要处理分
Else: 0000000000000011 Exit: 00000000000000010000000111
我还包括了一个链接,指向原始问题的图像。
首先,我们要处理分行的事务。分支是
I-Type
指令,因此分支目标以16位编码。计算分支的立即数字段的最简单方法是计算分支指令与其目标之间的指令数。在这种情况下,else
标签是beq
之后的4
指令,但是,PC
在指令获取阶段增加了4
,因此实际立即字段实际上是3
。当然,在二进制中,这与示例00000000000011
匹配
接下来,跳转是一个J-Type
指令,它使用跳转地址的第一个24
位对跳转目标进行编码。但是,由于跳转目标必须是字对齐的,因此最后两位将始终为0
,因此不需要它们。因此,j
指令的跳转字段与示例答案匹配:0x1000101C>>2=0x4000407=000000000000000000000100000011
您需要提供问题的整个上下文,而不仅仅是部分(f)@gilsho问题的前几部分是不相关的。@OliCharlesworth因为我只有不到10个声誉,我不能嵌入图像-我现在已经在实际问题中包含了代码。首先,您提供的代码中没有“bne”指令,其次,不清楚您所说的“其他价值”是什么意思,它是内存中标签的地址,还是函数返回的值?
Else: 0000000000000011 Exit: 00000000000000010000000111