Я пытаюсь скопировать код процессора NES / MOS6502 Javidx9 в C# в качестве учебного c упражнения, и у меня возникают проблемы с пониманием логики c, стоящей за реализацией режима адресации нулевой страницы. В частности, я смотрю на этот код :
// Address Mode: Zero Page
// To save program bytes, zero page addressing allows you to absolutely address
// a location in first 0xFF bytes of address range. Clearly this only requires
// one byte instead of the usual two.
uint8_t olc6502::ZP0()
{
addr_abs = read(pc);
pc++;
addr_abs &= 0x00FF;
return 0;
}
Я пытаюсь понять, почему addr_abs &= 0x00FF;
, uint16_t addr_abs
16 бит, но uint8_t read(uint16_t a);
возвращает 8 бит значение в любом случае, так что старшие 8 бит (MOS6502 с прямым порядком байтов) будут по умолчанию равны 00? Я что-то упускаю из-за того, как работает C компилятор / x86 ISA?