#vm #compiler #bytecode #virtual #byte #virtualization

bin+lib lib_stacked

编译器虚拟机字节码

3 个版本

0.1.2 2023 年 12 月 14 日
0.1.1 2023 年 12 月 9 日
0.1.0 2023 年 12 月 6 日

#147 in 模拟器

MIT/Apache

32KB
676

可执行文件格式布局

头 | 程序

指令集参考

Push

将一个值推入栈中。

类型 操作码 参数
push [u32] 0x01 [u8; 4]

Pop

从栈中弹出一个值。

类型 操作码 参数
Pop 0x02 None

Dup

复制栈顶的值。

类型 操作码 参数
Dup 0x05 None

Swap

交换栈顶的值。

类型 操作码 参数
Swap 0x06 None

Dump

将栈顶的值输出到 stdout。

类型 操作码 参数
Dump 0x03 None

Halt

停止程序的执行。

类型 操作码 参数
Halt 0x04 None

二进制表达式

在栈上执行二进制表达式。

类型 操作码 参数
Add 0x28 None
Sub 0x29 None
Mul 0x2A None
Div 0x2B None

Jump

跳转到标签。

类型 操作码 参数
jump [u32] 0x6A [u8; 4]

Label

使用指定的 u32 作为标识符定义标签。

类型 操作码 参数
labl [u32] 0x4C [u8; 4]

错误参考

OutOfBounds

此错误在尝试访问超出范围的内存或通过返回指令将指令指针设置为超出范围的地址时触发。

依赖项

~3–13MB
~123K SLoC