RISC-V 指令集中有四条比较指令,这四条又分为有无符号立即数版本和有无符号寄存器版本,分别是slti、sltiu、slt、sltu。 slti、sltiu 指令的形式如下所示: sltird,rs1,imm#slti 有符号立即数比较指令#rd 目标寄存器#rs1 源寄存器1(有符号数据)#imm 有符号立即数(-2048~2047)sltiurd,rs1,imm#sltiu 无符...
RV32I/RV64I指令: RV64I指令: 2.4 逻辑指令 指令示意: RV32I/RV64I指令: 伪指令: 2.5 比较-置位指令 比较-置位指令指令本身并不直接涉及控制流的改变,但它经常配合分支指令使用。 指令示意: RV32I/RV64I指令: 伪指令: 2.6 分支指令 指令示意: RV32I/RV64I指令: 伪指令: 2.7 跳转指令 指令示意: ...
1.1. ADDI :ADDI指令格式为ADDI rd,rs1,immediate。x[rd] = x[rs1] + sext(imm) 1.2. SLT:SLTI指令格式为SLTI rd,rs1,immediate。x[rd] = x[rs1] < sext(immediate) 1.3. SLTIU :SLTIU指令格式为SLTIU rd,rs1,immediate。x[rd]= x[rs1] < sext(immediate) 1.4. ANDI :ANDI指令格式为ANDI...
1. 比较大小指令只能比较寄存器中的值,不能直接比较内存中的数据。如果要比较内存中的数据,需要先将其加载到寄存器中。 2. 比较大小指令的操作数必须为整数类型,不能直接比较浮点数类型的数据。 3. 比较无符号整数时,应使用sltu和sltiu指令,而不是slt和slti指令。 4. 在分支跳转时,应根据比较结果设置的标志位...
R:寄存器-寄存器指令 I:立即数-寄存器指令(里面的立即数要拓展成32bit才能继续运算):一般用于访存load的指令 ADDI:寄存器+立即数 SLTI:寄存器指和立即数比较,小于立即数把1放入rd SLTIU:与SLTI相同,只不过是无符号数比较 SLLI:左移,移动位数由立即数指定,shift left logic immediate ...
input sltx_op, //当指令是slti、slt、blt、bge、beq、bne时 input sltux_op, //当指令是sltiu、sltu时 output [31:0] value_out, output sign_flag ); //addi、add指令是有符号数的相加,sub、slti、slt是有符号数的相减,高位符号位拓展
{std::make_tuple(0x13, 0x3), executeSltiu}, {std::make_tuple(0x13, 0x4), executeXori}, {std::make_tuple(0x13, 0x5), executefunct70X5}, {std::make_tuple(0x13, 0x6), executeOri}, {std::make_tuple(0x13, 0x7), executeAndi}, {std::make_tuple(0x33, 0x0), executeAdd},...
程序可以根据比较结果生成布尔值。slt和sltu,也有立即数版本,slti, sltiu。(带u后缀的为无符号版本)...
首先根据指令命名方式判断左侧的含义,从上到下依次为,立即数与源寄存器相加addi、寄存器小于立即数slti、寄存器小于立即数无符号版本sltiu、立即数与源寄存器异或xori、立即数与源寄存器按位或ori、立即数与源寄存器按位与andi、寄存器根据立即数逻辑右移slli、寄存器根据立即数逻辑右移srli、寄存器根据立即数算术右移srai...