无条件跳转指令

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


putao
8 声望3 粉丝

推动世界向前发展,改善民生。