RV32C 采用了一种新颖的方法:每条短指令必须和一条标准的 32 位 RISC-V 指令一一 对应。此外,16 位指令只对汇编器和链接器可见,并且是否以短指令取代对应的宽指令由 它们决定。编译器编写者和汇编语言程序员可以幸福地忽略 RV32C 指令及其格式,他们能感知到的则是最后的程序大小小于大多数其它 ISA 的程序。
压缩指令集按功能可以分为以下类型:
• 加减法指令
• 逻辑操作指令
• 移位指令
• 数据传输指令
• 分支跳转指令
• 立即数偏移存取指令
移位指令(c.slli、srli、srai)的立即数域和c.addi4spn 是零扩展的,其它指令采用符号位扩展。
图 7.6到7.8列出了解码器可以转换的格式和操作码。
RV32C中没有字节或半指令,因为其他对代码长度的影响更大。