[英]Does 64-bit RISC-V RV64 allow access to the low 32 bits of registers?
[英]RV64 with RV32 instructions support
在浏览 RISC-V 2.1 版规范时,我发现在第 4 章中提到 RV64 应该与 RV32 一起阅读。 基于此,以下是我的疑问。
RISC-V 64 位是否会运行 32 位操作码?
在规范中,第 9 章第 54 页指令列出了操作码,这些操作码是否也属于 64 位。
在规范中,第 9 章第 55 页指令列出了操作码,说 RV64 是除 RV32 之外的,所以在 RV64 位实现中我还需要支持 RV32I 吗?
RV64I 是 RV32I 的超集,但SLLI
、 SRLI
和SRAI
。 对于这些指令,shamt 字段增加了一位。 在 RV32I 中,所有指令都对 32 位数据进行操作。 相同的指令将在 RV64I 上对 64 位数据进行操作。 RV64I 中包含对低 32 位附加指令的操作。
为 RV32I 编译的程序可以在 RV64I 机器上运行。 它将运行而不会产生非法指令异常,但结果很可能是错误的。 因此,为 RV32I 编译的程序只能在 RV32I 机器上正常运行,而为 RV64I 编译的程序只能在 RV64I 机器上运行。
对于包含混合二进制文件的程序,如引导加载程序、内核或固件, misa
寄存器在高位对寄存器宽度进行编码,因此可以通过跳转和左移跳转到正确的二进制文件。 请参阅特权规范第 15 页
一个实现可以同时支持 RV32I 和 RV64I,但这需要系统软件的支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.