gpt4 book ai didi

java - 如何用Java模拟CPU?

转载 作者:行者123 更新时间:2023-12-01 17:17:32 25 4
gpt4 key购买 nike

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

最佳答案

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

一旦您可以利用 CPU 的所有操作码编写程序,您就可以开始编写模拟器了。从这里开始,最基本的就是一个巨大的 select() 语句。能够单步执行 objective-c PU 汇编代码并识别寄存器等,并根据测试代码的定义进行更改。

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

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

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

关于java - 如何用Java模拟CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20963210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com