答案 0 :(得分:4)
RISC-V中的最小指令是2个字节。没有有效的RISC-V指令从奇数指令开始,因此没有任何目的允许最低有效位为1.
答案 1 :(得分:3)
在RISC-V中,所有指令必须与4个字节对齐,但通过允许16,48或64位指令大小的扩展,允许指令与2个字节对齐。如说明书(V 2.1,第5页)中所述:
基本RISC-V ISA具有固定长度的32位指令,必须在32位上自然对齐 边界。但是,标准RISC-V编码方案旨在支持ISA扩展 使用可变长度指令,其中每条指令可以是任意数量的16位指令 长度和宗地的地块自然地在16位边界上对齐。
因此JALR目标地址中的最低有效位必须始终为零。 RISC-V的开发人员希望重用现有格式而不是创建新格式,其中立即数乘以2。如第p节所述。规范中的16:
请注意,JALR指令不会将12位立即数视为2个字节的倍数, 与条件分支指令不同。这避免了硬件中的一种直接格式。
这不是一个真正的缺点,因为实现可以使用指针的最低有效位。一个例子是区分函数指针和数据指针,这对于解释器来说很方便。在说明书中也提到了p。 16:
[...]允许使用低位的函数指针进行存储 辅助信息。
答案 2 :(得分:2)
我不了解RISC-V架构,但我的猜测如下:
立即寻址允许您通常访问任何存储器地址,例如奇数存储器地址的单个字节(最低有效地址位= 1)
但是,总是对偶数地址进行跳转,以便可以在单个周期中获取下一条指令(而不是在两个周期中,因为跳转地址 - 以及后续指令 - 的情况最少重要地址位= 1)。
因此,RISC-V架构显然强制仅从偶数地址获取指令。