21 #define HEX_MAX_OPERANDS 6
22 #define HEX_PARSE_BITS_MASK 0xc000
24 #define MAX_CONST_EXT 512
25 #define HEXAGON_STATE_PKTS 8
82 char mnem_postfix[24];
107 char mnem_infix[128];
561 #define BIT_MASK(len) (BIT(len) - 1)
562 #define BF_MASK(start, len) (BIT_MASK(len) << (start))
563 #define BF_PREP(x, start, len) (((x)&BIT_MASK(len)) << (start))
564 #define BF_GET(y, start, len) (((y) >> (start)) & BIT_MASK(len))
565 #define BF_GETB(y, start, end) (BF_GET((y), (start), (end) - (start) + 1)
static RzILOpEffect * cls(cs_insn *insn)
void hexagon_disasm_0xc(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
char * hex_get_double_regs(int opcode_reg, bool get_alias)
int hexagon_disasm_instruction(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, HexPkt *pkt)
void hexagon_disasm_duplex_0x5(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
@ HEX_REG_CTR_REGS64_C19_18
@ HEX_REG_CTR_REGS64_C7_6
@ HEX_REG_CTR_REGS64_C9_8
@ HEX_REG_CTR_REGS64_C15_14
@ HEX_REG_CTR_REGS64_C31_30
@ HEX_REG_CTR_REGS64_C1_0
@ HEX_REG_CTR_REGS64_C5_4
@ HEX_REG_CTR_REGS64_C3_2
@ HEX_REG_CTR_REGS64_C11_10
@ HEX_REG_CTR_REGS64_C13_12
@ HEX_REG_CTR_REGS64_C17_16
void hexagon_disasm_duplex_0xa(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
@ HEX_REG_DOUBLE_REGS_R13_12
@ HEX_REG_DOUBLE_REGS_R11_10
@ HEX_REG_DOUBLE_REGS_R27_26
@ HEX_REG_DOUBLE_REGS_R15_14
@ HEX_REG_DOUBLE_REGS_R7_6
@ HEX_REG_DOUBLE_REGS_R31_30
@ HEX_REG_DOUBLE_REGS_R29_28
@ HEX_REG_DOUBLE_REGS_R25_24
@ HEX_REG_DOUBLE_REGS_R3_2
@ HEX_REG_DOUBLE_REGS_R21_20
@ HEX_REG_DOUBLE_REGS_R19_18
@ HEX_REG_DOUBLE_REGS_R17_16
@ HEX_REG_DOUBLE_REGS_R23_22
@ HEX_REG_DOUBLE_REGS_R9_8
@ HEX_REG_DOUBLE_REGS_R5_4
@ HEX_REG_DOUBLE_REGS_R1_0
RZ_API RZ_BORROW RzConfig * hexagon_get_config()
void hexagon_disasm_duplex_0x8(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_0x7(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
char * hex_get_reg_in_class(HexRegClass cls, int opcode_reg, bool get_alias)
void hexagon_disasm_0xb(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_0x4(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
char * hex_get_int_regs(int opcode_reg, bool get_alias)
#define HEXAGON_STATE_PKTS
HEX_GENERAL_DOUBLE_LOW8_REGS
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R1_0
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R7_6
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R17_16
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R19_18
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R23_22
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R5_4
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R21_20
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R3_2
void hexagon_disasm_duplex_0xb(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
@ HEX_REG_GUEST_REGS64_G27_26
@ HEX_REG_GUEST_REGS64_G1_0
@ HEX_REG_GUEST_REGS64_G3_2
@ HEX_REG_GUEST_REGS64_G23_22
@ HEX_REG_GUEST_REGS64_G31_30
@ HEX_REG_GUEST_REGS64_G13_12
@ HEX_REG_GUEST_REGS64_G25_24
@ HEX_REG_GUEST_REGS64_G29_28
@ HEX_REG_GUEST_REGS64_G21_20
@ HEX_REG_GUEST_REGS64_G15_14
@ HEX_REG_GUEST_REGS64_G7_6
@ HEX_REG_GUEST_REGS64_G19_18
@ HEX_REG_GUEST_REGS64_G17_16
@ HEX_REG_GUEST_REGS64_G9_8
@ HEX_REG_GUEST_REGS64_G5_4
@ HEX_REG_GUEST_REGS64_G11_10
@ HEX_REG_CLASS_INT_REGS_LOW8
@ HEX_REG_CLASS_GUEST_REGS
@ HEX_REG_CLASS_GUEST_REGS64
@ HEX_REG_CLASS_DOUBLE_REGS
@ HEX_REG_CLASS_SYS_REGS64
@ HEX_REG_CLASS_CTR_REGS64
@ HEX_REG_CLASS_PRED_REGS
@ HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS
@ HEX_REG_CLASS_GENERAL_SUB_REGS
void hexagon_disasm_duplex_0x9(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_0x3(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_duplex_0xe(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
char * hex_get_ctr_regs(int opcode_reg, bool get_alias)
void hexagon_disasm_0x9(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_duplex_0xc(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
char * hex_get_hvx_vr(int opcode_reg, bool get_alias)
@ HEX_REG_GENERAL_SUB_REGS_R22
@ HEX_REG_GENERAL_SUB_REGS_R1
@ HEX_REG_GENERAL_SUB_REGS_R7
@ HEX_REG_GENERAL_SUB_REGS_R0
@ HEX_REG_GENERAL_SUB_REGS_R16
@ HEX_REG_GENERAL_SUB_REGS_R20
@ HEX_REG_GENERAL_SUB_REGS_R6
@ HEX_REG_GENERAL_SUB_REGS_R23
@ HEX_REG_GENERAL_SUB_REGS_R5
@ HEX_REG_GENERAL_SUB_REGS_R18
@ HEX_REG_GENERAL_SUB_REGS_R4
@ HEX_REG_GENERAL_SUB_REGS_R21
@ HEX_REG_GENERAL_SUB_REGS_R19
@ HEX_REG_GENERAL_SUB_REGS_R2
@ HEX_REG_GENERAL_SUB_REGS_R3
@ HEX_REG_GENERAL_SUB_REGS_R17
void hexagon_disasm_duplex_0x4(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_0x6(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
char * hex_get_ctr_regs64(int opcode_reg, bool get_alias)
void hexagon_disasm_0x0(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_0xd(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
char * hex_get_pred_regs(int opcode_reg, bool get_alias)
void hexagon_disasm_duplex_0x3(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_0x5(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_duplex_0x1(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
char * hex_get_int_regs_low8(int opcode_reg, bool get_alias)
char * hex_get_hvx_qr(int opcode_reg, bool get_alias)
char * hex_get_hvx_vqr(int opcode_reg, bool get_alias)
void hexagon_disasm_0x1(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_duplex_0x2(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
RZ_API void hex_extend_op(HexState *state, RZ_INOUT HexOp *op, const bool set_new_extender, const ut32 addr)
Applies the constant extender to the immediate value in op.
void hexagon_disasm_duplex_0x6(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_0xe(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_duplex_0x0(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_0xa(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
char * hex_get_mod_regs(int opcode_reg, bool get_alias)
char * hex_get_guest_regs64(int opcode_reg, bool get_alias)
char * hex_get_sys_regs(int opcode_reg, bool get_alias)
void hexagon_disasm_duplex_0xd(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
int resolve_n_register(const int reg_num, const ut32 addr, const HexPkt *p)
Resolves the 3 bit value of an Nt.new reg to the general register of the producer.
char * hex_get_general_double_low8_regs(int opcode_reg, bool get_alias)
void hexagon_disasm_duplex_0x7(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
void hexagon_disasm_0x2(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
char * hex_get_guest_regs(int opcode_reg, bool get_alias)
@ HEX_REG_INT_REGS_LOW8_R7
@ HEX_REG_INT_REGS_LOW8_R3
@ HEX_REG_INT_REGS_LOW8_R0
@ HEX_REG_INT_REGS_LOW8_R5
@ HEX_REG_INT_REGS_LOW8_R2
@ HEX_REG_INT_REGS_LOW8_R1
@ HEX_REG_INT_REGS_LOW8_R4
@ HEX_REG_INT_REGS_LOW8_R6
char * hex_get_sys_regs64(int opcode_reg, bool get_alias)
@ HEX_REG_SYS_REGS64_S1_0
@ HEX_REG_SYS_REGS64_S73_72
@ HEX_REG_SYS_REGS64_S21_20
@ HEX_REG_SYS_REGS64_S37_36
@ HEX_REG_SYS_REGS64_S47_46
@ HEX_REG_SYS_REGS64_S45_44
@ HEX_REG_SYS_REGS64_S63_62
@ HEX_REG_SYS_REGS64_S59_58
@ HEX_REG_SYS_REGS64_S57_56
@ HEX_REG_SYS_REGS64_S61_60
@ HEX_REG_SYS_REGS64_S71_70
@ HEX_REG_SYS_REGS64_S29_28
@ HEX_REG_SYS_REGS64_S15_14
@ HEX_REG_SYS_REGS64_S3_2
@ HEX_REG_SYS_REGS64_S17_16
@ HEX_REG_SYS_REGS64_S39_38
@ HEX_REG_SYS_REGS64_S35_34
@ HEX_REG_SYS_REGS64_S67_66
@ HEX_REG_SYS_REGS64_S77_76
@ HEX_REG_SYS_REGS64_S11_10
@ HEX_REG_SYS_REGS64_S27_26
@ HEX_REG_SYS_REGS64_S19_18
@ HEX_REG_SYS_REGS64_S79_78
@ HEX_REG_SYS_REGS64_S43_42
@ HEX_REG_SYS_REGS64_S75_74
@ HEX_REG_SYS_REGS64_S33_32
@ HEX_REG_SYS_REGS64_S23_22
@ HEX_REG_SYS_REGS64_S53_52
@ HEX_REG_SYS_REGS64_S41_40
@ HEX_REG_SYS_REGS64_S31_30
@ HEX_REG_SYS_REGS64_S49_48
@ HEX_REG_SYS_REGS64_S69_68
@ HEX_REG_SYS_REGS64_S5_4
@ HEX_REG_SYS_REGS64_S51_50
@ HEX_REG_SYS_REGS64_S13_12
@ HEX_REG_SYS_REGS64_S25_24
@ HEX_REG_SYS_REGS64_S7_6
@ HEX_REG_SYS_REGS64_S9_8
@ HEX_REG_SYS_REGS64_S55_54
@ HEX_REG_SYS_REGS64_S65_64
char * hex_get_hvx_wr(int opcode_reg, bool get_alias)
char * hex_get_general_sub_regs(int opcode_reg, bool get_alias)
void hexagon_disasm_0x8(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
Buffer packets for reversed instructions.
RzPVector * token_patterns
PVector with token patterns. Priority ordered.
ut64(WINAPI *w32_GetEnabledXStateFeatures)()