7 #define STACK_SIZE 4096
10 static int stack
[STACK_SIZE
];
12 static int pc
= 0; /* program counter */
20 stack
[top
-1] = stack
[top
-1] + stack
[top
];
23 stack
[top
-1] = stack
[top
-1] - stack
[top
];
26 stack
[top
-1] = stack
[top
-1] * stack
[top
];
29 stack
[top
-1] = stack
[top
-1] / stack
[top
];
32 stack
[top
-1] = stack
[top
-1] % stack
[top
];
35 fprintf(stderr
, "Operacao %c nao reconhecida\n", op
);
80 stack
[++top
] = data_get(arg
);
95 data_put(arg
, stack
[top
]);
101 vm_jmp_false(int arg
)
116 vm_write_int(int arg
)
118 printf("%d\n", stack
[top
]);
132 while (code
[pc
].op
!= HALT
) {
133 ops
[code
[pc
].op
].op(code
[pc
].arg
);