Page 332 - 《软件学报》2021年第12期
P. 332

3996                                Journal of Software  软件学报 Vol.32, No.12, December 2021


























                                     Fig.2    Register status of RV32I/RV64I [11]
                              图 2   RISC-V 整数指令集(RV32I/RV64I)的寄存器状态       [11]

                          Table 2    The meaning of each x register in standard calling convention
                                    表 2   标准调用约定下的各 x 寄存器含义
                        寄存器名           ABI 助记符           含义             是否跨调用保留
                           x0            zero             0               −(不可变)
                           x1             ra            返回地址                 否
                           x2             sp             栈指针                 是
                           x3             gp            全局指针              −(不允许)
                           x4             tp            线程指针              −(不允许)
                          x5~x7          t0~t2         临时寄存器                 否
                          x8~x9          s0~s1        被调用者保存                 是
                         x10~x17         a0~a7         参数寄存器                 否
                         x18~x27        s2~s11        被调用者保存                 是
                         x28~x31         t3~t6         临时寄存器                 否
             RV32I 有 4 种基础指令格式:R/I/S/U,指令集中的任何指令都可以根据操作数的数量、种类、规模以及
         自身的功能需求,选用其中一种格式.所有这些指令格式都是 32 位固定长度,并且必须在内存中对齐到 4 字节
         的边界.图 3 显示了这 4 种基础的指令格式.











                                  Fig.3    Four basic instruction formats of RV32I [11]
                                      图 3   RV32I 的 4 种基础指令格式    [11]

             RV64I 采用与 RV32I 相同的指令格式,只是将整数寄存器和所支持的用户地址空间扩展到了 64 位,增加了
         一些操作低 32 位的“*W”指令.例如,RV32I 中的 ADDI 指令可以将符号扩展的 12 位立即数加到寄存器中,并将
   327   328   329   330   331   332   333   334   335   336   337