X86_64汇编语言:标志位和条件跳转指令

注意
本文最后更新于 2023-05-17,文中内容可能已过时。

这几个东西,当初学汇编的时候没咋认真看,今天整理一下。

在 RE 的 VM 里或者 PWN 的 Fix 里用到都蛮多的。

标志位

  1. 进位标志 CF (Carry Flag)
  2. 零标志 ZF (Zero Flag)
  3. 符号标志 SF (Sign Flag)
  4. 奇偶标志 PF(Parity Flag)
  5. 溢出标志 OF (Overflow Flag)
  6. 辅助进位标志 AF(Auxiliary Flag)
  7. 方向标志 DF(Direction Flag)
  8. 中断允许标志 IF(Interrupt Flag)
  9. 陷阱标志 TF(Trap Flag)

条件跳转指令表

指令助记符检查标记位说明比较类型
JZZF == 1等于 0 则跳转无符号比较
JEZF == 1相等则跳转无符号比较
JNZZF == 0不等于 0 则跳转无符号比较
JNEZF == 0不相等则跳转无符号比较
JSSF == 1符号为负则跳转有符号比较
JNSSF == 0符号为正则跳转有符号比较
JP/JPEPF == 1“1”的个数为偶数则跳转无符号比较
JNP/JPOPF == 0“1”的个数为奇数则跳转无符号比较
JOOF == 1溢出则跳转有符号比较
JNOOF == 0无溢出则跳转有符号比较
JCCF == 1进位则跳转无符号比较
JBCF == 1小于则跳转无符号比较
JNAECF == 1不大于则跳转无符号比较
JNBCF == 0不小于则跳转无符号比较
JAECF == 0大于等于则跳转无符号比较
JBECF == 1 or ZF == 1小于等于则跳转无符号比较
JNACF == 1 or ZF == 1不大于则跳转无符号比较
JNBECF == 0 or ZF == 0不小于则跳转无符号比较
JACF == 0 or ZF == 0大于则跳转无符号比较
JLSF != OF小于则跳转有符号比较
JNGESF != OF不大于则跳转有符号比较
JNLSF == OF不小于则跳转有符号比较
JGESF == OF大于等于则跳转有符号比较
JLEZF != OF or ZF == 1小于等于则跳转有符号比较
JNGZF != OF or ZF == 1不小于则跳转有符号比较
JNLESF == OF and ZF == 0不小于等于则跳转有符号比较
JGSF == OF and ZF == 0大于则跳转有符号比较
0%