//Intermediate compiler codes
#define IC_END			0x00
#define IC_START		0x01
#define IC_NOP1	 		0x02
#define IC_END_EXP		0x03
#define IC_NOP2	 		0x04
#define IC_LABEL		0x05
#define IC_CALL_START		0x06
#define IC_CALL_END		0x07
#define IC_CALL_END2		0x08
#define IC_RETURN_VAL		0x09
#define IC_RETURN_VAL2		0x0A
#define IC_IMM_I64		0x0B
#define IC_IMM_F64		0x0C
#define IC_STR_CONST		0x0D
#define IC_ABS_ADDR		0x0E
#define IC_ADDR_IMPORT		0x0F
#define IC_HEAP_GLBL		0x10
#define IC_SIZEOF		0x11
#define IC_TYPE			0x12
#define IC_GET_LABEL		0x13
#define IC_RBP			0x14
#define IC_REG			0x15
#define IC_FS			0x16
#define IC_GS			0x17

#define IC_LEA			0x18
#define IC_MOV			0x19

#define IC_TO_I64		0x1A
#define IC_TO_F64		0x1B
#define IC_TO_BOOL		0x1C
#define IC_TOUPPER		0x1D
#define IC_HOLYC_TYPECAST	0x1E

#define IC_ADDR			0x1F
#define IC_COM	 		0x20
#define IC_NOT	 		0x21
#define IC_UNARY_MINUS	 	0x22

#define IC_DEREF		0x23
#define IC_DEREF_PP		0x24
#define IC_DEREF_MM		0x25
#define IC__PP			0x26
#define IC__MM			0x27
#define IC_PP_			0x28
#define IC_MM_			0x29

#define IC_SHL	 		0x2A
#define IC_SHR	 		0x2B
#define IC_SHL_CONST		0x2C
#define IC_SHR_CONST		0x2D
#define IC_POWER		0x2E

#define IC_MUL			0x2F
#define IC_DIV			0x30
#define IC_MOD			0x31

#define IC_AND	 		0x32

#define IC_OR			0x33
#define IC_XOR 			0x34

#define IC_ADD			0x35
#define IC_SUB	 		0x36
#define IC_ADD_CONST		0x37
#define IC_SUB_CONST		0x38

#define IC_EQU_EQU 		0x39
#define IC_NOT_EQU		0x3A
#define IC_LESS			0x3B
#define IC_GREATER		0x3C
#define IC_LESS_EQU		0x3D
#define IC_GREATER_EQU		0x3E
#define IC_PUSH_CMP		0x3F

#define IC_AND_AND		0x40

#define IC_OR_OR		0x41
#define IC_XOR_XOR		0x42

#define IC_COLON		0x43
#define IC_QUESTION		0x44

#define IC_ASSIGN		0x45
#define IC_ASSIGN_PP		0x46
#define IC_ASSIGN_MM		0x47

#define IC_SHL_EQU		0x48
#define IC_SHR_EQU		0x49
#define IC_MUL_EQU		0x4A
#define IC_DIV_EQU		0x4B
#define IC_MOD_EQU		0x4C
#define IC_AND_EQU		0x4D
#define IC_OR_EQU		0x4E
#define IC_XOR_EQU		0x4F
#define IC_ADD_EQU		0x50
#define IC_SUB_EQU		0x51

#define IC_JMP			0x52
#define IC_SWITCH		0x53
#define IC_NOBOUND_SWITCH	0x54

#define IC_ADD_RSP		0x55
#define IC_ADD_RSP1		0xC1
#define IC_ENTER		0x56
#define IC_PUSH_REGS		0x57
#define IC_POP_REGS		0x58
#define IC_LEAVE		0x59
#define IC_RET	 		0x5A

#define IC_CALL			0x5B
#define IC_CALL_INDIRECT	0x5C
#define IC_CALL_INDIRECT2	0x5D
#define IC_CALL_IMPORT		0x5E
#define IC_CALL_EXTERN		0x5F
#define IC_IRQ			0x60

