Rizin
unix-like reverse engineering framework and cli tools
hexagon.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 2021 Rot127 <unisono@quyllur.org>
2 // SPDX-License-Identifier: LGPL-3.0-only
3 
4 // LLVM commit: 96e220e6886868d6663d966ecc396befffc355e7
5 // LLVM commit date: 2022-01-05 11:01:52 +0000 (ISO 8601 format)
6 // Date of code generation: 2022-04-17 16:07:17+02:00
7 //========================================
8 // The following code is generated.
9 // Do not edit. Repository of code generator:
10 // https://github.com/rizinorg/rz-hexagon
11 
12 #ifndef HEXAGON_H
13 #define HEXAGON_H
14 
15 #include <rz_asm.h>
16 #include <rz_config.h>
17 #include <rz_list.h>
18 #include <rz_types.h>
19 #include <rz_util/rz_print.h>
20 
21 #define HEX_MAX_OPERANDS 6
22 #define HEX_PARSE_BITS_MASK 0xc000
23 
24 #define MAX_CONST_EXT 512
25 #define HEXAGON_STATE_PKTS 8
26 
27 // Predicates - declare the predicate state
28 typedef enum {
29  HEX_NOPRED, // no conditional execution
30  HEX_PRED_TRUE, // if (Pd) ...
31  HEX_PRED_FALSE, // if (!Pd) ...
32  HEX_PRED_NEW, // if (Pd.new) or if (!Pd.new)
33 } HexPred;
34 
35 // TODO NOT IN USE
36 // Pre/post-fixes, different types
37 typedef enum {
38  HEX_PF_RND = 1, // :rnd
39  HEX_PF_CRND = 1 << 1, // :crnd
40  HEX_PF_RAW = 1 << 2, // :raw
41  HEX_PF_CHOP = 1 << 3, // :chop
42  HEX_PF_SAT = 1 << 4, // :sat
43  HEX_PF_HI = 1 << 5, // :hi
44  HEX_PF_LO = 1 << 6, // :lo
45  HEX_PF_LSH1 = 1 << 7, // :<<1
46  HEX_PF_LSH16 = 1 << 8, // :<<16
47  HEX_PF_RSH1 = 1 << 9, // :>>1
48  HEX_PF_NEG = 1 << 10, // :neg
49  HEX_PF_POS = 1 << 11, // :pos
50  HEX_PF_SCALE = 1 << 12, // :scale, for FMA instructions
51  HEX_PF_DEPRECATED = 1 << 15, // :deprecated
52 } HexPf;
53 
54 typedef enum {
57  // TODO It might be useful to differ between control, HVX, guest regs etc. Also see HexOp
58 } HexOpType;
59 
60 // Attributes - .H/.L, const extender
61 typedef enum {
62  HEX_OP_CONST_EXT = 1 << 0, // Constant extender marker for Immediate
63  HEX_OP_REG_HI = 1 << 1, // Rn.H marker
64  HEX_OP_REG_LO = 1 << 2, // Rn.L marker
65  HEX_OP_REG_PAIR = 1 << 3, // Is this a register pair?
66  HEX_OP_REG_QUADRUPLE = 1 << 4, // Is it a register with 4 sub registers?
67  HEX_OP_REG_OUT = 1 << 5, // Is the register the destination register?
68  HEX_OP_IMM_SCALED = 1 << 6 // Is the immediate shifted?
70 
71 typedef enum {
73  HEX_LOOP_0 = 1, // Is packet of loop0
74  HEX_LOOP_1 = 1 << 1, // Is packet of loop1
75  HEX_LOOP_01 = 1 << 2 // Belongs to loop 0 and 1
77 
78 typedef struct {
79  bool first_insn;
80  bool last_insn;
81  char mnem_prefix[16]; // Package indicator
82  char mnem_postfix[24]; // for ":endloop" string.
83 } HexPktInfo;
84 
85 typedef struct {
87  union {
88  ut8 reg; // + additional Hi or Lo selector // + additional shift // + additional :brev //
90  } op;
93 } HexOp;
94 
95 typedef struct {
100  HexPred pred; // Predicate type
101  bool duplex; // is part of duplex container?
102  bool compound; // is part of compound instruction?
103  int shift; // Optional shift left is it true?
104  HexPktInfo pkt_info; // Packet related information. First/last instr., prefix and postfix for mnemonic etc.
107  char mnem_infix[128]; // The mnemonic without the pre- and postfix.
108  char mnem[192]; // Instruction mnemonic
109  ut32 addr; // Memory address the instruction is located.
112 } HexInsn;
113 
114 typedef struct {
115  RzList *insn; // List of instructions.
116  bool last_instr_present; // Has an instruction the parsing bits 0b11 set (is last instruction).
117  bool is_valid; // Is it a valid packet? Do we know which instruction is the first?
118  ut32 hw_loop0_addr; // Start address of hardware loop 0
119  ut32 hw_loop1_addr; // Start address of hardware loop 1
120  ut64 last_access; // Last time accessed in milliseconds
121  ut32 pkt_addr; // Address of the packet. Equals the address of the first instruction.
122  bool is_eob; // Is this packet the end of a code block? E.g. contains unconditional jmp.
123 } HexPkt;
124 
125 typedef struct {
126  ut32 addr; // Address of the instruction which gets the extender applied.
127  ut32 const_ext; // The constant extender value.
128 } HexConstExt;
129 
134 typedef struct {
135  HexPkt pkts[HEXAGON_STATE_PKTS]; // buffered instructions
136  RzList *const_ext_l; // Constant extender values.
137  RzAsm rz_asm; // Copy of RzAsm struct. Holds certain flags of interesed for disassembly formatting.
139  RzPVector /* RzAsmTokenPattern* */ *token_patterns;
140 } HexState;
141 
142 typedef enum {
161 
162 typedef enum {
167  HEX_REG_CTR_REGS_C4 = 4, // p3:0
173  HEX_REG_CTR_REGS_C10 = 10, // ugp
175  HEX_REG_CTR_REGS_C12 = 12, // cs0
176  HEX_REG_CTR_REGS_C13 = 13, // cs1
177  HEX_REG_CTR_REGS_C14 = 14, // upcyclelo
178  HEX_REG_CTR_REGS_C15 = 15, // upcyclehi
179  HEX_REG_CTR_REGS_C16 = 16, // framelimit
180  HEX_REG_CTR_REGS_C17 = 17, // framekey
181  HEX_REG_CTR_REGS_C18 = 18, // pktcountlo
182  HEX_REG_CTR_REGS_C19 = 19, // pktcounthi
183  HEX_REG_CTR_REGS_C30 = 30, // utimerlo
184  HEX_REG_CTR_REGS_C31 = 31, // utimerhi
185 } HEX_CTR_REGS; // CtrRegs
186 
187 typedef enum {
188  HEX_REG_CTR_REGS64_C1_0 = 0, // lc0:sa0
189  HEX_REG_CTR_REGS64_C3_2 = 2, // lc1:sa1
195  HEX_REG_CTR_REGS64_C15_14 = 14, // upcycle
197  HEX_REG_CTR_REGS64_C19_18 = 18, // pktcount
199 } HEX_CTR_REGS64; // CtrRegs64
200 
201 typedef enum {
218 } HEX_DOUBLE_REGS; // DoubleRegs
219 
220 typedef enum {
229 } HEX_GENERAL_DOUBLE_LOW8_REGS; // GeneralDoubleLow8Regs
230 
231 typedef enum {
248 } HEX_GENERAL_SUB_REGS; // GeneralSubRegs
249 
250 typedef enum {
254  HEX_REG_GUEST_REGS_G3 = 3, // gbadva
267  HEX_REG_GUEST_REGS_G16 = 16, // gpmucnt4
268  HEX_REG_GUEST_REGS_G17 = 17, // gpmucnt5
269  HEX_REG_GUEST_REGS_G18 = 18, // gpmucnt6
270  HEX_REG_GUEST_REGS_G19 = 19, // gpmucnt7
275  HEX_REG_GUEST_REGS_G24 = 24, // gpcyclelo
276  HEX_REG_GUEST_REGS_G25 = 25, // gpcyclehi
277  HEX_REG_GUEST_REGS_G26 = 26, // gpmucnt0
278  HEX_REG_GUEST_REGS_G27 = 27, // gpmucnt1
279  HEX_REG_GUEST_REGS_G28 = 28, // gpmucnt2
280  HEX_REG_GUEST_REGS_G29 = 29, // gpmucnt3
283 } HEX_GUEST_REGS; // GuestRegs
284 
285 typedef enum {
302 } HEX_GUEST_REGS64; // GuestRegs64
303 
304 typedef enum {
309 } HEX_HVX_QR; // HvxQR
310 
311 typedef enum {
320 } HEX_HVX_VQR; // HvxVQR
321 
322 typedef enum {
355 } HEX_HVX_VR; // HvxVR
356 
357 typedef enum {
374 } HEX_HVX_WR; // HvxWR
375 
376 typedef enum {
409 } HEX_INT_REGS; // IntRegs
410 
411 typedef enum {
420 } HEX_INT_REGS_LOW8; // IntRegsLow8
421 
422 typedef enum {
425 } HEX_MOD_REGS; // ModRegs
426 
427 typedef enum {
432 } HEX_PRED_REGS; // PredRegs
433 
434 typedef enum {
435  HEX_REG_SYS_REGS_S0 = 0, // sgp0
436  HEX_REG_SYS_REGS_S1 = 1, // sgp1
437  HEX_REG_SYS_REGS_S2 = 2, // stid
439  HEX_REG_SYS_REGS_S4 = 4, // badva0
440  HEX_REG_SYS_REGS_S5 = 5, // badva1
443  HEX_REG_SYS_REGS_S8 = 8, // htid
444  HEX_REG_SYS_REGS_S9 = 9, // badva
445  HEX_REG_SYS_REGS_S10 = 10, // imask
451  HEX_REG_SYS_REGS_S16 = 16, // evb
452  HEX_REG_SYS_REGS_S17 = 17, // modectl
453  HEX_REG_SYS_REGS_S18 = 18, // syscfg
454  HEX_REG_SYS_REGS_S19 = 19, // s19
455  HEX_REG_SYS_REGS_S20 = 20, // s20
456  HEX_REG_SYS_REGS_S21 = 21, // vid
457  HEX_REG_SYS_REGS_S22 = 22, // s22
462  HEX_REG_SYS_REGS_S27 = 27, // cfgbase
463  HEX_REG_SYS_REGS_S28 = 28, // diag
464  HEX_REG_SYS_REGS_S29 = 29, // rev
465  HEX_REG_SYS_REGS_S30 = 30, // pcyclelo
466  HEX_REG_SYS_REGS_S31 = 31, // pcyclehi
467  HEX_REG_SYS_REGS_S32 = 32, // isdbst
468  HEX_REG_SYS_REGS_S33 = 33, // isdbcfg0
469  HEX_REG_SYS_REGS_S34 = 34, // isdbcfg1
471  HEX_REG_SYS_REGS_S36 = 36, // brkptpc0
472  HEX_REG_SYS_REGS_S37 = 37, // brkptcfg0
473  HEX_REG_SYS_REGS_S38 = 38, // brkptpc1
474  HEX_REG_SYS_REGS_S39 = 39, // brkptcfg1
475  HEX_REG_SYS_REGS_S40 = 40, // isdbmbxin
476  HEX_REG_SYS_REGS_S41 = 41, // isdbmbxout
477  HEX_REG_SYS_REGS_S42 = 42, // isdben
478  HEX_REG_SYS_REGS_S43 = 43, // isdbgpr
483  HEX_REG_SYS_REGS_S48 = 48, // pmucnt0
484  HEX_REG_SYS_REGS_S49 = 49, // pmucnt1
485  HEX_REG_SYS_REGS_S50 = 50, // pmucnt2
486  HEX_REG_SYS_REGS_S51 = 51, // pmucnt3
487  HEX_REG_SYS_REGS_S52 = 52, // pmuevtcfg
488  HEX_REG_SYS_REGS_S53 = 53, // pmucfg
516 } HEX_SYS_REGS; // SysRegs
517 
518 typedef enum {
519  HEX_REG_SYS_REGS64_S1_0 = 0, // sgp1:0
521  HEX_REG_SYS_REGS64_S5_4 = 4, // badva1:0
522  HEX_REG_SYS_REGS64_S7_6 = 6, // ccr:ssr
559 } HEX_SYS_REGS64; // SysRegs64
560 
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)
566 
567 char *hex_get_ctr_regs(int opcode_reg, bool get_alias);
568 char *hex_get_ctr_regs64(int opcode_reg, bool get_alias);
569 char *hex_get_double_regs(int opcode_reg, bool get_alias);
570 char *hex_get_general_double_low8_regs(int opcode_reg, bool get_alias);
571 char *hex_get_general_sub_regs(int opcode_reg, bool get_alias);
572 char *hex_get_guest_regs(int opcode_reg, bool get_alias);
573 char *hex_get_guest_regs64(int opcode_reg, bool get_alias);
574 char *hex_get_hvx_qr(int opcode_reg, bool get_alias);
575 char *hex_get_hvx_vqr(int opcode_reg, bool get_alias);
576 char *hex_get_hvx_vr(int opcode_reg, bool get_alias);
577 char *hex_get_hvx_wr(int opcode_reg, bool get_alias);
578 char *hex_get_int_regs(int opcode_reg, bool get_alias);
579 char *hex_get_int_regs_low8(int opcode_reg, bool get_alias);
580 char *hex_get_mod_regs(int opcode_reg, bool get_alias);
581 char *hex_get_pred_regs(int opcode_reg, bool get_alias);
582 char *hex_get_sys_regs(int opcode_reg, bool get_alias);
583 char *hex_get_sys_regs64(int opcode_reg, bool get_alias);
584 char *hex_get_reg_in_class(HexRegClass cls, int opcode_reg, bool get_alias);
585 
587 RZ_API void hex_extend_op(HexState *state, RZ_INOUT HexOp *op, const bool set_new_extender, const ut32 addr);
588 int resolve_n_register(const int reg_num, const ut32 addr, const HexPkt *p);
590 void hexagon_disasm_0x0(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
591 void hexagon_disasm_0x1(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
592 void hexagon_disasm_0x2(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
593 void hexagon_disasm_0x3(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
594 void hexagon_disasm_0x4(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
595 void hexagon_disasm_0x5(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
596 void hexagon_disasm_0x6(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
597 void hexagon_disasm_0x7(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
598 void hexagon_disasm_0x8(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
599 void hexagon_disasm_0x9(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
600 void hexagon_disasm_0xa(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
601 void hexagon_disasm_0xb(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
602 void hexagon_disasm_0xc(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
603 void hexagon_disasm_0xd(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
604 void hexagon_disasm_0xe(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt);
620 
621 #endif
static struct @29 ops[]
ut8 op
Definition: 6502dis.c:13
#define mnem(n, mn)
static RzILOpEffect * cls(cs_insn *insn)
Definition: arm_il64.c:915
#define RZ_API
uint32_t ut32
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)
Definition: hexagon.c:102
HEX_INT_REGS
Definition: hexagon.h:376
@ HEX_REG_INT_REGS_R26
Definition: hexagon.h:403
@ HEX_REG_INT_REGS_R16
Definition: hexagon.h:393
@ HEX_REG_INT_REGS_R29
Definition: hexagon.h:406
@ HEX_REG_INT_REGS_R24
Definition: hexagon.h:401
@ HEX_REG_INT_REGS_R20
Definition: hexagon.h:397
@ HEX_REG_INT_REGS_R15
Definition: hexagon.h:392
@ HEX_REG_INT_REGS_R31
Definition: hexagon.h:408
@ HEX_REG_INT_REGS_R13
Definition: hexagon.h:390
@ HEX_REG_INT_REGS_R30
Definition: hexagon.h:407
@ HEX_REG_INT_REGS_R8
Definition: hexagon.h:385
@ HEX_REG_INT_REGS_R10
Definition: hexagon.h:387
@ HEX_REG_INT_REGS_R19
Definition: hexagon.h:396
@ HEX_REG_INT_REGS_R22
Definition: hexagon.h:399
@ HEX_REG_INT_REGS_R14
Definition: hexagon.h:391
@ HEX_REG_INT_REGS_R27
Definition: hexagon.h:404
@ HEX_REG_INT_REGS_R21
Definition: hexagon.h:398
@ HEX_REG_INT_REGS_R0
Definition: hexagon.h:377
@ HEX_REG_INT_REGS_R23
Definition: hexagon.h:400
@ HEX_REG_INT_REGS_R25
Definition: hexagon.h:402
@ HEX_REG_INT_REGS_R3
Definition: hexagon.h:380
@ HEX_REG_INT_REGS_R6
Definition: hexagon.h:383
@ HEX_REG_INT_REGS_R1
Definition: hexagon.h:378
@ HEX_REG_INT_REGS_R28
Definition: hexagon.h:405
@ HEX_REG_INT_REGS_R5
Definition: hexagon.h:382
@ HEX_REG_INT_REGS_R9
Definition: hexagon.h:386
@ HEX_REG_INT_REGS_R4
Definition: hexagon.h:381
@ HEX_REG_INT_REGS_R18
Definition: hexagon.h:395
@ HEX_REG_INT_REGS_R2
Definition: hexagon.h:379
@ HEX_REG_INT_REGS_R11
Definition: hexagon.h:388
@ HEX_REG_INT_REGS_R7
Definition: hexagon.h:384
@ HEX_REG_INT_REGS_R12
Definition: hexagon.h:389
@ HEX_REG_INT_REGS_R17
Definition: hexagon.h:394
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_CTR_REGS64
Definition: hexagon.h:187
@ HEX_REG_CTR_REGS64_C19_18
Definition: hexagon.h:197
@ HEX_REG_CTR_REGS64_C7_6
Definition: hexagon.h:191
@ HEX_REG_CTR_REGS64_C9_8
Definition: hexagon.h:192
@ HEX_REG_CTR_REGS64_C15_14
Definition: hexagon.h:195
@ HEX_REG_CTR_REGS64_C31_30
Definition: hexagon.h:198
@ HEX_REG_CTR_REGS64_C1_0
Definition: hexagon.h:188
@ HEX_REG_CTR_REGS64_C5_4
Definition: hexagon.h:190
@ HEX_REG_CTR_REGS64_C3_2
Definition: hexagon.h:189
@ HEX_REG_CTR_REGS64_C11_10
Definition: hexagon.h:193
@ HEX_REG_CTR_REGS64_C13_12
Definition: hexagon.h:194
@ HEX_REG_CTR_REGS64_C17_16
Definition: hexagon.h:196
void hexagon_disasm_duplex_0xa(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
HEX_DOUBLE_REGS
Definition: hexagon.h:201
@ HEX_REG_DOUBLE_REGS_R13_12
Definition: hexagon.h:208
@ HEX_REG_DOUBLE_REGS_R11_10
Definition: hexagon.h:207
@ HEX_REG_DOUBLE_REGS_R27_26
Definition: hexagon.h:215
@ HEX_REG_DOUBLE_REGS_R15_14
Definition: hexagon.h:209
@ HEX_REG_DOUBLE_REGS_R7_6
Definition: hexagon.h:205
@ HEX_REG_DOUBLE_REGS_R31_30
Definition: hexagon.h:217
@ HEX_REG_DOUBLE_REGS_R29_28
Definition: hexagon.h:216
@ HEX_REG_DOUBLE_REGS_R25_24
Definition: hexagon.h:214
@ HEX_REG_DOUBLE_REGS_R3_2
Definition: hexagon.h:203
@ HEX_REG_DOUBLE_REGS_R21_20
Definition: hexagon.h:212
@ HEX_REG_DOUBLE_REGS_R19_18
Definition: hexagon.h:211
@ HEX_REG_DOUBLE_REGS_R17_16
Definition: hexagon.h:210
@ HEX_REG_DOUBLE_REGS_R23_22
Definition: hexagon.h:213
@ HEX_REG_DOUBLE_REGS_R9_8
Definition: hexagon.h:206
@ HEX_REG_DOUBLE_REGS_R5_4
Definition: hexagon.h:204
@ HEX_REG_DOUBLE_REGS_R1_0
Definition: hexagon.h:202
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)
Definition: hexagon.c:829
HexPf
Definition: hexagon.h:37
@ HEX_PF_CHOP
Definition: hexagon.h:41
@ HEX_PF_RND
Definition: hexagon.h:38
@ HEX_PF_RAW
Definition: hexagon.h:40
@ HEX_PF_NEG
Definition: hexagon.h:48
@ HEX_PF_POS
Definition: hexagon.h:49
@ HEX_PF_LSH16
Definition: hexagon.h:46
@ HEX_PF_CRND
Definition: hexagon.h:39
@ HEX_PF_SCALE
Definition: hexagon.h:50
@ HEX_PF_RSH1
Definition: hexagon.h:47
@ HEX_PF_HI
Definition: hexagon.h:43
@ HEX_PF_LSH1
Definition: hexagon.h:45
@ HEX_PF_DEPRECATED
Definition: hexagon.h:51
@ HEX_PF_LO
Definition: hexagon.h:44
@ HEX_PF_SAT
Definition: hexagon.h:42
HexOpType
Definition: hexagon.h:54
@ HEX_OP_TYPE_REG
Definition: hexagon.h:56
@ HEX_OP_TYPE_IMM
Definition: hexagon.h:55
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)
Definition: hexagon.c:459
#define HEXAGON_STATE_PKTS
Definition: hexagon.h:25
HEX_HVX_VR
Definition: hexagon.h:322
@ HEX_REG_HVX_VR_V14
Definition: hexagon.h:337
@ HEX_REG_HVX_VR_V12
Definition: hexagon.h:335
@ HEX_REG_HVX_VR_V23
Definition: hexagon.h:346
@ HEX_REG_HVX_VR_V22
Definition: hexagon.h:345
@ HEX_REG_HVX_VR_V24
Definition: hexagon.h:347
@ HEX_REG_HVX_VR_V18
Definition: hexagon.h:341
@ HEX_REG_HVX_VR_V10
Definition: hexagon.h:333
@ HEX_REG_HVX_VR_V0
Definition: hexagon.h:323
@ HEX_REG_HVX_VR_V4
Definition: hexagon.h:327
@ HEX_REG_HVX_VR_V7
Definition: hexagon.h:330
@ HEX_REG_HVX_VR_V5
Definition: hexagon.h:328
@ HEX_REG_HVX_VR_V19
Definition: hexagon.h:342
@ HEX_REG_HVX_VR_V31
Definition: hexagon.h:354
@ HEX_REG_HVX_VR_V8
Definition: hexagon.h:331
@ HEX_REG_HVX_VR_V26
Definition: hexagon.h:349
@ HEX_REG_HVX_VR_V17
Definition: hexagon.h:340
@ HEX_REG_HVX_VR_V3
Definition: hexagon.h:326
@ HEX_REG_HVX_VR_V21
Definition: hexagon.h:344
@ HEX_REG_HVX_VR_V16
Definition: hexagon.h:339
@ HEX_REG_HVX_VR_V15
Definition: hexagon.h:338
@ HEX_REG_HVX_VR_V25
Definition: hexagon.h:348
@ HEX_REG_HVX_VR_V13
Definition: hexagon.h:336
@ HEX_REG_HVX_VR_V28
Definition: hexagon.h:351
@ HEX_REG_HVX_VR_V27
Definition: hexagon.h:350
@ HEX_REG_HVX_VR_V11
Definition: hexagon.h:334
@ HEX_REG_HVX_VR_V20
Definition: hexagon.h:343
@ HEX_REG_HVX_VR_V2
Definition: hexagon.h:325
@ HEX_REG_HVX_VR_V30
Definition: hexagon.h:353
@ HEX_REG_HVX_VR_V9
Definition: hexagon.h:332
@ HEX_REG_HVX_VR_V1
Definition: hexagon.h:324
@ HEX_REG_HVX_VR_V6
Definition: hexagon.h:329
@ HEX_REG_HVX_VR_V29
Definition: hexagon.h:352
HEX_GENERAL_DOUBLE_LOW8_REGS
Definition: hexagon.h:220
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R1_0
Definition: hexagon.h:221
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R7_6
Definition: hexagon.h:224
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R17_16
Definition: hexagon.h:225
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R19_18
Definition: hexagon.h:226
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R23_22
Definition: hexagon.h:228
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R5_4
Definition: hexagon.h:223
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R21_20
Definition: hexagon.h:227
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R3_2
Definition: hexagon.h:222
HEX_CTR_REGS
Definition: hexagon.h:162
@ HEX_REG_CTR_REGS_C19
Definition: hexagon.h:182
@ HEX_REG_CTR_REGS_C15
Definition: hexagon.h:178
@ HEX_REG_CTR_REGS_C14
Definition: hexagon.h:177
@ HEX_REG_CTR_REGS_C17
Definition: hexagon.h:180
@ HEX_REG_CTR_REGS_C9
Definition: hexagon.h:172
@ HEX_REG_CTR_REGS_C13
Definition: hexagon.h:176
@ HEX_REG_CTR_REGS_C7
Definition: hexagon.h:170
@ HEX_REG_CTR_REGS_C31
Definition: hexagon.h:184
@ HEX_REG_CTR_REGS_C10
Definition: hexagon.h:173
@ HEX_REG_CTR_REGS_C3
Definition: hexagon.h:166
@ HEX_REG_CTR_REGS_C2
Definition: hexagon.h:165
@ HEX_REG_CTR_REGS_C8
Definition: hexagon.h:171
@ HEX_REG_CTR_REGS_C6
Definition: hexagon.h:169
@ HEX_REG_CTR_REGS_C4
Definition: hexagon.h:167
@ HEX_REG_CTR_REGS_C30
Definition: hexagon.h:183
@ HEX_REG_CTR_REGS_C5
Definition: hexagon.h:168
@ HEX_REG_CTR_REGS_C1
Definition: hexagon.h:164
@ HEX_REG_CTR_REGS_C12
Definition: hexagon.h:175
@ HEX_REG_CTR_REGS_C0
Definition: hexagon.h:163
@ HEX_REG_CTR_REGS_C16
Definition: hexagon.h:179
@ HEX_REG_CTR_REGS_C18
Definition: hexagon.h:181
@ HEX_REG_CTR_REGS_C11
Definition: hexagon.h:174
void hexagon_disasm_duplex_0xb(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
HEX_GUEST_REGS64
Definition: hexagon.h:285
@ HEX_REG_GUEST_REGS64_G27_26
Definition: hexagon.h:299
@ HEX_REG_GUEST_REGS64_G1_0
Definition: hexagon.h:286
@ HEX_REG_GUEST_REGS64_G3_2
Definition: hexagon.h:287
@ HEX_REG_GUEST_REGS64_G23_22
Definition: hexagon.h:297
@ HEX_REG_GUEST_REGS64_G31_30
Definition: hexagon.h:301
@ HEX_REG_GUEST_REGS64_G13_12
Definition: hexagon.h:292
@ HEX_REG_GUEST_REGS64_G25_24
Definition: hexagon.h:298
@ HEX_REG_GUEST_REGS64_G29_28
Definition: hexagon.h:300
@ HEX_REG_GUEST_REGS64_G21_20
Definition: hexagon.h:296
@ HEX_REG_GUEST_REGS64_G15_14
Definition: hexagon.h:293
@ HEX_REG_GUEST_REGS64_G7_6
Definition: hexagon.h:289
@ HEX_REG_GUEST_REGS64_G19_18
Definition: hexagon.h:295
@ HEX_REG_GUEST_REGS64_G17_16
Definition: hexagon.h:294
@ HEX_REG_GUEST_REGS64_G9_8
Definition: hexagon.h:290
@ HEX_REG_GUEST_REGS64_G5_4
Definition: hexagon.h:288
@ HEX_REG_GUEST_REGS64_G11_10
Definition: hexagon.h:291
HexRegClass
Definition: hexagon.h:142
@ HEX_REG_CLASS_INT_REGS_LOW8
Definition: hexagon.h:155
@ HEX_REG_CLASS_GUEST_REGS
Definition: hexagon.h:148
@ HEX_REG_CLASS_HVX_QR
Definition: hexagon.h:150
@ HEX_REG_CLASS_GUEST_REGS64
Definition: hexagon.h:149
@ HEX_REG_CLASS_HVX_WR
Definition: hexagon.h:153
@ HEX_REG_CLASS_SYS_REGS
Definition: hexagon.h:158
@ HEX_REG_CLASS_MOD_REGS
Definition: hexagon.h:156
@ HEX_REG_CLASS_HVX_VQR
Definition: hexagon.h:151
@ HEX_REG_CLASS_INT_REGS
Definition: hexagon.h:154
@ HEX_REG_CLASS_DOUBLE_REGS
Definition: hexagon.h:145
@ HEX_REG_CLASS_SYS_REGS64
Definition: hexagon.h:159
@ HEX_REG_CLASS_HVX_VR
Definition: hexagon.h:152
@ HEX_REG_CLASS_CTR_REGS
Definition: hexagon.h:143
@ HEX_REG_CLASS_CTR_REGS64
Definition: hexagon.h:144
@ HEX_REG_CLASS_PRED_REGS
Definition: hexagon.h:157
@ HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS
Definition: hexagon.h:146
@ HEX_REG_CLASS_GENERAL_SUB_REGS
Definition: hexagon.h:147
void hexagon_disasm_duplex_0x9(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
#define HEX_MAX_OPERANDS
Definition: hexagon.h:21
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)
Definition: hexagon.c:24
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)
Definition: hexagon.c:351
HEX_GENERAL_SUB_REGS
Definition: hexagon.h:231
@ HEX_REG_GENERAL_SUB_REGS_R22
Definition: hexagon.h:246
@ HEX_REG_GENERAL_SUB_REGS_R1
Definition: hexagon.h:233
@ HEX_REG_GENERAL_SUB_REGS_R7
Definition: hexagon.h:239
@ HEX_REG_GENERAL_SUB_REGS_R0
Definition: hexagon.h:232
@ HEX_REG_GENERAL_SUB_REGS_R16
Definition: hexagon.h:240
@ HEX_REG_GENERAL_SUB_REGS_R20
Definition: hexagon.h:244
@ HEX_REG_GENERAL_SUB_REGS_R6
Definition: hexagon.h:238
@ HEX_REG_GENERAL_SUB_REGS_R23
Definition: hexagon.h:247
@ HEX_REG_GENERAL_SUB_REGS_R5
Definition: hexagon.h:237
@ HEX_REG_GENERAL_SUB_REGS_R18
Definition: hexagon.h:242
@ HEX_REG_GENERAL_SUB_REGS_R4
Definition: hexagon.h:236
@ HEX_REG_GENERAL_SUB_REGS_R21
Definition: hexagon.h:245
@ HEX_REG_GENERAL_SUB_REGS_R19
Definition: hexagon.h:243
@ HEX_REG_GENERAL_SUB_REGS_R2
Definition: hexagon.h:234
@ HEX_REG_GENERAL_SUB_REGS_R3
Definition: hexagon.h:235
@ HEX_REG_GENERAL_SUB_REGS_R17
Definition: hexagon.h:241
void hexagon_disasm_duplex_0x4(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
HexOpAttr
Definition: hexagon.h:61
@ HEX_OP_REG_QUADRUPLE
Definition: hexagon.h:66
@ HEX_OP_REG_LO
Definition: hexagon.h:64
@ HEX_OP_REG_HI
Definition: hexagon.h:63
@ HEX_OP_CONST_EXT
Definition: hexagon.h:62
@ HEX_OP_IMM_SCALED
Definition: hexagon.h:68
@ HEX_OP_REG_OUT
Definition: hexagon.h:67
@ HEX_OP_REG_PAIR
Definition: hexagon.h:65
HexLoopAttr
Definition: hexagon.h:71
@ HEX_NO_LOOP
Definition: hexagon.h:72
@ HEX_LOOP_0
Definition: hexagon.h:73
@ HEX_LOOP_1
Definition: hexagon.h:74
@ HEX_LOOP_01
Definition: hexagon.h:75
void hexagon_disasm_0x6(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
HEX_GUEST_REGS
Definition: hexagon.h:250
@ HEX_REG_GUEST_REGS_G10
Definition: hexagon.h:261
@ HEX_REG_GUEST_REGS_G18
Definition: hexagon.h:269
@ HEX_REG_GUEST_REGS_G4
Definition: hexagon.h:255
@ HEX_REG_GUEST_REGS_G17
Definition: hexagon.h:268
@ HEX_REG_GUEST_REGS_G25
Definition: hexagon.h:276
@ HEX_REG_GUEST_REGS_G5
Definition: hexagon.h:256
@ HEX_REG_GUEST_REGS_G3
Definition: hexagon.h:254
@ HEX_REG_GUEST_REGS_G1
Definition: hexagon.h:252
@ HEX_REG_GUEST_REGS_G0
Definition: hexagon.h:251
@ HEX_REG_GUEST_REGS_G6
Definition: hexagon.h:257
@ HEX_REG_GUEST_REGS_G23
Definition: hexagon.h:274
@ HEX_REG_GUEST_REGS_G27
Definition: hexagon.h:278
@ HEX_REG_GUEST_REGS_G7
Definition: hexagon.h:258
@ HEX_REG_GUEST_REGS_G19
Definition: hexagon.h:270
@ HEX_REG_GUEST_REGS_G12
Definition: hexagon.h:263
@ HEX_REG_GUEST_REGS_G29
Definition: hexagon.h:280
@ HEX_REG_GUEST_REGS_G16
Definition: hexagon.h:267
@ HEX_REG_GUEST_REGS_G20
Definition: hexagon.h:271
@ HEX_REG_GUEST_REGS_G31
Definition: hexagon.h:282
@ HEX_REG_GUEST_REGS_G13
Definition: hexagon.h:264
@ HEX_REG_GUEST_REGS_G15
Definition: hexagon.h:266
@ HEX_REG_GUEST_REGS_G22
Definition: hexagon.h:273
@ HEX_REG_GUEST_REGS_G8
Definition: hexagon.h:259
@ HEX_REG_GUEST_REGS_G30
Definition: hexagon.h:281
@ HEX_REG_GUEST_REGS_G2
Definition: hexagon.h:253
@ HEX_REG_GUEST_REGS_G14
Definition: hexagon.h:265
@ HEX_REG_GUEST_REGS_G11
Definition: hexagon.h:262
@ HEX_REG_GUEST_REGS_G26
Definition: hexagon.h:277
@ HEX_REG_GUEST_REGS_G24
Definition: hexagon.h:275
@ HEX_REG_GUEST_REGS_G28
Definition: hexagon.h:279
@ HEX_REG_GUEST_REGS_G21
Definition: hexagon.h:272
@ HEX_REG_GUEST_REGS_G9
Definition: hexagon.h:260
char * hex_get_ctr_regs64(int opcode_reg, bool get_alias)
Definition: hexagon.c:74
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)
Definition: hexagon.c:562
HEX_PRED_REGS
Definition: hexagon.h:427
@ HEX_REG_PRED_REGS_P1
Definition: hexagon.h:429
@ HEX_REG_PRED_REGS_P2
Definition: hexagon.h:430
@ HEX_REG_PRED_REGS_P0
Definition: hexagon.h:428
@ HEX_REG_PRED_REGS_P3
Definition: hexagon.h:431
HEX_MOD_REGS
Definition: hexagon.h:422
@ HEX_REG_MOD_REGS_C7
Definition: hexagon.h:424
@ HEX_REG_MOD_REGS_C6
Definition: hexagon.h:423
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)
Definition: hexagon.c:529
HEX_HVX_QR
Definition: hexagon.h:304
@ HEX_REG_HVX_QR_Q3
Definition: hexagon.h:308
@ HEX_REG_HVX_QR_Q2
Definition: hexagon.h:307
@ HEX_REG_HVX_QR_Q0
Definition: hexagon.h:305
@ HEX_REG_HVX_QR_Q1
Definition: hexagon.h:306
char * hex_get_hvx_qr(int opcode_reg, bool get_alias)
Definition: hexagon.c:315
char * hex_get_hvx_vqr(int opcode_reg, bool get_alias)
Definition: hexagon.c:329
void hexagon_disasm_0x1(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
HEX_HVX_WR
Definition: hexagon.h:357
@ HEX_REG_HVX_WR_V19_18
Definition: hexagon.h:367
@ HEX_REG_HVX_WR_V17_16
Definition: hexagon.h:366
@ HEX_REG_HVX_WR_V1_0
Definition: hexagon.h:358
@ HEX_REG_HVX_WR_V23_22
Definition: hexagon.h:369
@ HEX_REG_HVX_WR_V7_6
Definition: hexagon.h:361
@ HEX_REG_HVX_WR_V29_28
Definition: hexagon.h:372
@ HEX_REG_HVX_WR_V9_8
Definition: hexagon.h:362
@ HEX_REG_HVX_WR_V15_14
Definition: hexagon.h:365
@ HEX_REG_HVX_WR_V5_4
Definition: hexagon.h:360
@ HEX_REG_HVX_WR_V25_24
Definition: hexagon.h:370
@ HEX_REG_HVX_WR_V13_12
Definition: hexagon.h:364
@ HEX_REG_HVX_WR_V27_26
Definition: hexagon.h:371
@ HEX_REG_HVX_WR_V11_10
Definition: hexagon.h:363
@ HEX_REG_HVX_WR_V21_20
Definition: hexagon.h:368
@ HEX_REG_HVX_WR_V3_2
Definition: hexagon.h:359
@ HEX_REG_HVX_WR_V31_30
Definition: hexagon.h:373
void hexagon_disasm_duplex_0x2(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
HEX_SYS_REGS
Definition: hexagon.h:434
@ HEX_REG_SYS_REGS_S3
Definition: hexagon.h:438
@ HEX_REG_SYS_REGS_S32
Definition: hexagon.h:467
@ HEX_REG_SYS_REGS_S5
Definition: hexagon.h:440
@ HEX_REG_SYS_REGS_S63
Definition: hexagon.h:498
@ HEX_REG_SYS_REGS_S62
Definition: hexagon.h:497
@ HEX_REG_SYS_REGS_S26
Definition: hexagon.h:461
@ HEX_REG_SYS_REGS_S13
Definition: hexagon.h:448
@ HEX_REG_SYS_REGS_S48
Definition: hexagon.h:483
@ HEX_REG_SYS_REGS_S67
Definition: hexagon.h:502
@ HEX_REG_SYS_REGS_S44
Definition: hexagon.h:479
@ HEX_REG_SYS_REGS_S79
Definition: hexagon.h:514
@ HEX_REG_SYS_REGS_S47
Definition: hexagon.h:482
@ HEX_REG_SYS_REGS_S66
Definition: hexagon.h:501
@ HEX_REG_SYS_REGS_S20
Definition: hexagon.h:455
@ HEX_REG_SYS_REGS_S34
Definition: hexagon.h:469
@ HEX_REG_SYS_REGS_S9
Definition: hexagon.h:444
@ HEX_REG_SYS_REGS_S69
Definition: hexagon.h:504
@ HEX_REG_SYS_REGS_S75
Definition: hexagon.h:510
@ HEX_REG_SYS_REGS_S71
Definition: hexagon.h:506
@ HEX_REG_SYS_REGS_S68
Definition: hexagon.h:503
@ HEX_REG_SYS_REGS_S2
Definition: hexagon.h:437
@ HEX_REG_SYS_REGS_S36
Definition: hexagon.h:471
@ HEX_REG_SYS_REGS_S35
Definition: hexagon.h:470
@ HEX_REG_SYS_REGS_S78
Definition: hexagon.h:513
@ HEX_REG_SYS_REGS_S11
Definition: hexagon.h:446
@ HEX_REG_SYS_REGS_S49
Definition: hexagon.h:484
@ HEX_REG_SYS_REGS_S77
Definition: hexagon.h:512
@ HEX_REG_SYS_REGS_S58
Definition: hexagon.h:493
@ HEX_REG_SYS_REGS_S28
Definition: hexagon.h:463
@ HEX_REG_SYS_REGS_S76
Definition: hexagon.h:511
@ HEX_REG_SYS_REGS_S54
Definition: hexagon.h:489
@ HEX_REG_SYS_REGS_S37
Definition: hexagon.h:472
@ HEX_REG_SYS_REGS_S14
Definition: hexagon.h:449
@ HEX_REG_SYS_REGS_S59
Definition: hexagon.h:494
@ HEX_REG_SYS_REGS_S21
Definition: hexagon.h:456
@ HEX_REG_SYS_REGS_S18
Definition: hexagon.h:453
@ HEX_REG_SYS_REGS_S0
Definition: hexagon.h:435
@ HEX_REG_SYS_REGS_S46
Definition: hexagon.h:481
@ HEX_REG_SYS_REGS_S4
Definition: hexagon.h:439
@ HEX_REG_SYS_REGS_S1
Definition: hexagon.h:436
@ HEX_REG_SYS_REGS_S40
Definition: hexagon.h:475
@ HEX_REG_SYS_REGS_S17
Definition: hexagon.h:452
@ HEX_REG_SYS_REGS_S64
Definition: hexagon.h:499
@ HEX_REG_SYS_REGS_S65
Definition: hexagon.h:500
@ HEX_REG_SYS_REGS_S8
Definition: hexagon.h:443
@ HEX_REG_SYS_REGS_S22
Definition: hexagon.h:457
@ HEX_REG_SYS_REGS_S6
Definition: hexagon.h:441
@ HEX_REG_SYS_REGS_S45
Definition: hexagon.h:480
@ HEX_REG_SYS_REGS_S15
Definition: hexagon.h:450
@ HEX_REG_SYS_REGS_S60
Definition: hexagon.h:495
@ HEX_REG_SYS_REGS_S29
Definition: hexagon.h:464
@ HEX_REG_SYS_REGS_S43
Definition: hexagon.h:478
@ HEX_REG_SYS_REGS_S33
Definition: hexagon.h:468
@ HEX_REG_SYS_REGS_S24
Definition: hexagon.h:459
@ HEX_REG_SYS_REGS_S56
Definition: hexagon.h:491
@ HEX_REG_SYS_REGS_S42
Definition: hexagon.h:477
@ HEX_REG_SYS_REGS_S51
Definition: hexagon.h:486
@ HEX_REG_SYS_REGS_S74
Definition: hexagon.h:509
@ HEX_REG_SYS_REGS_S27
Definition: hexagon.h:462
@ HEX_REG_SYS_REGS_S30
Definition: hexagon.h:465
@ HEX_REG_SYS_REGS_S70
Definition: hexagon.h:505
@ HEX_REG_SYS_REGS_S12
Definition: hexagon.h:447
@ HEX_REG_SYS_REGS_S53
Definition: hexagon.h:488
@ HEX_REG_SYS_REGS_S31
Definition: hexagon.h:466
@ HEX_REG_SYS_REGS_S72
Definition: hexagon.h:507
@ HEX_REG_SYS_REGS_S55
Definition: hexagon.h:490
@ HEX_REG_SYS_REGS_S25
Definition: hexagon.h:460
@ HEX_REG_SYS_REGS_S52
Definition: hexagon.h:487
@ HEX_REG_SYS_REGS_S61
Definition: hexagon.h:496
@ HEX_REG_SYS_REGS_S57
Definition: hexagon.h:492
@ HEX_REG_SYS_REGS_S50
Definition: hexagon.h:485
@ HEX_REG_SYS_REGS_S41
Definition: hexagon.h:476
@ HEX_REG_SYS_REGS_S38
Definition: hexagon.h:473
@ HEX_REG_SYS_REGS_S80
Definition: hexagon.h:515
@ HEX_REG_SYS_REGS_S19
Definition: hexagon.h:454
@ HEX_REG_SYS_REGS_S7
Definition: hexagon.h:442
@ HEX_REG_SYS_REGS_S39
Definition: hexagon.h:474
@ HEX_REG_SYS_REGS_S73
Definition: hexagon.h:508
@ HEX_REG_SYS_REGS_S23
Definition: hexagon.h:458
@ HEX_REG_SYS_REGS_S16
Definition: hexagon.h:451
@ HEX_REG_SYS_REGS_S10
Definition: hexagon.h:445
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.
Definition: hexagon_arch.c:738
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)
HEX_HVX_VQR
Definition: hexagon.h:311
@ HEX_REG_HVX_VQR_V7_4
Definition: hexagon.h:313
@ HEX_REG_HVX_VQR_V19_16
Definition: hexagon.h:316
@ HEX_REG_HVX_VQR_V15_12
Definition: hexagon.h:315
@ HEX_REG_HVX_VQR_V11_8
Definition: hexagon.h:314
@ HEX_REG_HVX_VQR_V3_0
Definition: hexagon.h:312
@ HEX_REG_HVX_VQR_V31_28
Definition: hexagon.h:319
@ HEX_REG_HVX_VQR_V27_24
Definition: hexagon.h:318
@ HEX_REG_HVX_VQR_V23_20
Definition: hexagon.h:317
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)
Definition: hexagon.c:551
char * hex_get_guest_regs64(int opcode_reg, bool get_alias)
Definition: hexagon.c:277
char * hex_get_sys_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:576
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.
Definition: hexagon.c:878
char * hex_get_general_double_low8_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:140
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)
Definition: hexagon.c:207
HEX_INT_REGS_LOW8
Definition: hexagon.h:411
@ HEX_REG_INT_REGS_LOW8_R7
Definition: hexagon.h:419
@ HEX_REG_INT_REGS_LOW8_R3
Definition: hexagon.h:415
@ HEX_REG_INT_REGS_LOW8_R0
Definition: hexagon.h:412
@ HEX_REG_INT_REGS_LOW8_R5
Definition: hexagon.h:417
@ HEX_REG_INT_REGS_LOW8_R2
Definition: hexagon.h:414
@ HEX_REG_INT_REGS_LOW8_R1
Definition: hexagon.h:413
@ HEX_REG_INT_REGS_LOW8_R4
Definition: hexagon.h:416
@ HEX_REG_INT_REGS_LOW8_R6
Definition: hexagon.h:418
char * hex_get_sys_regs64(int opcode_reg, bool get_alias)
Definition: hexagon.c:744
HEX_SYS_REGS64
Definition: hexagon.h:518
@ HEX_REG_SYS_REGS64_S1_0
Definition: hexagon.h:519
@ HEX_REG_SYS_REGS64_S73_72
Definition: hexagon.h:555
@ HEX_REG_SYS_REGS64_S21_20
Definition: hexagon.h:529
@ HEX_REG_SYS_REGS64_S37_36
Definition: hexagon.h:537
@ HEX_REG_SYS_REGS64_S47_46
Definition: hexagon.h:542
@ HEX_REG_SYS_REGS64_S45_44
Definition: hexagon.h:541
@ HEX_REG_SYS_REGS64_S63_62
Definition: hexagon.h:550
@ HEX_REG_SYS_REGS64_S59_58
Definition: hexagon.h:548
@ HEX_REG_SYS_REGS64_S57_56
Definition: hexagon.h:547
@ HEX_REG_SYS_REGS64_S61_60
Definition: hexagon.h:549
@ HEX_REG_SYS_REGS64_S71_70
Definition: hexagon.h:554
@ HEX_REG_SYS_REGS64_S29_28
Definition: hexagon.h:533
@ HEX_REG_SYS_REGS64_S15_14
Definition: hexagon.h:526
@ HEX_REG_SYS_REGS64_S3_2
Definition: hexagon.h:520
@ HEX_REG_SYS_REGS64_S17_16
Definition: hexagon.h:527
@ HEX_REG_SYS_REGS64_S39_38
Definition: hexagon.h:538
@ HEX_REG_SYS_REGS64_S35_34
Definition: hexagon.h:536
@ HEX_REG_SYS_REGS64_S67_66
Definition: hexagon.h:552
@ HEX_REG_SYS_REGS64_S77_76
Definition: hexagon.h:557
@ HEX_REG_SYS_REGS64_S11_10
Definition: hexagon.h:524
@ HEX_REG_SYS_REGS64_S27_26
Definition: hexagon.h:532
@ HEX_REG_SYS_REGS64_S19_18
Definition: hexagon.h:528
@ HEX_REG_SYS_REGS64_S79_78
Definition: hexagon.h:558
@ HEX_REG_SYS_REGS64_S43_42
Definition: hexagon.h:540
@ HEX_REG_SYS_REGS64_S75_74
Definition: hexagon.h:556
@ HEX_REG_SYS_REGS64_S33_32
Definition: hexagon.h:535
@ HEX_REG_SYS_REGS64_S23_22
Definition: hexagon.h:530
@ HEX_REG_SYS_REGS64_S53_52
Definition: hexagon.h:545
@ HEX_REG_SYS_REGS64_S41_40
Definition: hexagon.h:539
@ HEX_REG_SYS_REGS64_S31_30
Definition: hexagon.h:534
@ HEX_REG_SYS_REGS64_S49_48
Definition: hexagon.h:543
@ HEX_REG_SYS_REGS64_S69_68
Definition: hexagon.h:553
@ HEX_REG_SYS_REGS64_S5_4
Definition: hexagon.h:521
@ HEX_REG_SYS_REGS64_S51_50
Definition: hexagon.h:544
@ HEX_REG_SYS_REGS64_S13_12
Definition: hexagon.h:525
@ HEX_REG_SYS_REGS64_S25_24
Definition: hexagon.h:531
@ HEX_REG_SYS_REGS64_S7_6
Definition: hexagon.h:522
@ HEX_REG_SYS_REGS64_S9_8
Definition: hexagon.h:523
@ HEX_REG_SYS_REGS64_S55_54
Definition: hexagon.h:546
@ HEX_REG_SYS_REGS64_S65_64
Definition: hexagon.h:551
HexPred
Definition: hexagon.h:28
@ HEX_PRED_TRUE
Definition: hexagon.h:30
@ HEX_PRED_NEW
Definition: hexagon.h:32
@ HEX_PRED_FALSE
Definition: hexagon.h:31
@ HEX_NOPRED
Definition: hexagon.h:29
char * hex_get_hvx_wr(int opcode_reg, bool get_alias)
Definition: hexagon.c:421
char * hex_get_general_sub_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:166
void hexagon_disasm_0x8(HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
hi(addr) 0x03
uint8_t ut8
Definition: lh5801.h:11
void * p
Definition: libc.cpp:67
#define RZ_INOUT
Definition: rz_types.h:52
#define RZ_BORROW
Definition: rz_types.h:63
#define st64
Definition: rz_types_base.h:10
ut32 const_ext
Definition: hexagon.h:127
ut32 addr
Definition: hexagon.h:126
HexPktInfo pkt_info
Definition: hexagon.h:104
RzAnalysisOp ana_op
Definition: hexagon.h:111
ut32 opcode
Definition: hexagon.h:96
bool compound
Definition: hexagon.h:102
ut32 mask
Definition: hexagon.h:99
int shift
Definition: hexagon.h:103
RzAsmOp asm_op
Definition: hexagon.h:110
ut8 op_count
Definition: hexagon.h:105
ut32 addr
Definition: hexagon.h:109
ut8 parse_bits
Definition: hexagon.h:97
HexPred pred
Definition: hexagon.h:100
bool duplex
Definition: hexagon.h:101
int instruction
Definition: hexagon.h:98
Definition: hexagon.h:85
HexOpAttr attr
Definition: hexagon.h:91
ut8 reg
Definition: hexagon.h:88
ut8 shift
Definition: hexagon.h:92
ut8 type
Definition: hexagon.h:86
st64 imm
Definition: hexagon.h:89
bool first_insn
Definition: hexagon.h:79
bool last_insn
Definition: hexagon.h:80
ut64 last_access
Definition: hexagon.h:120
ut32 hw_loop0_addr
Definition: hexagon.h:118
bool is_valid
Definition: hexagon.h:117
bool last_instr_present
Definition: hexagon.h:116
ut32 pkt_addr
Definition: hexagon.h:121
bool is_eob
Definition: hexagon.h:122
ut32 hw_loop1_addr
Definition: hexagon.h:119
RzList * insn
Definition: hexagon.h:115
Buffer packets for reversed instructions.
Definition: hexagon.h:134
RzPVector * token_patterns
PVector with token patterns. Priority ordered.
Definition: hexagon.h:139
RzAsm rz_asm
Definition: hexagon.h:137
RzList * const_ext_l
Definition: hexagon.h:136
RzConfig * cfg
Definition: hexagon.h:138
Definition: dis.h:43
Definition: dis.c:32
ut64(WINAPI *w32_GetEnabledXStateFeatures)()
static int addr
Definition: z80asm.c:58