我有一个应该完全模拟MOS Technologies 6502处理器的程序。我几乎完全将整个指令集实现为c ++函数,包括数学,按位函数。我甚至可以模拟时钟速度。我没有成功实现的唯一指令是JMP和所有分支指令,以及子程序指令。这是因为我不知道如何为C ++制作类似goto的循环。由于我的标题太大而无法放入代码块,我将其链接为文件“6502.h”。任何一步一步的帮助将不胜感激。
https://drive.google.com/file/d/0B1j1lbKWU98iQ1dyVGNCVzRzdDA/view?usp=sharing 6502.h
答案 0 :(得分:3)
我的一部分想要将其作为偏离主题关闭 - “为我完成代码”类型的问题以及“为什么这段代码不起作用”在SO上是不受欢迎的。
然而,这是星期五下午,我应该写一些员工评论,这是一个受欢迎的分心。我不打算给你代码,但我会给你一些提示:
(顺便说一下,您可能希望更仔细地查看PHP / PLP的操作码描述)
答案 1 :(得分:0)
伪代码,给出一个想法;
// Emulation loop
opcode = memory[pc++]
switch(opcode)
case JMP
target = memory[pc] | memory[pc+1]<<8
pc = target
case JSR
target = memory[pc] | (memory[pc+1]<<8)
stack[sp--] = pc<<8
stack[sp--] = pc&0xff
pc = target
case RTS
pc = stack[sp+1] | (stack[sp+2]<<8)
sp += 2
...