Mercurial > hg > CbC > old > device
diff mc-codegen.h @ 327:da2e3f2d127d
macro/codegen reorganization
author | kono |
---|---|
date | Mon, 21 Jun 2004 23:50:34 +0900 |
parents | 183726ccd83d |
children | 7ecb023d29b8 |
line wrap: on
line diff
--- a/mc-codegen.h Sun Jun 20 20:54:24 2004 +0900 +++ b/mc-codegen.h Mon Jun 21 23:50:34 2004 +0900 @@ -1,6 +1,14 @@ /* for mc-codegen.c */ extern int use; /* generated value will be used in gexpr */ +extern char *init_src; +extern int size_of_int; +extern int size_of_short; +extern int size_of_float; +extern int size_of_double; +extern int size_of_longlong; +extern int bit_of_byte; +extern int endian; #define USE_CREG (-1) #define ASM_INPUT 1 @@ -8,63 +16,92 @@ #define ASM_USED 3 #define MAX_ASM_REG 30 -/* function provided by mc-code-*.c */ +/* used by mc-parse */ -extern int get_register_var(NMTBL *); -extern int get_dregister_var(NMTBL *,int); -extern int get_lregister_var(NMTBL *); +extern int rvalue(int e); +extern int rvalue_t(int e,int t); +extern int integral(int t); + extern void arg_register(NMTBL *fnptr); - -/* function provided by mc-codegen.c */ - -extern void codegen_init(); +extern int arg_reorder(int arg,int new_arg); +extern int assign_data(int e, int t, NMTBL *n,int offset); +extern int assop(int e1,int e2,int op,int t,int no_float); +extern int backdef(void); +extern int cexpr(int e); +extern void checkret(void); +extern void closing(); +extern void cmpdimm(int e, int csreg,int label,int cond); +extern void codegen_init(); /* called only once */ +extern void codegen_reinit(); /* called for each file */ +extern void codegen_decl_init(); /* called before each declaration */ +extern int cond(int t,int e1,int e2,int e3); +extern int correct_type(int e,int t); +extern int csvalue(); +extern void def_label(int cslabel, int dlabel); +extern void emit_init_vars(void); +extern void fdecl_struct(int fntype); +extern int function_type(int e1,int *dots); +extern void lcheck(int e); +extern void opening(char *filename); +extern void parallel_rassign(int assigns); +extern int strop(int e,int ind); extern void def_label(int cslabel, int dlabel); -extern int backdef(void); -extern int free_register_count(int); -extern int fwdlabel(void); +extern NMTBL * def(NMTBL *n); +extern int search_struct_type(int type,char *name,int *dsp); +extern int gexpr(int e1,int use0); +extern void bexpr_u(int e1, char cond, int l1); +extern void bexpr(int e1, char cond, int l1); +extern void ret(void); +extern void replace_return_struct(int func,int left); +extern int assign_expr0(int e1,int e2,int t,int type0); +extern int assign_expr(int e1,int e2,int t,int type); +extern int binop(int op, int e1, int e2, int t1, int t2); +extern int indop(int e); +extern void fcheck(NMTBL *n); + +extern void init_free_lvar_list(); +extern void free_lvar(int disp); +extern int new_lvar(int size); +extern int new_lvar0(int sz); + +extern void gen_code_enter(char *name); +extern void gen_code_enter1(int args); +extern void gen_code_leave(char *name); +extern void gen_enter(char *name); +extern void gen_enter1(); +extern void gen_leave(int control, char *name); +extern void gen_jmp(int l); + + +extern int assign_expr0(int e1,int e2,int t,int type0) ; +extern int assign_expr(int e1,int e2,int t,int type) ; +extern void bexpr_u(int e1, char cond, int l1); +extern int binop(int op, int e1, int e2, int t1, int t2); +extern void fcheck(NMTBL *n); +extern void replace_return_struct(int func,int left) ; +extern int gexpr(int e1,int use0); +extern void bexpr_u(int e1, char cond, int l1); +extern void bexpr(int e1, char cond, int l1); +extern void ret(void); +extern void def_label(int cslabel, int dlabel); +extern NMTBL * def(NMTBL *n); +extern int indop(int e); +extern int search_struct_type(int type,char *name,int *dsp); + +/* used by mc-cod-* */ + +extern int assign_expr0(int e1,int e2,int t,int type0) ; extern void b_expr(int e1, char cond, int l1,int err); -extern void bexpr(int e1, char cond, int l1); -extern void emit_init(void); +extern int contains_p(int e,int (*p)(int)); extern void fwddef(int l); - +extern int fwdlabel(void); +extern int g_expr(int e1); +extern int g_expr0(int e1); +extern int g_expr_u(int e1); extern int is_code(NMTBL *fnptr); extern int is_function(NMTBL *fnptr); -extern int function_type(int e1,int *dots); -extern void parallel_rassign(int list); - -extern int csvalue(); -extern void cmpdimm(int e, int csreg,int label,int cond); -extern void code_enter(char *name) ; -extern void code_enter1(int args); -extern void code_init(void); -extern void code_leave(char *name) ; -extern void emit_data(int e, int t, NMTBL *n); -extern void emit_data_closing(NMTBL *n); -extern void emit_init(void); -extern void enter(char *name); -extern void enter1(); -extern int g_expr(int e1); -extern int g_expr_u(int e1); -extern void gen_comment(char *s); -extern void gen_gdecl(char *n, int gpc); -extern void gen_source(char *s); -extern int gexpr(int e1,int use); -extern void gexpr_init(void); -extern void jmp(int l); -extern void jmp_eq_label(int l); -extern void jmp_label(int l); -extern void leave(int control, char *name); -extern void opening(char *filename); -extern void closing(); -extern void ret(void); -extern void creg_destroy(); - -extern int contains(int e,int type); -extern int contains_in_list(int e,int type); -extern int contains_p(int e,int (*p)(int)); -extern int contains_in_list_p(int e,int (*p)(int)); - +extern int scalar(int t); /* end */