95 lines
1.4 KiB
C
95 lines
1.4 KiB
C
#ifndef IVY_OPCODE_H_
|
|
#define IVY_OPCODE_H_
|
|
|
|
enum ivy_instr_id {
|
|
IVY_INSTR_NONE = 0,
|
|
IVY_INSTR_LDR,
|
|
IVY_INSTR_STR,
|
|
IVY_INSTR_PUSH,
|
|
IVY_INSTR_POP,
|
|
IVY_INSTR_MSG,
|
|
IVY_INSTR_ADD,
|
|
IVY_INSTR_SUB,
|
|
IVY_INSTR_MUL,
|
|
IVY_INSTR_DIV,
|
|
IVY_INSTR_C_EQ,
|
|
IVY_INSTR_C_NE,
|
|
IVY_INSTR_C_LT,
|
|
IVY_INSTR_C_LE,
|
|
IVY_INSTR_C_GT,
|
|
IVY_INSTR_C_GE,
|
|
IVY_INSTR_BR,
|
|
IVY_INSTR_BR_T,
|
|
IVY_INSTR_BR_F,
|
|
IVY_INSTR_OB_C,
|
|
IVY_INSTR_OB_E,
|
|
IVY_INSTR_LAM_C,
|
|
IVY_INSTR_IT_G,
|
|
IVY_INSTR_IT_N,
|
|
IVY_INSTR_IT_V,
|
|
IVY_INSTR_STK_A,
|
|
IVY_INSTR_STK_F,
|
|
IVY_INSTR_RET,
|
|
IVY_INSTR_RET_N,
|
|
};
|
|
|
|
enum ivy_opcode {
|
|
IVY_OPC_NONE = 0,
|
|
|
|
IVY_OPC_LDR_SP_REG,
|
|
IVY_OPC_LDR_SP_CONST,
|
|
IVY_OPC_LDR_BP_REG,
|
|
IVY_OPC_LDR_BP_CONST,
|
|
IVY_OPC_LDR_SELF_REG,
|
|
IVY_OPC_LDR_SELF_CONST,
|
|
IVY_OPC_LDR_POOL_REG,
|
|
IVY_OPC_LDR_POOL_CONST,
|
|
IVY_OPC_LDR_CONST,
|
|
|
|
IVY_OPC_STR_SP_REG,
|
|
IVY_OPC_STR_SP_CONST,
|
|
IVY_OPC_STR_BP_REG,
|
|
IVY_OPC_STR_BP_CONST,
|
|
IVY_OPC_STR_SELF_REG,
|
|
IVY_OPC_STR_SELF_CONST,
|
|
|
|
IVY_OPC_PUSH_REG,
|
|
IVY_OPC_PUSH_CONST,
|
|
IVY_OPC_POP,
|
|
|
|
IVY_OPC_MSG_REG,
|
|
IVY_OPC_MSG_CONST,
|
|
|
|
IVY_OPC_ADD,
|
|
IVY_OPC_SUB,
|
|
IVY_OPC_MUL,
|
|
IVY_OPC_DIV,
|
|
|
|
IVY_OPC_C_EQ,
|
|
IVY_OPC_C_NE,
|
|
IVY_OPC_C_LT,
|
|
IVY_OPC_C_LE,
|
|
IVY_OPC_C_GT,
|
|
IVY_OPC_C_GE,
|
|
|
|
IVY_OPC_BR,
|
|
IVY_OPC_BR_T,
|
|
IVY_OPC_BR_F,
|
|
|
|
IVY_OPC_OB_C_REG,
|
|
IVY_OPC_OB_C_CONST,
|
|
IVY_OPC_OB_E,
|
|
|
|
IVY_OPC_LAM_C_REG,
|
|
IVY_OPC_LAM_C_CONST,
|
|
|
|
IVY_OPC_IT_G,
|
|
IVY_OPC_IT_N,
|
|
IVY_OPC_IT_V,
|
|
|
|
IVY_OPC_RET,
|
|
IVY_OPC_RET_N,
|
|
};
|
|
|
|
#endif
|