В его описании кода операции для SUB у него есть это код:
Код: Выделить всё
void Chip8::OP_8xy5()
{
uint8_t Vx = (opcode & 0x0F00u) >> 8u;
uint8_t Vy = (opcode & 0x00F0u) >> 4u;
if (registers[Vx] > registers[Vy])
{
registers[0xF] = 1;
}
else
{
registers[0xF] = 0;
}
registers[Vx] -= registers[Vy];
}
- Почему мы маскируем код операции с помощью 0x0F00u в одном случае и с 0x00F0u в другом?
Код: Выделить всё
uint8_t Vx = (opcode & 0x0F00u) >> 8u;
uint8_t Vy = (opcode & 0x00F0u) >> 4u;
- Почему мы сдвигаем Vx на 8 бит, а Vy на 4?
Подробнее здесь: https://stackoverflow.com/questions/790 ... a-bitshift