gpt4 book ai didi

assembly - x86 中 0 值的奇偶校验标志

转载 作者:行者123 更新时间:2023-12-03 06:25:25 30 4
gpt4 key购买 nike

我发现在 x86 CPU 中,当设置为 1 的位数为偶数时,会设置奇偶校验标志 (PF),并且仅测试值的第一个字节(低 8 位)。

我唯一不确定的情况是当我们处理 0 值时。

我至少见过其他问题,其中奇偶校验标志似乎设置为 1,值为 0。

例如,对于值 8000h,低 8 位全为 0,奇偶校验标志被设置为 1。

那么,我是否应该接受,对于设置为 1 的 0 位,奇偶校验标志将被启用,就像设置为 1 的偶数位一样?

最佳答案

0 的位数为偶数,所以答案是肯定的。

测试:

// compiled with Open Watcom C/C++ 1.9
#include <stdio.h>

unsigned parity(unsigned v)
{
unsigned p = 0;
__asm
{
mov eax, v
or eax, eax
pushf
pop eax
shr eax, 2
and eax, 1
mov p, eax
}
return p;
}

int main(void)
{
unsigned i;
for (i = 0; i < 8; i++)
printf("PF(%u) = %u\n", i, parity(i));
return 0;
}

输出:

PF(0) = 1
PF(1) = 0
PF(2) = 0
PF(3) = 1
PF(4) = 0
PF(5) = 1
PF(6) = 1
PF(7) = 0

关于assembly - x86 中 0 值的奇偶校验标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15959798/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com