这几个东西,当初学汇编的时候没咋认真看,今天整理一下。
在 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 | 大于则跳转 | 有符号比较 |