054. Adc immediate
Подключить ADC immediate (опкод $69) к диспетчеризации CPU.
Урок 54 из 356 · tests/chapter_01_cpu/test_054_ADC_immediate.py
Файл для обновления
emulator/cpu/opcodes.pyСимволы для создания/обновления
opcodes.adc_immediate
OPCODE_TABLE[$69]
the `adc` instruction importПочему этот шаг нужен
Тест 053 обеспечил арифметику над уже полученным значением. Непосредственный режим сам предоставляет следующий байт программы, поэтому этот обработчик передаёт возвращаемое значение immediate(cpu) напрямую в adc.
Полный пример реализации
# emulator/cpu/opcodes.py
from emulator.cpu.instructions import ..., adc
def adc_immediate(cpu):
value = immediate(cpu)
adc(cpu, value)
OPCODE_TABLE = {
# ...existing entries...
0x69: adc_immediate,
}Важные инварианты
- обработчик принимает только
cpu - непосредственный режим потребляет ровно один байт операнда
- PC продвигается всего на два байта: опкод плюс операнд
- обработчик передаёт всю арифметику и изменения флагов в
adc
Распространённое заблуждение
Не воспринимайте непосредственный байт как адрес и не читайте шину повторно; immediate(cpu) уже возвращает значение операнда.
Вне рамок задачи
- все опкоды ADC с адресацией по памяти
- изменения в
adcили вспомогательных методах адресации - учёт циклов
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_054_ADC_immediate.py -v