这几个东西,当初学汇编的时候没咋认真看,今天整理一下。
在 RE 的 VM 里或者 PWN 的 Fix 里用到都蛮多的。
标志位
- 进位标志 CF (Carry Flag)
 - 零标志 ZF (Zero Flag)
 - 符号标志 SF (Sign Flag)
 - 奇偶标志 PF(Parity Flag)
 - 溢出标志 OF (Overflow Flag)
 - 辅助进位标志 AF(Auxiliary Flag)
 - 方向标志 DF(Direction Flag)
 - 中断允许标志 IF(Interrupt Flag)
 - 陷阱标志 TF(Trap Flag)
 
条件跳转指令表
| 指令助记符 | 检查标记位 | 说明 | 比较类型 | 
|---|
| JZ | ZF == 1 | 等于 0 则跳转 | 无符号比较 | 
| JE | ZF == 1 | 相等则跳转 | 无符号比较 | 
| JNZ | ZF == 0 | 不等于 0 则跳转 | 无符号比较 | 
| JNE | ZF == 0 | 不相等则跳转 | 无符号比较 | 
| JS | SF == 1 | 符号为负则跳转 | 有符号比较 | 
| JNS | SF == 0 | 符号为正则跳转 | 有符号比较 | 
| JP/JPE | PF == 1 | “1”的个数为偶数则跳转 | 无符号比较 | 
| JNP/JPO | PF == 0 | “1”的个数为奇数则跳转 | 无符号比较 | 
| JO | OF == 1 | 溢出则跳转 | 有符号比较 | 
| JNO | OF == 0 | 无溢出则跳转 | 有符号比较 | 
| JC | CF == 1 | 进位则跳转 | 无符号比较 | 
| JB | CF == 1 | 小于则跳转 | 无符号比较 | 
| JNAE | CF == 1 | 不大于则跳转 | 无符号比较 | 
| JNB | CF == 0 | 不小于则跳转 | 无符号比较 | 
| JAE | CF == 0 | 大于等于则跳转 | 无符号比较 | 
| JBE | CF == 1 or ZF == 1 | 小于等于则跳转 | 无符号比较 | 
| JNA | CF == 1 or ZF == 1 | 不大于则跳转 | 无符号比较 | 
| JNBE | CF == 0 or ZF == 0 | 不小于则跳转 | 无符号比较 | 
| JA | CF == 0 or ZF == 0 | 大于则跳转 | 无符号比较 | 
| JL | SF != OF | 小于则跳转 | 有符号比较 | 
| JNGE | SF != OF | 不大于则跳转 | 有符号比较 | 
| JNL | SF == OF | 不小于则跳转 | 有符号比较 | 
| JGE | SF == OF | 大于等于则跳转 | 有符号比较 | 
| JLE | ZF != OF or ZF == 1 | 小于等于则跳转 | 有符号比较 | 
| JNG | ZF != OF or ZF == 1 | 不小于则跳转 | 有符号比较 | 
| JNLE | SF == OF and ZF == 0 | 不小于等于则跳转 | 有符号比较 | 
| JG | SF == OF and ZF == 0 | 大于则跳转 | 有符号比较 |