0

所以我一直对 CPU 仿真很感兴趣。我一直想测试我的 Java 技能。我看过诸如 Java GB 和 JPC 之类的开源项目,但它们确实没有为那些想要在该领域学习的新手提供足够的文档。那么,直截了当,如何学习机器仿真?是否有网站(或 pdf 等)可以为我提供机器仿真的基础知识?

4

1 回答 1

5

在开始使用模拟器之前,您需要 110% 熟悉目标 CPU 的汇编/操作码。完全理解 CPU 架构,例如操作对(状态)寄存器、堆栈、中断、向量、指针等的影响。例如,在 8 位 CPU 中,这些将是(8 位)字节表示单个函数,如 add,减去,比较,转到。与 Java 本身不同,作为字节码解释器(JVM,Java 虚拟机)

一旦您可以使用 CPU 的所有操作码编写程序,您就可以开始编写模拟器了。从那里开始,最基本的就是一个巨大的 select() 语句。能够单步执行您的目标 CPU 汇编代码并识别寄存器等,随着您的测试代码定义而更改。

一旦您的虚拟 CPU 以 100% 的准确度解释操作码,您就开始模拟外围硬件,例如输入、图形驱动程序、声音……对于图形,CPU 多次写入由图形控制器监控的特定内存地址以将内存字节显示为屏幕上的像素。或者键盘可能会将您的击键代码发送到特定的内存位置并触发一个中断,告诉 CPU 有数据可供读取。磁盘的工作方式相同。

这只是 CPU 运行后内存中的数据交换,以使所有部件相互通信,真的。例如 NES 或 GameBoy 卡带实际上只是一个内存芯片,位于 CPU 直接访问的内存中的特定地址。

另一个概念是 BIOS/ROM,当 CPU 上电或复位时,它会自动开始在特定内存位置运行代码。BIOS 或 ROM 可能位于此处。它包含一个非常基本的程序,用于处理外设在各种内存地址和/或它们所在的中断处的通信。

于 2014-01-07T03:22:25.170 回答