view mc-code.h @ 134:7a55819b0482

*** empty log message ***
author kono
date Sat, 03 May 2003 15:27:00 +0900
parents 7d436c08e949
children 9fb09db54436
line wrap: on
line source

/* function required by mc-codegen.c 
     mc-code-*.c have to provied these
 */

extern int size_of_int;
extern int size_of_float;
extern int size_of_double;
extern int size_of_longlong;
extern int endian;
extern int MAX_REGISTER; 
extern int MAX_REGISTGER_VAR;
extern int MAX_FREGISTER;

extern int MAX_INPUT_REGISTER_VAR;
extern int MAX_CODE_INPUT_REGISTER_VAR;
extern int MAX_INPUT_DREGISTER_VAR;
extern int MAX_CODE_INPUT_DREGISTER_VAR;

#define REG_LVAR_OFFSET 2

extern void code_init();
extern void gexpr_code_init(void);
extern int register_var(int r);
extern int get_register_var(NMTBL *n);
extern int get_fregister_var(NMTBL *n);
extern int get_input_register_var(int,NMTBL *,int);
extern int get_input_fregister_var(int,NMTBL *,int);
extern void emit_push();
extern int emit_pop(int type);
extern void gexpr_code_init();
extern int  code_csvalue();
extern void code_cmpdimm(int e, int csreg);
extern void code_gvar(int e1,int reg);
extern void code_rgvar(int e1,int reg);
extern void code_crgvar(int e1,int reg);
extern void code_lvar(int e2,int reg);
extern void code_register(int e2,int reg);
extern void code_rlvar(int e2,int reg);
extern void code_crlvar(int e2,int reg);
extern void code_fname(NMTBL *n,int reg);
extern void code_const(int e2,int reg);
extern void code_neg(int reg);
extern void code_not(int reg);
extern void code_lnot(int reg);
extern void code_preinc(int e1,int e2,int reg);
extern void code_postinc(int e1,int e2,int reg);
extern void code_cpostinc(int e1,int e2,int reg);
extern void code_cpreinc(int e1,int e2,int reg);
extern void code_cpostdec(int e1,int e2,int reg);
extern void code_cpredec(int e1,int e2,int reg);
extern void code_return(int reg);
extern void code_environment(int reg);
extern void code_bool(int e1);
extern char *code_gt(int cond);
extern char *code_ugt(int cond);
extern char *code_ge(int cond);
extern char *code_uge(int cond);
extern char *code_eq(int cond);
extern void code_cmp_crgvar(int e1);
extern void code_cmp_crlvar(int e1);
extern void code_cmp_rgvar(int e1);
extern void code_cmp_rlvar(int e1);
extern void code_cmp_register(int e2);
extern void code_string(int e1,int reg);
extern void emit_copy(int from,int  to,int length,int offset,int value,int det);
extern int function(int e1);
extern void code_frame_pointer(int e3);
extern void code_fix_frame_pointer(int disp_offset);
extern void code_jmp(char *s);
extern void code_indirect_jmp(int e2);
extern int rindirect(int e1);
extern void code_assign_gvar(int e2,int reg,int byte);
extern void code_assign_lvar(int e2,int reg,int byte);
extern void code_assign_register(int e2,int byte,int reg);
extern void code_assign(int e2,int byte,int reg);
extern void code_register_assop(int e2,int op,int byte);
extern void code_assop(int op,int byte);
extern void tosop(int op,int oreg);
extern void code_opening(char *filename);
extern void code_closing();
extern void rexpr(int e1, int l1, char *s,int t);
extern void drexpr(int e1, int e2,int l1, int op);
extern void jcond(int l, char cond);
extern void jmp(int l);
extern void code_set_fixed_creg(int mode,int type);
extern void code_set_return_register(int mode);
extern void text_mode(void);
extern void global_table(void);
extern void code_label(int labelno);


/* floating point part */

extern int dpop_register();
extern int emit_dpop(int);
extern void code_fregister(int e2,int reg);
extern void code_cmp_fregister(int);
extern void code_cmp_drgvar(int);
extern void code_cmp_drlvar(int);
extern void code_dassign(int,int,int);
extern void code_dassign_gvar(int,int,int);
extern void code_dassign_lvar(int,int,int);
extern void code_dassign_fregister(int e2,int d,int reg);
extern void code_dconst(int,int);
extern void code_fconst(int,int);
extern void code_dneg(int);
extern void code_fneg(int);
extern void code_drgvar(int,int,int);
extern void code_drlvar(int,int,int);
extern void dtosop(int,int);
extern void emit_dpop_free(int);
extern void emit_dpush(int);
extern void code_i2d(int,int);
extern void code_d2i(int,int);
extern void code_u2d(int,int);
extern void code_d2u(int,int);
extern void code_d2f(int freg);
extern void code_f2d(int freg);
extern void code_f2i(int freg,int creg);
extern void code_f2u(int freg,int creg);
extern void code_i2f(int creg,int freg);
extern void code_u2f(int creg,int freg);


extern void code_dpreinc(int e1,int e2,int d,int reg);
extern void code_dpostinc(int e1,int e2,int d,int reg);
extern void code_dassop(int op,int d);

extern void code_arg_register();

extern int get_register(void);
extern int get_fregister(void);
extern void free_register(int i) ;
extern void free_fregister(int i) ;
extern int pop_register(void);
extern void emit_pop_free(int xreg);

/* */