You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现NES模拟器时MOS6502的PC/S递增周期是否需执行读操作?

关于6502 RTS指令周期中PC/S递增操作的疑问

我正在参照6502 CPU文档实现自己的NES模拟器,要求能在指令的正确周期执行读写操作。研究所有指令后,遇到了RTS指令的如下周期描述:

RTS
   #  address R/W description
  --- ------- --- -----------------------------------------------
   1    PC     R  fetch opcode, increment PC
   2    PC     R  read next instruction byte (and throw it away)
   3  $0100,S  R  increment S
   4  $0100,S  R  pull PCL from stack, increment S
   5  $0100,S  R  pull PCH from stack
   6    PC     R  increment PC

其中的increment PC是指仅需递增PC,还是像周期2那样先读取再递增并丢弃结果?increment S也存在同样的疑问。

支持需执行读操作的理由

  • R/W列标记为R。
  • 地址栏指定为PC或S对应的地址。
  • 若不执行读操作,这两个周期会成为仅有的无读写操作的情况。

支持无需执行读操作的理由

  • 描述中未提及读/取/写操作,而隐含寻址或累加器寻址的指令会明确说明读取操作,例如:
#  address R/W description
--- ------- --- ------------------------------------------
1    PC     R  fetch opcode, increment PC
2    PC     R  read next instruction byte (and throw it away)
  • MOS6502会始终读取操作码及后续字节,即便未使用。或许MOS6502每个周期都会执行读写,仅在需要时使用结果;后续指令(第3及之后周期)可能可决定是否读写。

内容的提问来源于stack exchange,提问作者1uigii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:07:15