RV64 - 64位地址指令
本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。
1 RV64G介绍
RV32I + RV32M + RV32A + RV32F + RV32D = RV32G
,那么RV32G 指令的64 位版本 – RV64G 指令,其示意图,如下(图9.1 至9.4)所示:
灰色部分是将操作扩展到64 位寄存器的旧RV32指令,而深(红)色部分是RV64的新指令。
由图可见,将RISC-V 扩展为64 位只需加入少数指令:32 位指令的字(word)、双字(doubleword)和长字(long)版本,并将包括PC 的所有寄存器扩展为64 位。因此,RV64I 中sub指令的操作数是两个64 位数,而非RV32I 中的32 位数。RV64 和RV32 很接近,但实际上是不同的ISA:RV64 增加少量指令,基础指令的行为也稍有不同。
尽管RV64I 的地址和默认数据大小均为64 位,32 位字仍是程序中的有效数据类型。因此,像RV32I 需要支持字节和半字操作一样,RV64I 也需要支持字操作。
2 RV64G增加的指令
RV64I增加的指令,如下所示:
RV64M增加的指令,如下所示:
RV64A增加的指令,如下所示:
RV64F增加的指令,如下所示:
RV64D增加的指令,如下所示:
本文中的这些指令较多,具体指令详细含义,见RISC-V指令手册,不再赘述。