mirror of
https://github.com/anoma/juvix.git
synced 2024-12-12 14:28:08 +03:00
73 lines
811 B
Plaintext
73 lines
811 B
Plaintext
-- arithmetic
|
|
|
|
function f(integer, integer) {
|
|
push arg[0];
|
|
push arg[1];
|
|
add;
|
|
trace;
|
|
ret;
|
|
}
|
|
|
|
function g(integer, integer) : integer {
|
|
push arg[1];
|
|
push 7;
|
|
mul;
|
|
push arg[0];
|
|
push 1;
|
|
add;
|
|
sub;
|
|
ret;
|
|
}
|
|
|
|
function h((integer, integer) -> integer, integer, integer) : integer {
|
|
push arg[2];
|
|
push arg[1];
|
|
push $;
|
|
push arg[0];
|
|
call $ 2;
|
|
mul;
|
|
ret;
|
|
}
|
|
|
|
function func(integer) : integer {
|
|
push 4;
|
|
push arg[0];
|
|
add;
|
|
ret;
|
|
}
|
|
|
|
function main() {
|
|
push 5;
|
|
push 17;
|
|
div;
|
|
call func;
|
|
trace; -- 7
|
|
pop;
|
|
push 17;
|
|
push 5;
|
|
push 0;
|
|
mul;
|
|
add;
|
|
trace; -- 17
|
|
pop;
|
|
push 1;
|
|
push 0;
|
|
add;
|
|
push 7;
|
|
mul;
|
|
push 30;
|
|
add;
|
|
trace; -- 37
|
|
pop;
|
|
push 4;
|
|
push 3;
|
|
push 2;
|
|
calloc g 0;
|
|
call h;
|
|
call f; -- prints -29
|
|
trace; -- -29
|
|
pop;
|
|
push void;
|
|
ret;
|
|
}
|