VM语言语法总结
一、算术命令和逻辑命令
命令 | 返回值 | 说明 |
---|---|---|
add | x + y | |
sub | x - y | |
neg | - y | |
eq | 若x = y,则为真,否则为假 | |
gt | 若x > y,则为真,否则为假 | |
lt | 若x < y,则为真,否则为假 | |
and | x And y | 按位“与” |
or | x Or y | 按位“或” |
not | Not y | 按位“非” |
二、内存访问命令
- push segment index
将 segment[index] 的值压入堆栈 - pop segment index
将栈顶元素弹出然后存入 segment[index]
三、程序控制流命令
- label label
该命令标记程序中某条指令的位置 - goto label
该命令执行无条件跳转操作 - if-goto label
该命令执行条件跳转操作,如果该值非零,那么程序就跳转到 label 指示的位置,否则,继续执行程序中的下一条命令
四、函数调用命令
- function f n
一段函数名为 f 的代码,该函数有 n 个参数 - call f m
调用函数 f ,其中 m 个参数已经被调用者压入堆栈 - return
返回到调用者