196. 隐含寻址的 Pla

注册隐含寻址的 PLA。

196 / 356 · tests/chapter_01_cpu/test_196_PLA_implied.py

前置条件:第 195 步已添加 `pla。在本步骤中,只修改 emulator/cpu/opcodes.py,导入 pla 并添加它的 OPCODE_TABLE` 条目。

本步骤存在的原因

PLA 的输入是由 S 选定的硬件栈。操作码 $68 没有操作数,因此 `CPU.step() 必须直接分发给 pla(cpu)`。

建议实现

from emulator.cpu.instructions import pla

OPCODE_TABLE = {
    # existing entries
    0x68: pla,
}

不变量:保留已有的映射;把 $68 精确映射到 `pla`;不使用寻址方式包装函数;只消耗操作码字节;保留第 195 步实现的 Z/N 影响。

常见误解:$68 之后的程序内存并不能提供出栈的值;提供该值的是递增后的栈地址。

范围之外:`pla` 的行为属于第 195 步。PHP 从第 197 步开始,这次改动不应引入它的函数或操作码映射。

运行本课

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