我想我不太了解PF
eflags 寄存器中的内容。以下是我为了解其工作原理所做的两个比较:
# a > b -- 0b01
mov $4, %rax
mov $3, %rbx
cmp %rax, %rbx # [ CF PF AF SF IF ] *PF* included
# a > b -- 0b10
mov $5, %rax
mov $3, %rbx
cmp %rax, %rbx # [ CF AF SF IF ]
# a = b -- 0b00
mov $5, %rax
mov $5, %rbx
cmp %rax, %rbx # [ PF ZF IF ] *PF* included
在第一个操作中,比较将产生1
or0x01
并且在第二个操作中它将产生2
or 0x10
。那么为什么在第一个而不是第二个中设置奇偶校验标志,因为它们都有一个位设置为 1。