MIPS是什么十六进制字编码分支指令?

时间:2016-04-01 01:56:15

标签: assembly branch mips

据我所知,该指令中的分支是第一行,可以表示为十六进制值" 10b8ffff"。但显然这不是正确的答案。

  • 分支指令的编码是否也依赖于MIPS代码的其余部分?

  • 我只是在翻译第一行时得到错误的十六进制值?

以下是MIPS代码:

    beq  $5, $24, L1
    slli $8, $7, 2
    add  $8, $8, $15
    lw   $8, 0($8)
    sw   $8, 0($23)
 L1: addi $7, $7, 1

1 个答案:

答案 0 :(得分:2)

第一部分0x10b8似乎是正确的。我相信问题是你如何到达0xFFFF的偏移量。请从指令参考中注意这一点,beq $s, $t, offset

  

如果$ s == $ t advance_pc(offset<< 2));否则advance_pc(4);

你说L1只有5个指令,偏移量为0xFFFF,然后左移两次以确定正确的位置。由于这看起来"任务",我将留给你根据指令大小找出正确的值。