引用RV32I,我们将分支和跳转指令的LSB硬连接到零,以扩展指令立即字段中的地址范围,因为我们有字对齐存储器,所以LSB中必须有两个零,现在我的问题是什么如果我们硬连线跳转和分支指令的立即数中的最后两位,那么我们的地址范围为 x4,而不是在立即数生成部分中的符号扩展后移位 32 位。
最佳答案
它会起作用,事实上,RISC V 的前身 MIPS 就做到了这一点。
但是,RISC V 的设计允许采用紧凑指令格式 (RVC),从而支持 16 位指令。事实上,RISC V 允许指令扩展,其指令可以是 16 位的倍数(16、32、48、64、80、96,...)。
为了让工具能够跨仅支持 32 位指令和支持 16 位倍数指令的 RISC V 风格工作,设计人员选择仅将一位硬连接到零,而不是 2 位.
这意味着,例如,一个库可能符合 RV32I,并且仍然可以在具有 RVC 扩展的硬件上正常工作,并在同一进程(和同一线程/调用链)中混合使用 RVC 和该库。
关于assembly - RISC 32I 跳转和分支 LSB 硬连线至零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57941222/