104. Rol accumulator 累加器模式

将 ROL A 暴露为操作码 ``0x2A``。

104 / 356 · tests/chapter_01_cpu/test_104_ROL_accumulator.py

在本步骤中,在第 102-103 课定义了 `rolrol_a` 之后,添加操作码所需的 ROL 导入以及累加器的分派条目。后续的内存寻址模式和 ROR 仍保留在各自编号的步骤中。

生产代码位置中的建议实现

`emulator/cpu/opcodes.py` 的导入列表新增::

rol, rol_a

`emulator/cpu/opcodes.py::OPCODE_TABLE` 新增::

0x2A: rol_a,

本步骤存在的原因

累加器模式不需要适配器,因为 `rol_a(cpu)` 已经与操作码处理函数的签名相匹配。

不变量:取指 `0x2A 在分派前使 PC 前进一次;rol_a` 不消耗操作数,因此最终 PC 为起始位置+1,只有 A 被旋转,其 C/Z/N 标志保持第 103 课的语义。

常见误解:不要创建寻址模式包装器,也不要用 A 调用 `rol。累加器模式只有一个字节,直接映射到 rol_a`。

不在本步骤范围内:内存操作码适配器 `0x260x360x2E0x3E` 是第 105-108 课;所有 ROR 的分派从第 111 课开始。

运行本课

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