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