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 */