MIPS 什么十六进制字编码分支指令?
MIPS what hex word encodes branch instruction?
根据我的理解,这条指令中的分支是第一行,可以表示为十六进制值“10b8ffff”。但是显然这不是正确的答案。
- 分支指令的编码是否也依赖于其余的 MIPS 代码?
或
- 我在翻译第一行时是否只是得到了不正确的十六进制值?
这是 MIPS 代码:
beq , , L1
slli , , 2
add , ,
lw , 0()
sw , 0()
L1: addi , , 1
第一部分 0x10b8
似乎是正确的。我认为问题在于您如何到达 0xFFFF 的偏移量。从指令参考中注意这一点,其中 beq $s, $t, offset
:
if $s == $t advance_pc (offset << 2)); else advance_pc (4);
你是说 L1
,距离只有 5 个指令,偏移量为 0xFFFF,然后将左移两次以确定正确的位置。由于这看起来 "assignmentish",我将留给您根据指令大小找出正确的值。
根据我的理解,这条指令中的分支是第一行,可以表示为十六进制值“10b8ffff”。但是显然这不是正确的答案。
- 分支指令的编码是否也依赖于其余的 MIPS 代码?
或
- 我在翻译第一行时是否只是得到了不正确的十六进制值?
这是 MIPS 代码:
beq , , L1
slli , , 2
add , ,
lw , 0()
sw , 0()
L1: addi , , 1
第一部分 0x10b8
似乎是正确的。我认为问题在于您如何到达 0xFFFF 的偏移量。从指令参考中注意这一点,其中 beq $s, $t, offset
:
if $s == $t advance_pc (offset << 2)); else advance_pc (4);
你是说 L1
,距离只有 5 个指令,偏移量为 0xFFFF,然后将左移两次以确定正确的位置。由于这看起来 "assignmentish",我将留给您根据指令大小找出正确的值。