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, 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...
RV32I/RV64I指令: RV64I指令: 2.2 算术指令 指令示意: RV32I/RV64I指令: 注意:RISC-V中没有SUBI指令,RVI的立即数总是进行符号扩展,因此它们也能表示负数,SUBI可以由ADDI来实现(减一个数等于加一个负数),故RVI中无须包含立即数版本的subi指令。 RV64I指令: 伪指令: lui与auipc指令: 注意:有两条指令...
(SLTU rd, x0, rs2 可用于实现伪指令SNEZ rd, rs ,即如果rs2不等于0则将rd设为1,否则设为0) AND、OR、XOR都是按位逻辑操作。 SLL、SRL和SRA分别对寄存器rs1执行逻辑左移、逻辑右移和算术右移,移位量来自寄存器rs2中的最低5bits。 NOP 指令 NOP指令不会改变任何可见的体系结构状态,除了增加pc,以及任...
(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...
注意,SLTU rd,x0,rs2 ,如果rs2不等于0 (译者注:在RISC-V 中,x0寄存器永远是0 ),则把1写 入rd ,否则将0写入rd (汇编语言伪指令SNEZ rd,rs )。AND 、OR、XOR执行按位逻辑操作。 SLL、SRL、SRA分别执行逻辑左移、逻辑右移、算术右移,被移位的操作数是寄存器rs1 ,移 位次数是寄存器rs2 的低5位。
S型指令 R型指令 B型指令 J型指令 RV32I基本指令集 说明:为了展示指令之间的层次结构,在这里使用了多级无序列表,每个指令后的括号即该指令的英文全称,方便理解相似指令在不同环境下的运用,而大写部分则是指令缩写所提取的字母,另外划有删除线代表本身不存在但具有分支应用的指令;后续也可能会画一个树表作为补充。
第二行位移指令srli,将a5的值按位向右移动2位,结果存储在a0; 第三行指令srl,也对a5按位进行了整体右移,左移的位数由a3的值指明。 对于无符号数来说,右移相当于原数除以$2^N$,N代表右移动位数,在右移时原数随着移动左侧位补零,右侧位会被丢弃。
有了前两节对于RISC-V汇编、寄存器、汇编语法等的认识,本节开始介绍RISC-V指令集和伪指令。 前面说了RISC-V的模块化特点,是以RV32I为作为ISA的核心模块,其他都是要基于此为基础,可以这样认为:RISC-V ISA = 基本整数指令集+多个可选扩展指令集;另外RISC-V的ISA spec上是从指令类型和指令格式开始介绍指令的;但...