微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

最高内存传输

如何解决最高内存传输

假设一条跳转指令位于内存地址 0x20CE88C0。此跳转可以将控制转移到的最高(即最大)32 位内存地址是多少? 我知道最高地址可以是 2^26,但我看到其他人说 2^28。我不明白其中的区别。为什么是 2^28?

解决方法

J-Type 指令非常简单:

opcode  target
   6      26              // field size,as bit count

target := 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 位宽 - 提供接下来的 26 位,然后 00 是接下来的 2 位,总共 32 位值下一台电脑。

因此,利用这些信息,您可以计算或形成从给定的 PC 可以到达的最大可能地址。取 PC+4 的前 4 位,然后(字符串/连接到这 4 位)一个 26 位最大值——它的 26 位无符号,所以 26 个全 1 是最大值——然后连接一个 00(两个零位)并从给定的 j 开始,从 jal/PC 生成最大可寻址位置的确切地址的 32 位值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。