17 { "CMP_EQL", vm_cmp_eql
},
18 { "CMP_NE", vm_cmp_ne
},
19 { "CMP_GEQL", vm_cmp_geql
},
20 { "CMP_LEQL", vm_cmp_leql
},
21 { "CMP_GT", vm_cmp_gt
},
22 { "CMP_LT", vm_cmp_lt
},
23 { "LOAD_VAR", vm_load_var
},
24 { "LOAD_INT", vm_load_int
},
25 { "LOAD_OFF", vm_load_off
},
26 { "STORE", vm_store
},
27 { "JMP_FALSE", vm_jmp_false
},
29 { "WRITE_INT", vm_write_int
},
30 { "PUSH_INT", vm_push_int
},
31 { "PUSH_VAR", vm_push_var
},
49 gen_code(int op
, int arg
)
51 code
[code_offset
].op
= op
;
52 code
[code_offset
++].arg
= arg
;
56 back_patch(int addr
, int op
, int arg
)
63 print_code(char *outfile
)
69 fp
= fopen(outfile
, "w");
72 fprintf(stderr
, "Erro ao abrir %s\n", outfile
);
78 for (i
= 0; i
< code_offset
; ++i
) {
79 fprintf(fp
, "%d: %s %d\n", i
, ops
[code
[i
].op
].opname
, code
[i
].arg
);