jjzjj

c++ - C/C++ : how to separate addressing mode code from actual instruction code 中的 6502 仿真器

在业余时间,我开始为6502CPU编写一个非常简单的C++仿真器。我过去常常为这个CPU写下很多汇编代码,所以所有的操作码、寻址模式和其他东西都不是什么大问题。6502有56条不同的指令加上13种寻址模式,总共提供151种不同的操作码。对我来说,速度不是问题,所以我不想写一个巨大的switch-case语句并一次又一次地重复相同的代码(不同的操作码可以使用不同的寻址模式引用相同的指令)我想将实际的指令代码与寻址模式代码:我发现这个解决方案非常简洁,因为它只需要编写13个寻址模式函数和56个指令函数,无需重复。这里寻址模式的作用是://Addressingmodesuint16_tAdd

从6502汇编器中获取随机数

试图使用JSR$E09A在我的Commodore64(C64)上生成一系列随机数,并从63美元和64美元中获取数字。(根据我看到的所有文档,当您使用基本的rnd(0)时。本身。.C000A500LDA$00.C002209AE0JSR$E09A.C00500BRK现在,当我尝试用以下代码迭代10次时,它永远不会返回。.C000A00ALDY#$0A.C002A900LDA#$00.C004209AE0JSR$E09A.C00788DEY.C008D0F8BNE$C002.C00A00BRK我错过了如此明显的东西,我看不到它。我不担心它是多么“随机”。在这一点上,我只想要一系列随机数。看答案谢谢

6502 寻址模式详解

6502共有13种寻址模式:A:寄存器寻址。指令形式为OPCA;目标数据位于A寄存器中,属于隐含寻址;使用这种寻址模式的指令都是1个字节长度,需要2个时钟周期abs:绝对地址寻址。指令形式为OPC$LLHH;目标数据位于绝对地址$HHLL处abs,X:X变址绝对地址寻址。指令形式为OPC$LLHH,X;操作数是16位基址;有效地址由基址加上X寄存器中的值计算得到abs,Y:X变址绝对地址寻址。指令形式为OPC$LLHH,Y;操作数是16位基址;有效地址由基址加上Y寄存器中的值计算得到#:立即数寻址。指令形式为OPC#$BB;目标数据即操作数BBimpl:隐含寻址。目标数据由指令码决定ind:间

6502 寻址模式详解

6502共有13种寻址模式:A:寄存器寻址。指令形式为OPCA;目标数据位于A寄存器中,属于隐含寻址;使用这种寻址模式的指令都是1个字节长度,需要2个时钟周期abs:绝对地址寻址。指令形式为OPC$LLHH;目标数据位于绝对地址$HHLL处abs,X:X变址绝对地址寻址。指令形式为OPC$LLHH,X;操作数是16位基址;有效地址由基址加上X寄存器中的值计算得到abs,Y:X变址绝对地址寻址。指令形式为OPC$LLHH,Y;操作数是16位基址;有效地址由基址加上Y寄存器中的值计算得到#:立即数寻址。指令形式为OPC#$BB;目标数据即操作数BBimpl:隐含寻址。目标数据由指令码决定ind:间