SLTU的指令格式为SLTU rd,rs1,rs2。x[rd] = x[rs1] < x[rs2] 如图4所示,SLTU指令的funct7为000_0000,funct3为011。无符号比较rs1和rs2,如果rs1 < rs2,rd置1,否则置0。 注意,在SLTU rd,x0,rs2中如果rs2不等于0,则rd被置为1,否则,将rd置为0。对应的伪指令为SNEZ rd,rs2 指令示例: SLT...
SLTU的指令格式为SLTU rd,rs1,rs2。x[rd] = x[rs1] < x[rs2] 如图4所示,SLTU指令的funct7为000_0000,funct3为011。无符号比较rs1和rs2,如果rs1 < rs2,rd置1,否则置0。 注意,在SLTU rd,x0,rs2中如果rs2不等于0,则rd被置为1,否则,将rd置为0。对应的伪指令为SNEZ rd,rs2 指令示例: SLT...
对应的伪指令为SNEZ rd,rs2 指令示例: SLTU x14,x12,x13 将x12和x13寄存器中的数当作无符号数进行比较,如果x12寄存器中的数小于x13寄存器中的数,将x14寄存器置为1,否则置为0。 图4 SLTU机器编码格式 [2] 1.4. AND AND的指令格式为AND rd,rs1,rs2。x[rd] = x[rs1] & x[rs2] 如图5所示,AND...
(SLTU rd, x0, rs2 可用于实现伪指令SNEZ rd, rs ,即如果rs2不等于0则将rd设为1,否则设为0) AND、OR、XOR都是按位逻辑操作。 SLL、SRL和SRA分别对寄存器rs1执行逻辑左移、逻辑右移和算术右移,移位量来自寄存器rs2中的最低5bits。 NOP 指令 NOP指令不会改变任何可见的体系结构状态,除了增加pc,以及...
1 RISC-V指令命名 以slt指令为例,如下示意图:大括号{ }内列举了每组指令的所有变体,这些变体通过带下滑线的字母(单独的下划线_表示空字段),从左到右连接带下滑线的字母即可组成完整的指令集,比如slt意思是set less than,相当于是一种缩写,完整语句方便我们快速清晰的理解指令的作用。
snez rd, rs sltu rd, x0, rs 不等于0时置位 sltz rd, rs slt rd, rs, x0 小于0时置位 sgtz rd, rs slt rd, x0, rs 大于0时置位 beqz rs, offset beq rs, x0, offset 等于0时跳转 bnez rs, offset bne rs, x0, offset 不等于0时跳转 blez rs, offset bge x0, rs, off...
(x2)68 4 RISCV Pseudo-Instructions69 4.1.1 nop69 4.1.2 neg rd, rs269 4.1.3 negw rd, rs269 4.1.4 snez rd, rs269 4.1.5 sltz rd, rs169 4.1.6 sgtz rd, rs270 4.1.7 beqz rs1, offset70 4.1.8 bnez rs1, offset70 4.1.9 blez rs2, offset70 4.1.10 bgez rs1, offset70 ...
snez t1,t2 设置不等于零:if t2 != 0 then set t1 to 1 else 0 Set Not Equal to Zero : if t2 != 0 then set t1 to 1 else 0 snez t1,t2 sw t1,(t2) Store Word : 将 t1 的内容存入有效内存字地址 Store Word : Store t1 contents into effective memory word address sw t1,(t2) sw...
第二行位移指令srli,将a5的值按位向右移动2位,结果存储在a0; 第三行指令srl,也对a5按位进行了整体右移,左移的位数由a3的值指明。 对于无符号数来说,右移相当于原数除以$2^N$,N代表右移动位数,在右移时原数随着移动左侧位补零,右侧位会被丢弃。
S型指令 R型指令 B型指令 J型指令 RV32I基本指令集 说明:为了展示指令之间的层次结构,在这里使用了多级无序列表,每个指令后的括号即该指令的英文全称,方便理解相似指令在不同环境下的运用,而大写部分则是指令缩写所提取的字母,另外划有删除线代表本身不存在但具有分支应用的指令;后续也可能会画一个树表作为补充。