lui什么意思?
LUI(load upper immediate),高位立即数加载指令格式为 LUI rd,immediate。x[rd] = sext(immediate[31:12] << 12)
其机器码所示,LUI的opcode为011_0111。该指令是把U-immediate写入rd的高20位,rd的低12位补零。
通常来说,每条指令的位宽是有一定的限制的,软件层面可以叫做encoding 码。主要包含,指令的指令操作码,指令操作数,寄存器等信息。假设:lui a0,4112,其是将当前操作数4112存放在a0寄存器的前20位中,此时a0寄存器中存放的是 0000 0001 0000 0001 0000 0000 0000 0000。通常某些指令会对常量进行操作。当当前操作的常量超过这条指令能够处理的立即数范围时,就会利用lui 指令,完成扩大立即数范围的限制。
SRAI(shift right arithmetic immediate),立即数算术右移指令格式为 SRAI rd,rs1,shamt。x[rd] = x[rs1] ? shamt
SRAI的OP-IMM为001_0011,funct3为101,IMM[10]为1。该指令将rs1中的值右移shamt[4:0]位,rs1的高位由原rs1[31]填充(符号位填充),结果写入rd中。