Adicionado alguns comentarios.
[myPerl.git] / code.h
blob278b7b96d57cb034b61f8fdf60822783d860b10c
1 #ifndef __CODE_H__
2 #define __CODE_H__
4 enum {
5 HALT,
6 ADD,
7 SUB,
8 MUL,
9 DIV,
10 MOD,
11 CMP_EQL,
12 CMP_NE,
13 CMP_GEQL,
14 CMP_LEQL,
15 CMP_GT,
16 CMP_LT,
17 LOAD_VAR,
18 LOAD_INT,
19 LOAD_OFF,
20 STORE,
21 JMP_FALSE,
22 GOTO,
23 WRITE_INT,
24 PUSH_INT,
25 PUSH_VAR,
26 CALL,
27 RET,
28 SHIFT
31 /* For use by the virtual machine mainly */
32 struct ops {
33 char *opname;
34 void (*op)(int arg);
37 typedef struct code {
38 int op;
39 int arg;
40 } code_t;
42 /* defined in code.c */
43 extern struct ops ops[];
44 extern int code_offset;
45 extern code_t code[];
47 int reserve_loc(void);
48 int gen_label(void);
49 void gen_code(int op, int arg);
50 void back_patch(int addr, int op, int arg);
51 void print_code(char *output);
53 #endif /* !__CODE_H__ */