add specialized inc/dec operations
[neatcc.git] / gen.h
blobbec32373d77c5c8279d0cd921727297887fda6e6
1 #define SECSIZE (1 << 18)
2 #define MAXTMP (1 << 12)
4 /* basic types */
5 #define BT_SZMASK 0x00ff
6 #define BT_SIGNED 0x0100
7 #define BT_FLOAT 0x0200
8 #define BT_SZ(bt) ((bt) & BT_SZMASK)
10 void o_num(long n, unsigned bt);
11 void o_local(long addr, unsigned bt);
12 void o_assign(unsigned bt);
13 void o_deref(unsigned bt);
14 void o_load(void);
15 void o_addr(void);
16 void o_symaddr(long addr, unsigned bt);
17 void o_call(int argc, unsigned *bt, unsigned ret_vs);
18 void o_add(void);
19 void o_sub(void);
20 void o_mul(void);
21 void o_div(void);
22 void o_mod(void);
23 void o_shl(void);
24 void o_shr(void);
25 void o_neg(void);
26 void o_not(void);
27 void o_or(void);
28 void o_xor(void);
29 void o_and(void);
30 void o_inc(void);
31 void o_dec(void);
33 void o_lt(void);
34 void o_gt(void);
35 void o_le(void);
36 void o_ge(void);
37 void o_eq(void);
38 void o_neq(void);
39 void o_lnot(void);
41 long o_mklocal(int size);
42 long o_arg(int i, unsigned bt);
43 void o_rmlocal(long addr, int sz);
44 void o_tmpdrop(int n);
45 void o_tmpswap(void);
46 void o_tmpcopy(void);
47 void o_fork(void);
48 void o_forkpush(void);
49 void o_forkjoin(void);
50 void o_cast(unsigned bt);
51 int o_popnum(long *c);
52 long o_mklabel(void);
53 long o_jz(long addr);
54 long o_jnz(long addr);
55 long o_jmp(long addr);
56 void o_filljmp(long addr);
57 void o_filljmp2(long addr, long jmpdst);
58 void o_memcpy(int sz);
59 void o_memset(int x, int sz);
60 void o_datset(long addr, int off, unsigned bt);
62 long o_func_beg(char *name, int global);
63 void o_func_end(void);
64 void o_ret(unsigned bt);
66 int o_nogen(void);
67 void o_dogen(void);
69 void out_init(void);
70 void out_write(int fd);
71 long out_func_beg(char *name, int global);
72 void out_func_end(char *buf, int len);
73 long out_mkvar(char *name, int size, int global);
74 long out_mkdat(char *name, char *buf, int len, int global);
75 long out_mkundef(char *name, int sz);
76 void out_rela(long addr, int off, int rel);
77 void out_datcpy(long addr, int off, char *buf, int len);
78 void out_datrela(long addr, long dataddr, int off);