以二进制形式显示BEQ MIPS指令

时间:2010-12-08 22:29:16

标签: mips

beq   $s1, $s2, endif(assume endif is 22 instructions after the branch)

以下问题的答案是

000100 10001 10010 0000000000001111

有人可以解释一下“假设endif是分支后22条指令”的意思吗?

有用的数据:

beq的操作码是000100
$ s1是10010
$ s2是10001

我只需要帮助了解我们如何获得最后一部分,即endif。

1 个答案:

答案 0 :(得分:2)

你想跳到beq之后的第22条指令,即跳过接下来的21条指令。 现在,这将是10101二进制,即21十进制(要跳过的指令数)。 这种跳转的指令将是0001 0010 0011 0010 0000 0000 0001 0101而不是你所写的(你的分支偏移是错误的)。

你必须考虑到在MIPS中每个指令的大小相同(4个字节),因此分支计算要跳转的单词数(每个4个字节)。

除了注释之外,这些值以二进制补码编码,因此当你向前跳过时,你只需要读取二进制数,如果它是向后的,你将不得不应用两个补码来“看”它是否会跳转。