//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_GLOBAL						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_RFLAGS_GET 					0x77
#define IC_RFLAGS_SET 					0x78
#define IC_RAX_GET							0x79
#define IC_RAX_SET							0x7A
#define IC_RBP_GET							0x7B
#define IC_RBP_SET							0x7C
#define IC_RSP_GET							0x7D
#define IC_RSP_SET							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_QUEUE_INSERT 				0x8D
#define IC_QUEUE_INSERT_REV 						0x8E
#define IC_QUEUE_REMOVE 				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
