Instruções da SlangVM2.1
A VM executa assembly textual. Labels são declaradas com label nome e usadas por saltos e chamadas.
| Instrução | Descrição | Exemplo |
|---|---|---|
push | Empilha constante | push 10 |
pop | Remove topo da pilha | pop |
dup | Duplica topo da pilha | dup |
get_local | Empilha um slot local | get_local 0 |
set_local | Copia topo para slot local | set_local 1 |
add | Soma | add |
sub | Subtrai | sub |
mul | Multiplica | mul |
div | Divide | div |
mod | Resto inteiro | mod |
neg | Negação numérica | neg |
not | Negação lógica | not |
eq | Igualdade | eq |
ne | Diferença | ne |
lt | Menor que | lt |
le | Menor ou igual | le |
gt | Maior que | gt |
ge | Maior ou igual | ge |
jump | Salto incondicional | jump L0 |
jump_if_false | Salta se topo for falso | jump_if_false L1 |
call | Chama função | call 2 fn_somar |
ret | Retorna da função | ret |
print | Imprime topo da pilha | print |
halt | Encerra a VM | halt |
Exemplo2.1.1
call 0 fn_main
halt
label fn_main
push 1
push 2
push 3
mul
add
print
push null
ret