030. Ldx指令
添加核心LDX指令。
第 30 / 356 · tests/chapter_01_cpu/test_030_instruction_ldx.py
需要更新的文件
emulator/cpu/instructions.py位置
instructions.ldx, beside lda and sta为什么需要这一步
LDX开启了下一个加载指令家族,同时保留了LDA所确立的指令/操作码边界。核心指令接收一个已经解析好的值,将其存入X,并应用与 lda 相同的Zero/Negative规则。
完整示例实现
# emulator/cpu/instructions.py
def ldx(cpu, value) -> None:
cpu.x = value
cpu._update_zero_and_negative_flags(cpu.x)重要不变量
- ldx接收的是一个值,而不是地址
- X接收该值,而A和Y保持不变
- 当值恰好为 $00 时置位Zero,否则清零
- Negative镜像第7位,当第7位为零时清零
常见误解
不要在 ldx 内部获取操作数或读取总线;寻址与内存访问应由操作码处理函数在调用本指令之前完成。
不在本课范围内
- 所有LDX操作码处理函数以及操作码表条目
- 零页,Y与某个操作码的集成
- 后续的FlagsHandler重构
运行本课
uv run pytest tests/chapter_01_cpu/test_030_instruction_ldx.py -v