arm

  • 使用专门的跳转指令:B BL BX
    • B offset 跳转
    • BL offset 跳转前将下一条指令地址保存在 LR(link reg / R30)通过 MOV PC,LR 返回
    • BX reg 跳转到寄存器中的地址,如果最低位为 1 则进入 Thumb 状态
    • BLX label 保存,转换状态后跳转
    • BLX reg 通过寄存器判断是否转换状态,保存后跳转
  • 向 PC 寄存器直接写入值,RET 是 MOV PC,LR 的语法糖

x86

  • jmp short 8 位偏移
  • jmp near 16 位偏移
  • jmp far ptr 段地址 + 偏移地址
  • jmp 寄存器
  • jmp (d)word ptr 内存地址
  • call near ptr = push ip ; jmp near ptr 标号
  • call far ptr = push cs; push ip; jmp far ptr 标号
  • call reg = push ip; jmp reg(16)
  • call (d)word ptr mem = (push cs); push ip, jmp (d)word ptr mem
  • ret = pop ip
  • retf = pop ip; pop cs
  • loop label 检测 cx 不为零的时候跳转并递减 cx
  • jcxz label 当 cx 为 0 的时候跳转到标号