操作类型指令
包含了变量表, 操作栈控制与 PC 指令计数器控制的指令
其他操作
| 操作码助记符 | 操作数 | 功能 |
|---|---|---|
push | usize_t: 常量表索引 | 将常量表元素压入操作栈 |
call | 无操作数 | 栈顶提取引用并发送函数调用请求 |
nol | 无操作数 | 空操作 (仅增加 PC 计数) |
return | 无操作数 | 终止当前栈帧执行并提取栈顶元素返回到父栈帧操作栈 |
变量表操作
| 操作码助记符 | 操作数 | 功能 |
|---|---|---|
load | usize_t: 变量表索引 | 将栈顶元素加载到指定局部变量表槽位 |
store | usize_t: 变量表索引 | 将局部变量加载到栈顶 |
load_global | usize_t: 变量表索引 | 将栈顶元素加载到指定全局变量表槽位 |
store_global | usize_t: 变量表索引 | 将全局变量加载到栈顶 |
load_array_global | usize_t: 变量表索引 usize_t: 提取长度 | 将指定栈顶元素以数组形式加载到全局变量表 |
load_array | usize_t: 变量表索引 usize_t: 提取长度 | 将指定栈顶元素以数组形式加载到局部变量表 |
set_array_global | usize_t : 变量表索引 | 提取栈顶赋值元素和数组索引, 赋值到全局变量 |
set_array | usize_t : 变量表索引 | 提取栈顶赋值元素和数组索引, 赋值到局部变量 |
跳转指令
跳转指令的 pc 计数全部为绝对计数值, 不为指令偏移.
所有跳转只能在当前栈帧进行, 跨栈帧需要 call return 指令.
| 操作码助记符 | 操作数 | 功能 |
|---|---|---|
jump | usize_t: pc计数 | 无条件跳转到指定位置 |
jump_false | usize_t: pc计数 | 栈顶条件为假跳转 |