我想知道如何创建一个以 Intel 16 位系统为模型的最小虚拟机。这将是我的第一个实际的 C 项目,我的大部分代码都是 100 行或更少,但我掌握了核心基础知识,阅读了 K&R,并了解事情应该如何工作,所以这几乎是一个斗智斗勇的考验。
任何人都可以指导我如何进行此操作的文档、工具、教程或简单的旧提示/指针吗?到目前为止,我知道我需要某个地方来存储数据、某种 CPU 和某种东西充当中断 Controller 的机制。
我这样做是为了学习:系统内部结构、ASM 内部结构和 C——我想在一个项目中学习的计算的三个方面。
请不要告诉我做一些更简单的事情 - 那只会很烦人。 :)
感谢您的阅读,并希望能够写作!
最佳答案
虚拟机分为两类:一次解释代码指令的虚拟机和将代码编译为 native 指令的虚拟机(例如“JIT”)。
解释类别通常围绕指令执行循环构建,使用 switch 语句、计算的 goto 或函数指针来确定如何执行每条指令。
有一个有趣的平台,因其简单和有趣而值得研究:Corewars。
Corewars是一款编程挑战游戏,用“Redcode”编写的程序在 MARS VM 上运行。有很多MARS VM s,通常用 C 编写。
它也启发了8086-based版本,其中用 8086 汇编程序编写的程序进行战斗。
关于c - 我将如何创建自己的虚拟机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1410499/