036. stx 指令
添加核心 STX 指令。
第 36 / 356 · tests/chapter_01_cpu/test_036_instruction_stx.py
要更新的文件
emulator/cpu/instructions.py位置
instructions.stx, beside ldx为什么需要这一步
STX 引入与 LDX 相对应的存储指令。它遵循 STA 确立的边界:核心指令接收一个已解析好的目标地址,并通过 CPU 总线写入寄存器的值,且不改变标志。
完整示例实现
# emulator/cpu/instructions.py
def stx(cpu: CPU, address: int):
value = cpu.x
cpu.bus.write(address, value)重要不变式
- stx 接收的是地址,不是值
- 写入的值是 X,且写入通过 cpu.bus.write 进行
- X 和处理器标志保持不变
常见误区
不要根据 X 更新 Zero 或 Negative。存储指令只写入内存,即使被存储的字节是 $00 或第 7 位为 1。
超出范围
- 所有 STX 操作码处理函数和操作码表项
- 对寻址模式辅助函数的改动
- 周期时序和写入侧硬件效应
运行本课
uv run pytest tests/chapter_01_cpu/test_036_instruction_stx.py -v