例如,如果给出j标签,标签位于0x004000b0
,我将如何将其转换为机器代码?
x02
的操作码,目标地址为26位。我试图模拟并将机器代码设为0810002c
,但我无法手动计算。
答案 0 :(得分:1)
来自MIPS instruction reference,第129页:
这是PC区域分支(不是PC相关的);有效目标地址位于“当前”256 MB对齐区域中。 目标地址的低28位是向左移位2位的instr_index字段。剩下的高位是对应的 延迟槽中指令地址的位(不是分支本身)。
因此,如果你跳到0x4000B0,你将它向右移两位,给你0x10002C。这构成了跳转指令的低26位,高6位为0b000010,整体操作码为0x810002C。