如何在Java中模拟CPU?

 会说话de狗尾草 发布于 2023-02-06 10:21

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

1 个回答
  • 在启动仿真器之前,您需要110%的熟悉目标CPU的汇编/操作码。全面了解CPU架构,例如操作对(状态)寄存器,堆栈,中断,向量,指针等的影响。例如,在8位CPU中,这些字节将是(8位)字节,代表单个函数(如add,减去,比较,转到。与Java本身一样,作为字节码解释器(JVM,Java虚拟机)

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

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

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

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

    2023-02-06 10:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有