64位栈式虚拟机

🥦🍓🍇 b3cf2b7762 更新 'README.md' 3 days ago
assembler 3e6bf6091c simplify asm language 3 months ago
examples 0f310a7f7b modify docs 3 months ago
scripts 789ebeb7d0 finish project framework 4 months ago
src 97d4462ac2 delete fvm-as 6 days ago
tests 97d4462ac2 delete fvm-as 6 days ago
.gitignore 3e6bf6091c simplify asm language 3 months ago
LICENSE 39f1c73025 add license 4 months ago
Makefile 97d4462ac2 delete fvm-as 6 days ago
README.md b3cf2b7762 更新 'README.md' 3 days ago

README.md

Fantasy Virtual Machine

玩具64位栈式虚拟机和汇编器

构建

FVM由两部分组成:虚拟机和汇编器

构建汇编器需要Chicken Scheme编译器。大部分主流Linux发行版都提供该编译器。

例如,在Arch Linux上:

sudo pacman -S chicken

然后,安装Chicken Scheme依赖包:

sudo chicken-install matchable srfi-69 srfi-4

然后运行makemake会自动构建两个组件。

make

构建成功后,会产生两个可执行文件:虚拟机fvm和汇编器fvm-as

运行

写完汇编代码后(examples/目录中有示例),首先运行汇编器:

./fvm-as input.asm bytecode.bin

汇编器会生成字节码文件bytecode.bin。然后运行虚拟机:

./fvm bytecode.bin

寄存器

FVM包含4个寄存器:

  • SP:栈顶指针
  • BP:栈基指针
  • PC:程序计数器
  • RV:返回值

FVM不包含通用寄存器,所有运算都在栈上进行。

指令

大部分指令都是单字节的,除了立即数指令。

源代码文件src/fvm.h中包含了完整指令列表。