xs-vm 是一个极小型的虚拟机,适用于教学。
这个项目的目的是执行一个简单的虚拟机,能够像 ARM 一样执行简单的汇编代码。我将一直让它保持简单(所以可能没有操作模式,中断处理,等等),因为它是为了教学而创建的。至于为什么用 Python 呢,这个项目优先考虑的是开发速度而不是性能,所以 Python 最适合。
架构:
虚拟机有16个寄存器 (R0-R15)。大部分是通用的,有一些特殊的:
SP (R13)。堆栈指针。指到最后一个元素 push 到 堆栈(或 0XFFFFFF,如果没有东西被 push)。
LR (R14)。链接寄存器。持有该函数调用的返回地址。
PC (R15)。程序计数器。持有这将在未来执行的,存储器中的指令地址。
函数调用时,结果是存在 R0, 而 R1-R3 通常用来传递参数。