实现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
相关产品推荐
相关产品推荐

