目录 Table of Contents
比较指令与测试指令
比较 (Compare) 指令
cmpl Src2, Src1
; cmpq Src2, Src1
两个数相比较, 这个比较实际上是做了一个减法 : cmpl b, a
类似于计算 a - b, 但是它不改变目的操作数.
CF set (if carry out from most significant bit)
- 可用于无符号数的比较
如果 a == b, ZF = 1
ZF set (if a == 0)
如果 (a - b) < 0, SF = 1, 这实际上把它作为带符号数来处理了
SF set (if (a-b)<0)
如果把它作为带符号数来处理, 那么一个正数减去负数, 或者说负数减去正数, 有可能产生溢出. 那么这种情况下呢, 就把 OF 位设置为 1.
OF set (if two's complement overflow)
如果两个数相减的话, 最高位有借位就设置为 1.
测试 (Test) 指令
testl Src2, Src1
testq Src2, Src1
计算 Src1 & Src2, 并设置相应的条件码, 但是不改变目的操作数
ZF set (if a& b == 0)
SF set (if a&b < 0)
test
指令使 CF, OF 清零