我发现了这个考试问题,我必须beq
说明指令是如何用机器代码编码的。
这是代码:
loop: addu $8, $9, $10
addiu $8, $8, 0x00FF7A01
beq $8, $0, loop
虽然我的第一个问题是0x1100FFFD
正确的答案是0x1100FFFB
。我相信这是因为0x00FF7A01
大于 16 位并且addiu $8, $8, 0x00FF7A01
必须在不止一条指令中“反编译”。
所以这是我的问题。
Q1 - 在什么中addiu $8, $8, 0x00FF7A01
解构?
Q2 - 如果beq
指令上的立即数字段大于 16 位怎么办?我必须使用jumps
吗?