X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fmips%2Fmips_emitter.h;h=a7844a0c0bd7252964e960058b4e7e77bb749da6;hb=aebc3c0c980bcc0536ffdc4cb2a545961b5a8b81;hp=7ff5e387f6afb1dfbb6ae0ed45e95babfff7d562;hpb=b2dba3350d751a784b350c19ddd839566e0eb3f0;p=libfirm diff --git a/ir/be/mips/mips_emitter.h b/ir/be/mips/mips_emitter.h index 7ff5e387f..a7844a0c0 100644 --- a/ir/be/mips/mips_emitter.h +++ b/ir/be/mips/mips_emitter.h @@ -17,32 +17,43 @@ * PURPOSE. */ -#ifndef _mips_EMITTER_H_ -#define _mips_EMITTER_H_ +/** + * @file + * @brief declarations for the mips assembler emitter + * @author Matthias Braun, Mehdi + * @version $Id$ + */ +#ifndef FIRM_BE_MIPS_MIPS_EMITTER_H +#define FIRM_BE_MIPS_MIPS_EMITTER_H -#include "irargs_t.h" // this also inlucdes #include "irnode.h" -#include "debug.h" -#include "../bearch_t.h" +#include "../bearch.h" +#include "../beemitter.h" #include "bearch_mips_t.h" -typedef struct _mips_emit_env_t { - FILE *out; - const arch_env_t *arch_env; +typedef struct mips_emit_env_t mips_emit_env_t; + +struct mips_emit_env_t { + be_emit_env_t *emit; + const arch_env_t *arch_env; const mips_code_gen_t *cg; - DEBUG_ONLY(firm_dbg_module_t *mod;) -} mips_emit_env_t; + mips_isa_t *isa; +}; -const lc_arg_env_t *mips_get_arg_env(void); +void mips_emit_source_register(mips_emit_env_t *env, const ir_node *node, int pos); +void mips_emit_dest_register(mips_emit_env_t *env, const ir_node *node, int pos); +void mips_emit_immediate(mips_emit_env_t *env, const ir_node *node); +void mips_emit_jump_target(mips_emit_env_t *env, const ir_node *node); +void mips_emit_jump_target_proj(mips_emit_env_t *env, const ir_node *node, + int pn); void equalize_dest_src(FILE *F, ir_node *n); int get_mips_reg_nr(ir_node *irn, int posi, int in_out); const char *get_mips_in_reg_name(ir_node *irn, int pos); -void mips_gen_routine(FILE *F, ir_graph *irg, const mips_code_gen_t *cg); void mips_register_emitters(void); ir_node *mips_get_jump_block(const ir_node* node, int projn); @@ -51,4 +62,6 @@ const char* mips_get_block_label(const ir_node* block); /** returns the label for the jumptable */ const char* mips_get_jumptbl_label(const ir_node* switchjmp); -#endif /* _mips_EMITTER_H_ */ +void mips_gen_routine(mips_code_gen_t *cg, ir_graph *irg); + +#endif