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

在PC相对寻址模式下可以跳过的最大字数

如何解决在PC相对寻址模式下可以跳过的最大字数

我正在阅读David Patterson和John Hennesy所著的《计算机组织与设计》一书。在本书所涉及的RISC-V体系结构集中,有两种与跳转相关的指令格式-SB型和UJ型。前者使用12位常量表示从当前指令跳转的偏移量(以字节为单位),而后者使用20位常量表示相同的指令。然后作者说了以下话:

由于程序计数器(PC)包含当前指令的地址,因此我们可以在当前指令的+=2^10字内跳转 SB 类型),或跳转 UJ ),如果我们使用+= 2^18作为要添加到该地址的寄存器,则在当前指令的PC字内。

我不明白他们如何获得这些2^102^18。由于指令使用的常数是二进制补码,因此在第一种情况下可以表示从-2^112^11 - 1,在第二种情况下可以表示从-2^192^19 - 1的值。由于这些常量表示字节,但是我们想知道可以跳过多少个字,因此我们需要将字节的最大值除以四,因此在第一种情况下,我们可以得到的最大值为2^11 / 2^2 = 2^9个字, 2^17在第二个。

有人可以看看我上面的计算,并指出我所缺少的以及我的计算和思想出了什么问题吗?

更新: 可能是我对作者的理解不正确。可能是指下限(-2^10)和上限(+2^10)吗?因此,它们意味着我们永远不能从当前指令跳到2^10之外吗?

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