无条件跳转指令
jal rd, offset:跳转到 PC + offset,并将返回地址存储到 rd。
jalr rd, offset(rs1):跳转到 rs1 + offset,并将返回地址存储到 rd。
条件跳转指令
beq rs1, rs2, offset:如果 rs1 == rs2,跳转到 PC + offset。
bne rs1, rs2, offset:如果 rs1 != rs2,跳转到 PC + offset。
blt rs1, rs2, offset:如果 rs1 < rs2(有符号比较),跳转到 PC + offset。
bge rs1, rs2, offset:如果 rs1 >= rs2(有符号比较),跳转到 PC + offset。
bltu rs1, rs2, offset:如果 rs1 < rs2(无符号比较),跳转到 PC + offset。
bgeu rs1, rs2, offset:如果 rs1 >= rs2(无符号比较),跳转到 PC + offset。
无条件跳转伪指令
j label:无条件跳转到 label。
对应基本指令:jal x0, label
jr rs:无条件跳转到寄存器 rs 的地址。
对应基本指令:jalr x0, 0(rs)
函数调用和返回伪指令
call label:调用子程序 label。(不太严谨)
32 位对应基本指令:
auipc ra, %pcrel_hi(label)
jalr ra, %pcrel_lo(label)(ra)
ret:从子程序返回。
对应基本指令:jalr x0, 0(ra)
条件跳转伪指令
beqz rs, label:如果 rs == 0,跳转到 label。
对应基本指令:beq rs, x0, label
bnez rs, label:如果 rs != 0,跳转到 label。
对应基本指令:bne rs, x0, label
blez rs, label:如果 rs <= 0,跳转到 label。
对应基本指令:bge x0, rs, label
bgez rs, label:如果 rs >= 0,跳转到 label。
对应基本指令:bge rs, x0, label
bltz rs, label:如果 rs < 0,跳转到 label。
对应基本指令:blt rs, x0, label
bgtz rs, label:如果 rs > 0,跳转到 label。
对应基本指令:blt x0, rs, label
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。