我正在用TEST(奇偶校验标志操作)进行手动操作,问题是我无法得到正确的结果,请考虑这个:
ax = 256 = 0000 0001 0000 0000
所以,如果我这样做:
测试啊,0x44
……
BitwiseXNOR 是一个 横 位的XNOR,产生一个位。请记住PF只有1位宽(EFLAGS中的一个标志),因此写入没有意义 PF=1111 1111 。
BitwiseXNOR
PF=1111 1111
对于“根据结果设置标志”的指令,它总是与奇偶校验计算相同,除非它已完成 test 内部临时结果。 (和往常一样,在它的低8位,不管操作数大小)。
test
如果设置位数是奇数,则PF = 0,如果设置位数是偶数,则PF = 1。是的,你在评论中发表的表达, ~(0^0^0^0^0^0^0^0) 是正确的。
~(0^0^0^0^0^0^0^0)
也可以看看:
XOR
popcnt eax, eax
not eax
and eax, 1
andn eax, eax, ecx
ecx=1
这个答案 有几个例子说明如何根据结果中位的水平XOR设置PF。在您的情况下,8位是AND结果 test 内部产生。