假设跳转指令位于内存地址0x20CE88C0。这个跳转可以转移控制的最高(即最大)32位内存地址是什么?我知道最高地址可以是2^26,但我看到其他人说的是2^28。我不明白这有什么区别。为什么是2^28?
发布于 2021-06-15 09:27:46
J-Type指令非常简单:
opcode target
6 26 // field size, as bit counttarget := instruction[25:0]
JumpAddr := { PC+4[31:28], target, 2'b0 }
PC := JumpAddr这是MIPS Green Sheet / Quick Reference数据中的描述。虽然这是一个有点有趣的符号(某种RTL),但它通过告诉我们处理器如何解码J型指令,告诉我们需要了解跳转指令的可能范围。
这就是说,当前PC+4提供新PC地址的高4位。然后地址字段(有时称为immediate,也称为target )提供下一个26位,然后00是下一个PC的下2位,总共32位值。
因此,有了这些信息,您可以计算或形成从给定PC. 可以到达的最大可能地址。取PC+4的前4位,然后(串/连接到这4位上) 26位的最大值-它的26位无符号,因此26个1都是最大值-然后连接00 (两个零位),并从给定的PC开始从j/jal获得最大可寻址位置的确切地址的32位值。
https://stackoverflow.com/questions/67978553
复制相似问题