我的考试即将开始,我完全坚持这个问题(见下文); 即使看模型答案也无济于事.我已经尝试阅读主题的主要文本,但仍然不知道如何做到这一点.如果有人能够逐步解决这个问题,我将非常感激.
"假设下面MIPS片段的第一条指令位于内存地址0x10001000.其他值是什么,并在bne和j指令中退出?"
Run Code Online (Sandbox Code Playgroud)1 0x10001000: addi $s0, $0, 5 2 0x10001004: sub $s2, $0, $s1 3 0x10001008: beq $s0, $s2, else 4 0x1000100C: add $s0, $0, $0 5 0x10001010: add $t0, $s2, $s0 6 0x10001014: j exit 7 0x10001018: else: addi $s1, $s0, -1 8 0x1000101C: exit:型号答案:
Run Code Online (Sandbox Code Playgroud)Else: 0000000000000011 Exit: 00000000000000010000000111
我还包含了原始问题图像的链接. http://i.imgur.com/NgHpZXs.png
首先,我们将处理分支机构.分支是一个I-Type指令,因此分支目标以16位编码.找出分支的立即字段的最简单方法是计算分支指令与其目标之间的指令数.在这种情况下,else标签是在4指令之后的指令beq,但是在指令获取阶段期间PC递增4,因此实际的立即字段实际上是3.当然在二进制中,这与样本匹配0000000000000011.
接下来,跳转是J-Type使用24其地址的第一位对跳转目标进行编码的指令.但是,因为跳转目标必须是字对齐的,所以最后两位总是0使它们不必要.因此,j指令的跳转字段与示例答案匹配:0x1000101C >> 2 = 0x4000407 = 00000000000000010000000111
| 归档时间: |
|
| 查看次数: |
2881 次 |
| 最近记录: |