#ifndef MIE_INSTR_H_ #define MIE_INSTR_H_ #include #define MIE_INSTR(p) ((struct mie_instr *)(p)) enum mie_instr_type { MIE_INSTR_NONE = 0, MIE_INSTR_RET, MIE_INSTR_ADD, MIE_INSTR_SUB, MIE_INSTR_MUL, MIE_INSTR_DIV, MIE_INSTR_LOAD, MIE_INSTR_STORE, MIE_INSTR_ALLOCA, MIE_INSTR_SWITCH, MIE_INSTR_BR, MIE_INSTR_MSG, MIE_INSTR_CMP_EQ, MIE_INSTR_CMP_LT, MIE_INSTR_CMP_GT, MIE_INSTR_CMP_LEQ, MIE_INSTR_CMP_GEQ, MIE_INSTR_GETELEMENTPTR, MIE_INSTR_SETELEMENTPTR, MIE_INSTR_PHI, }; struct mie_instr { struct mie_value i_base; enum mie_instr_type i_type; }; struct mie_ret { struct mie_instr r_base; struct mie_value *r_val; }; extern void mie_instr_init(struct mie_instr *instr, enum mie_instr_type type); #endif