207. 标志控制隐含寻址操作码

接通隐含寻址的标志控制操作码。

207 / 356 · tests/chapter_01_cpu/test_207_flag_control_implied_opcodes.py

本步骤存在的原因

在本步骤中,更新 `emulator/cpu/opcodes.py 的指令导入以及 OPCODE_TABLE。步骤 206 中的函数由此可以通过 emulator/cpu/cpu.py::CPU.step` 执行。

建议实现

# Add clc, sec, cli, sei, cld, sed, clv to the instruction import.
OPCODE_TABLE = {
    # existing entries
    0x18: clc,
    0x38: sec,
    0x58: cli,
    0x78: sei,
    0xD8: cld,
    0xF8: sed,
    0xB8: clv,
}

不变式:每个映射都直接分派到一个单参数操作;每条指令都是单字节,因此仅操作码取指就使 PC 前进到下一字节,并且只有目标标志发生变化。常见的误解是添加一个会消耗操作数的寻址模式,或者把设置/清除操作码对弄反。

范围之外:NOP 及操作码 $EA 属于步骤 208-209,中断传递语义是后续的行为。

运行本课

uv run pytest tests/chapter_01_cpu/test_207_flag_control_implied_opcodes.py -v