我正在开展个人项目,以提高我对CPU工作方式的了解。所以我正在做一个Intel 8080模拟器,它是一个8位微处理器。什么是按位操作以模拟RRC指令
在RRC指令,该指令example的实施过程是这样:
case 0x0f: {
uint8_t x = state->a;
state->a = ((x & 1) << 7) | (x >> 1);
state->cc.cy = (1 == (x&1));
}
我无法理解这条线的工作。
state->a = ((x & 1) << 7) | (x >> 1);
我知道它应该把所有的位向右移动1个位置,但我不知道如何。
如果有人能够为我提供一个它实际上一步一步做的例子,我将不胜感激。
state->a
是uint8_t
其仿效命名 A.0x0f
为RRC十六进制值的英特尔8080寄存器。这个例子已经由this提供。
你是如何“知道它应该将所有的位1个职位的权利”? – EOF
'(x >> 1)' - 移动所有东西。'((x&1)<< 7)'将最右边的位移到最左边的位置。循环移位8位。 –
'x >> 1'将'x'中的(无符号)数量向右移一位,在最高有效位上留下一个零。 '(x&1)<< 7)'将最低有效位移动到最高有效位(在较低有效位中留下零)。两者的“|”组合已经实现了RRC。 –