3 个版本
| 0.1.2 | 2023 年 12 月 14 日 |
|---|---|
| 0.1.1 | 2023 年 12 月 9 日 |
| 0.1.0 | 2023 年 12 月 6 日 |
#147 in 模拟器
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