#define IC_ASM			0x61
#define IC_CLI	 		0x62
#define IC_STI	 		0x63
#define IC_CLD	 		0x65
#define IC_STD	 		0x66
#define IC_HLT	 		0x67
#define IC_PUSHFD 		0x68
#define IC_POPFD 		0x69
#define IC_PAUSE		0x6A

#define IC_CLFLUSH		0x6B
#define IC_INVLPG		0x6C
#define IC_WBINVD		0x6F
#define IC_INVD			0x70

#define IC_IN_U8 		0x71
#define IC_IN_U16		0x72
#define IC_IN_U32		0x73
#define IC_OUT_U8		0x74
#define IC_OUT_U16		0x75
#define IC_OUT_U32		0x76

#define IC_GET_RFLAGS		0x77
#define IC_SET_RFLAGS		0x78
#define IC_GET_RAX		0x79
#define IC_SET_RAX		0x7A
#define IC_GET_RBP		0x7B
#define IC_SET_RBP		0x7C
#define IC_GET_RSP		0x7D
#define IC_SET_RSP		0x7E
#define IC_RIP			0x7F

#define IC_RDTSC		0x80

#define IC_BT			0x82
#define IC_BTS	 		0x83
#define IC_BTR	 		0x84
#define IC_BTC	 		0x85
#define IC_BEQU			0x86
#define IC_LBTS	 		0x87
#define IC_LBTR	 		0x88
#define IC_LBTC	 		0x89
#define IC_LBEQU		0x8A
#define IC_BSF			0x8B
#define IC_BSR			0x8C

#define IC_QUE_INS		0x8D
#define IC_QUE_INS_REV		0x8E
#define IC_QUE_REM		0x8F

#define IC_STRLEN		0x90
#define IC_MEMCPY		0x91

#define IC_MEMSET		0x92
#define IC_MEMSET_U16		0xC2
#define IC_MEMSET_U32		0xC3
#define IC_MEMSET_I64		0xC4

#define IC_BR_ZERO		0x93
#define IC_BR_NOT_ZERO		0x94

#define IC_BR_NOT_EQU		0x95
#define IC_BR_EQU_EQU		0x96
#define IC_BR_GREATER_EQU	0x97
#define IC_BR_LESS_EQU		0x98
#define IC_BR_GREATER		0x99
#define IC_BR_LESS		0x9A
#define IC_BR_NOT_EQU2		0x9B
#define IC_BR_EQU_EQU2		0x9C
#define IC_BR_GREATER_EQU2	0x9D
#define IC_BR_LESS_EQU2		0x9E
#define IC_BR_GREATER2		0x9F
#define IC_BR_LESS2		0xA0
#define IC_BR_AND_ZERO		0xA1
#define IC_BR_AND_NOT_ZERO	0xA2
#define IC_BR_AND_AND_ZERO	0xA3
#define IC_BR_AND_AND_NOT_ZERO	0xA4
#define IC_BR_OR_OR_ZERO	0xA5
#define IC_BR_OR_OR_NOT_ZERO	0xA6

#define IC_BR_BT		0xA7
#define IC_BR_BTS 		0xA8
#define IC_BR_BTR 		0xA9
#define IC_BR_BTC 		0xAA
#define IC_BR_LBTS 		0xAB
#define IC_BR_LBTR 		0xAC
#define IC_BR_LBTC 		0xAD
#define IC_BR_NOT_BT		0xAE
#define IC_BR_NOT_BTS 		0xAF
#define IC_BR_NOT_BTR 		0xB0
#define IC_BR_NOT_BTC 		0xB1
#define IC_BR_NOT_LBTS 		0xB2
#define IC_BR_NOT_LBTR 		0xB3
#define IC_BR_NOT_LBTC 		0xB4

#define IC_SWAP_U8		0xB5
#define IC_SWAP_U16		0xB6
#define IC_SWAP_U32		0xB7
#define IC_SWAP_I64		0xB8

#define IC_ABS_I64		0xB9
#define IC_SIGN_I64		0xBA
#define IC_MIN_I64		0xBB
#define IC_MIN_U64		0xBC
#define IC_MAX_I64		0xBD
#define IC_MAX_U64		0xBE
#define IC_LIMIT_I64		0xBF
#define IC_LIMIT_U64		0xC0

#define IC_ICS_NUM		0xC5
