46 lines
787 B
C
46 lines
787 B
C
#ifndef MIE_INSTR_H_
|
|
#define MIE_INSTR_H_
|
|
|
|
#include <mie/value.h>
|
|
|
|
#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_BR_IF,
|
|
MIE_INSTR_MSG,
|
|
MIE_INSTR_CMP_EQ,
|
|
MIE_INSTR_CMP_NEQ,
|
|
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
|