1 个不稳定版本
0.1.0 | 2023 年 7 月 25 日 |
---|
#223 in 模拟器
65KB
2K SLoC
使用 Rust 实现 Intel 8080 CPU 全仿真。
为了验证仿真器是否正常工作,请在路径 diagnosis_program/ 下运行 cpudiag 程序。我还修改了汇编代码以避免写入 ROM 的需要。
此库旨在在不同的平台上重用:macOS、iOS、Android 和(如果可能)Web。
FFI 设计旨在易于理解和使用。
此库最重要的部分是提供一个 CPU 实例,其中提供了所有功能(CPU、RAM、IO)。
如果我们查看 emulator.h 头文件中的接口,我们可以看到
Cpu8080
不透明结构,我们获得对其的指针,在应用程序平台上传递它,并将其返回到此库进行解释。例如,查看run
方法IoCallbacks
结构,顾名思义,这是用于 IO 交互的,例如,我们需要从/写入外围设备,每次 CPU 发出 IO 请求时,我们需要一种方式回到我们的设备。- 中断,我们模拟从外部世界接收中断的方式,中断总是异步发生的,可以使用 mpsc 通道来完成此目的,CPU 是接收者,发送者应由平台拥有。
- 暂停/恢复执行,类似于处理中断,应使用 mpsc,但需要一些额外的注意事项
- 为了接收暂停请求,我们以非阻塞方式检查请求(活跃状态)
- 为了接收恢复请求,我们以阻塞方式检查请求(空闲状态)
如何使用
要使用此库进行应用程序开发,只需构建并复制静态库 libemulator.a,并将 emulator.h 头文件包含到您的项目中。