在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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...