2010-12-08 75 views
0
beq $s1, $s2, endif(assume endif is 22 instructions after the branch) 

答案一BEQ MIPS指令以下问题是显示二进制

000100 10001 10010 0000000000001111 

有人能解释什么是“假设ENDIF是分支后22个指令”是指?

有用数据:

操作码BEQ为000100
$ s1为10010
$ S2是10001

我只是需要帮助理解我们如何最后部分,这是ENDIF。

回答

2

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

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

除此之外,这些值是用二进制补码编码的,所以当你向前跳过时,你只需要读取二进制数字,如果它是反向的,你将不得不应用二进制补码来“看” 。