Rizin
unix-like reverse engineering framework and cli tools
amd29k.c
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 2019 deroad <wargio@libero.it>
2 // SPDX-License-Identifier: LGPL-3.0-only
3 #include "amd29k.h"
4 #include "amd29k_internal.h"
5 #include <stdio.h>
6 #include <string.h>
7 #include <rz_analysis.h>
8 
9 #define CPU_ANY "*"
10 
11 #define N_AMD29K_INSTRUCTIONS 207
12 
13 #define AMD29K_GET_TYPE(x, i) ((x)->type[(i)])
14 #define AMD29K_GET_VALUE(x, i) ((x)->operands[(i)])
15 #define AMD29K_SET_VALUE(x, i, v, t) \
16  ((x)->operands[(i)] = (v)); \
17  ((x)->type[(i)] = (t))
18 #define AMD29K_SET_INVALID(x, i) ((x)->type[(i)] = AMD29K_TYPE_UNK)
19 #define AMD29K_HAS_BIT(x) (((x)[0] & 1))
20 // Global registers
21 #define AMD29K_IS_REG_GR(x) ((x) >= 0 && (x) < 128)
22 // Local registers
23 #define AMD29K_IS_REG_LR(x) ((x) >= 128 && (x) < 256)
24 #define AMD29K_REGNAME(x) (AMD29K_IS_REG_GR(x) ? "gr" : "lr")
25 #define AMD29K_LR(x) (AMD29K_IS_REG_GR(x) ? (x) : (x)-127)
26 
30  if (AMD29K_HAS_BIT(buffer)) {
32  } else {
34  }
38 }
39 
47 }
48 
50  int word = (buffer[1] << 8) + buffer[3];
57 }
58 
60  int word = (buffer[1] << 10) + (buffer[3] << 2);
61  if (word & 0x20000) {
62  word = (int)(0xfffc0000 | word);
63  }
65  if (AMD29K_HAS_BIT(buffer)) {
67  } else {
69  }
74 }
75 
77  int word = (buffer[1] << 10) + (buffer[3] << 2);
78  if (word & 0x20000) {
79  word = (int)(0xfffc0000 | word);
80  }
87 }
88 
90  AMD29K_SET_VALUE(instruction, 0, ((buffer[1] & 0x80) >> 7), AMD29K_TYPE_IMM);
96 }
97 
105 }
106 
114 }
115 
123 }
124 
126  // lambda w,ea: (w >> 24,[decode_byte1(w), decode_byte2(w), ('imm',False,(w&0x80)>>7), ('imm',False,(w&0x70)>>4), ('imm',False,(w&0xC)>>2), ('imm',False, w&3)])
129  AMD29K_SET_VALUE(instruction, 2, ((buffer[3] & 0x80) >> 7), AMD29K_TYPE_IMM);
130  AMD29K_SET_VALUE(instruction, 3, ((buffer[3] & 0x70) >> 4), AMD29K_TYPE_IMM);
131  AMD29K_SET_VALUE(instruction, 4, ((buffer[3] & 0x0c) >> 2), AMD29K_TYPE_IMM);
133 }
134 
142 }
143 
145  AMD29K_SET_VALUE(instruction, 0, ((buffer[1] & 0x3c) >> 2), AMD29K_TYPE_IMM);
151 }
152 
160 }
161 
169 }
170 
173  AMD29K_SET_VALUE(instruction, 1, ((buffer[3] & 0x0c) >> 2), AMD29K_TYPE_IMM);
178 }
179 
182  AMD29K_SET_VALUE(instruction, 1, ((buffer[3] & 0x0c) >> 2), AMD29K_TYPE_IMM);
187 }
188 
196 }
197 
205 }
206 
208  // lambda w,ea: (w >> 24, None)
215 }
216 
218  { CPU_ANY, "illegal", RZ_ANALYSIS_OP_TYPE_NULL, 0x00, decode_none, NULL },
256  { CPU_ANY, "calli", RZ_ANALYSIS_OP_TYPE_ICALL, 0xC8, decode_calli, NULL },
258  { CPU_ANY, "clz", RZ_ANALYSIS_OP_TYPE_NULL, 0x08, decode_clz, NULL },
259  { CPU_ANY, "clz", RZ_ANALYSIS_OP_TYPE_NULL, 0x09, decode_clz, NULL },
260  { CPU_ANY, "const", RZ_ANALYSIS_OP_TYPE_MOV, 0x03, decode_ra_imm16, NULL },
261  { CPU_ANY, "consth", RZ_ANALYSIS_OP_TYPE_MOV, 0x02, decode_ra_imm16, NULL },
262  { CPU_ANY, "consthz", RZ_ANALYSIS_OP_TYPE_MOV, 0x05, decode_ra_imm16, NULL },
263  { CPU_ANY, "constn", RZ_ANALYSIS_OP_TYPE_MOV, 0x01, decode_ra_imm16, NULL },
264  { CPU_29050, "convert", RZ_ANALYSIS_OP_TYPE_NULL, 0xE4, decode_convert, NULL },
265  { CPU_ANY, "cpbyte", RZ_ANALYSIS_OP_TYPE_CMP, 0x2E, decode_ra_rb_rci, NULL },
266  { CPU_ANY, "cpbyte", RZ_ANALYSIS_OP_TYPE_CMP, 0x2F, decode_ra_rb_rci, NULL },
288  { CPU_29000, "cvdint", RZ_ANALYSIS_OP_TYPE_NULL, 0xE7, decode_rc_ra, NULL },
290  { CPU_29000, "cvfint", RZ_ANALYSIS_OP_TYPE_NULL, 0xE6, decode_rc_ra, NULL },
291  { CPU_29000, "cvintd", RZ_ANALYSIS_OP_TYPE_NULL, 0xE5, decode_rc_ra, NULL },
292  { CPU_29000, "cvintf", RZ_ANALYSIS_OP_TYPE_NULL, 0xE4, decode_rc_ra, NULL },
302  { CPU_ANY, "divide", RZ_ANALYSIS_OP_TYPE_DIV, 0xE1, decode_ra_rb_rc, NULL },
303  { CPU_29050, "dividu", RZ_ANALYSIS_OP_TYPE_DIV, 0xE3, decode_ra_rb_rc, NULL },
306  { CPU_ANY, "divrem", RZ_ANALYSIS_OP_TYPE_DIV, 0x6E, decode_ra_rb_rci, NULL },
307  { CPU_ANY, "divrem", RZ_ANALYSIS_OP_TYPE_DIV, 0x6F, decode_ra_rb_rci, NULL },
313  { CPU_ANY, "emulate", RZ_ANALYSIS_OP_TYPE_NULL, 0xF8, decode_ra_rb_rci, NULL },
314  { CPU_ANY, "exbyte", RZ_ANALYSIS_OP_TYPE_NULL, 0x0A, decode_ra_rb_rci, NULL },
315  { CPU_ANY, "exbyte", RZ_ANALYSIS_OP_TYPE_NULL, 0x0B, decode_ra_rb_rci, NULL },
318  { CPU_ANY, "exhws", RZ_ANALYSIS_OP_TYPE_NULL, 0x7E, decode_rc_ra, NULL },
319  { CPU_ANY, "extract", RZ_ANALYSIS_OP_TYPE_NULL, 0x7A, decode_ra_rb_rci, NULL },
320  { CPU_ANY, "extract", RZ_ANALYSIS_OP_TYPE_NULL, 0x7B, decode_ra_rb_rci, NULL },
332  { CPU_ANY, "halt", RZ_ANALYSIS_OP_TYPE_RET, 0x89, decode_none, NULL },
333  { CPU_ANY, "inbyte", RZ_ANALYSIS_OP_TYPE_NULL, 0x0C, decode_ra_rb_rci, NULL },
334  { CPU_ANY, "inbyte", RZ_ANALYSIS_OP_TYPE_NULL, 0x0D, decode_ra_rb_rci, NULL },
337  { CPU_ANY, "inv", RZ_ANALYSIS_OP_TYPE_NULL, 0x9F, decode_none, NULL },
338  { CPU_ANY, "iret", RZ_ANALYSIS_OP_TYPE_RET, 0x88, decode_none, NULL },
339  { CPU_ANY, "iretinv", RZ_ANALYSIS_OP_TYPE_RET, 0x8C, decode_none, NULL },
344  { CPU_ANY, "jmpfdec", RZ_ANALYSIS_OP_TYPE_CJMP, 0xB4, decode_ra_i16_sh2, NULL },
345  { CPU_ANY, "jmpfdec", RZ_ANALYSIS_OP_TYPE_CJMP, 0xB5, decode_ra_i16_sh2, NULL },
346  { CPU_ANY, "jmpfi", RZ_ANALYSIS_OP_TYPE_RCJMP, 0xC4, decode_ra_rb, NULL },
347  { CPU_ANY, "jmpi", RZ_ANALYSIS_OP_TYPE_RJMP, 0xC0, decode_rb, NULL },
349  { CPU_ANY, "jmpti", RZ_ANALYSIS_OP_TYPE_RCJMP, 0xCC, decode_ra_rb, NULL },
352  { CPU_ANY, "mfsr", RZ_ANALYSIS_OP_TYPE_NULL, 0xC6, decode_mfsr, NULL },
353  { CPU_ANY, "mftlb", RZ_ANALYSIS_OP_TYPE_NULL, 0xB6, decode_rc_ra, NULL },
354  { CPU_ANY, "mtsr", RZ_ANALYSIS_OP_TYPE_NULL, 0xCE, decode_mtsr, NULL },
355  { CPU_ANY, "mtsrim", RZ_ANALYSIS_OP_TYPE_NULL, 0x04, decode_ra_imm16, NULL },
356  { CPU_ANY, "mttlb", RZ_ANALYSIS_OP_TYPE_NULL, 0xBE, decode_ra_rb, NULL },
361  { CPU_29050, "multiplu", RZ_ANALYSIS_OP_TYPE_MUL, 0xE2, decode_ra_rb_rc, NULL },
362  { CPU_ANY, "multiply", RZ_ANALYSIS_OP_TYPE_MUL, 0xE0, decode_ra_rb_rc, NULL },
364  { CPU_29050, "multmu", RZ_ANALYSIS_OP_TYPE_MUL, 0xDF, decode_ra_rb_rc, NULL },
389  { CPU_ANY, "loadset", RZ_ANALYSIS_OP_TYPE_LOAD, 0x26, decode_load_store, NULL },
390  { CPU_ANY, "loadset", RZ_ANALYSIS_OP_TYPE_LOAD, 0x27, decode_load_store, NULL },
409  { CPU_ANY, "subrcs", RZ_ANALYSIS_OP_TYPE_SUB, 0x38, decode_ra_rb_rci, NULL },
410  { CPU_ANY, "subrcs", RZ_ANALYSIS_OP_TYPE_SUB, 0x39, decode_ra_rb_rci, NULL },
411  { CPU_ANY, "subrcu", RZ_ANALYSIS_OP_TYPE_SUB, 0x3A, decode_ra_rb_rci, NULL },
412  { CPU_ANY, "subrcu", RZ_ANALYSIS_OP_TYPE_SUB, 0x3B, decode_ra_rb_rci, NULL },
425 };
426 
427 static bool is_cpu(const char *cpu, const amd29k_instruction_t *in) {
428  return cpu[0] == in->cpu[0] &&
429  cpu[1] == in->cpu[1] &&
430  cpu[2] == in->cpu[2] &&
431  cpu[3] == in->cpu[3] &&
432  cpu[4] == in->cpu[4];
433 }
434 
436  if (!buffer || buffer_size < 4 || !instruction || (cpu && strlen(cpu) < 5)) {
437  return false;
438  }
439  if (!cpu) {
440  cpu = CPU_29000;
441  }
442  if (buffer[0] == 0x70 && buffer[1] == 0x40 && buffer[2] == 0x01 && buffer[3] == 0x01) {
444  instruction->mnemonic = "nop";
446  return true;
447  }
448  int i;
449  for (i = 0; i < N_AMD29K_INSTRUCTIONS; i++) {
451  if (in->cpu[0] == '*' && in->mask == buffer[0]) {
452  in->decode(instruction, buffer);
453  instruction->mnemonic = in->mnemonic;
454  instruction->op_type = in->op_type;
455  return true;
456  } else if (in->cpu[0] != '*' && in->mask == buffer[0] && is_cpu(cpu, in)) {
457  in->decode(instruction, buffer);
458  instruction->mnemonic = in->mnemonic;
459  instruction->op_type = in->op_type;
460  return true;
461  }
462  }
463  return false;
464 }
465 
466 #define AMD29K_IS_6(a, b, c, d, e, f) (t0 == (a) && t1 == (b) && t2 == (c) && t3 == (d) && t4 == (e) && t5 == (f))
467 #define AMD29K_IS_1(a) AMD29K_IS_6(a, (AMD29K_TYPE_UNK), (AMD29K_TYPE_UNK), (AMD29K_TYPE_UNK), (AMD29K_TYPE_UNK), (AMD29K_TYPE_UNK))
468 #define AMD29K_IS_2(a, b) AMD29K_IS_6(a, b, (AMD29K_TYPE_UNK), (AMD29K_TYPE_UNK), (AMD29K_TYPE_UNK), (AMD29K_TYPE_UNK))
469 #define AMD29K_IS_3(a, b, c) AMD29K_IS_6(a, b, c, (AMD29K_TYPE_UNK), (AMD29K_TYPE_UNK), (AMD29K_TYPE_UNK))
470 #define AMD29K_IS_4(a, b, c, d) AMD29K_IS_6(a, b, c, d, (AMD29K_TYPE_UNK), (AMD29K_TYPE_UNK))
471 #define AMD29K_IS_5(a, b, c, d, e) AMD29K_IS_6(a, b, c, d, e, (AMD29K_TYPE_UNK))
472 
474  if (instruction && !strcmp(instruction->mnemonic, "calli") && instruction->operands[0] == 128 && instruction->operands[1] == 128) {
475  return true;
476  }
477  return false;
478 }
479 
481  if (!instruction) {
482  return UT64_MAX;
483  }
484  int t0 = AMD29K_GET_TYPE(instruction, 0);
485  int t1 = AMD29K_GET_TYPE(instruction, 1);
486  int t2 = AMD29K_GET_TYPE(instruction, 2);
487  int t3 = AMD29K_GET_TYPE(instruction, 3);
488  int t4 = AMD29K_GET_TYPE(instruction, 4);
489  int t5 = AMD29K_GET_TYPE(instruction, 5);
490 
491  int v0 = AMD29K_GET_VALUE(instruction, 0);
492  int v1 = AMD29K_GET_VALUE(instruction, 1);
494  return address + ((int)v0);
496  return address + ((int)v1);
497  }
498  return UT64_MAX;
499 }
500 
501 void amd29k_instr_print(char *string, int string_size, ut64 address, amd29k_instr_t *instruction) {
502  if (!string || string_size < 0 || !instruction) {
503  return;
504  }
505  int t0 = AMD29K_GET_TYPE(instruction, 0);
506  int t1 = AMD29K_GET_TYPE(instruction, 1);
507  int t2 = AMD29K_GET_TYPE(instruction, 2);
508  int t3 = AMD29K_GET_TYPE(instruction, 3);
509  int t4 = AMD29K_GET_TYPE(instruction, 4);
510  int t5 = AMD29K_GET_TYPE(instruction, 5);
511 
512  int v0 = AMD29K_GET_VALUE(instruction, 0);
513  int v1 = AMD29K_GET_VALUE(instruction, 1);
514  int v2 = AMD29K_GET_VALUE(instruction, 2);
515  int v3 = AMD29K_GET_VALUE(instruction, 3);
516  int v4 = AMD29K_GET_VALUE(instruction, 4);
517  int v5 = AMD29K_GET_VALUE(instruction, 5);
518 
520  const char *p0 = AMD29K_REGNAME(v0);
521  snprintf(string, string_size, "%s %s%d", instruction->mnemonic, p0, AMD29K_LR(v0));
522 
523  } else if (AMD29K_IS_1(AMD29K_TYPE_IMM)) {
524  if (v0 >= 0) {
525  snprintf(string, string_size, "%s 0x%x", instruction->mnemonic, v0);
526  } else {
527  v0 = 0 - v0;
528  snprintf(string, string_size, "%s -0x%x", instruction->mnemonic, v0);
529  }
530 
531  } else if (AMD29K_IS_1(AMD29K_TYPE_JMP)) {
532  ut64 ptr = address + ((int)v0);
533  snprintf(string, string_size, "%s 0x%" PFMT64x, instruction->mnemonic, ptr);
534 
536  const char *p0 = AMD29K_REGNAME(v0);
537  const char *p1 = AMD29K_REGNAME(v1);
538  snprintf(string, string_size, "%s %s%d %s%d", instruction->mnemonic, p0, AMD29K_LR(v0), p1, AMD29K_LR(v1));
539 
541  const char *p0 = AMD29K_REGNAME(v0);
542  if (v1 >= 0) {
543  snprintf(string, string_size, "%s %s%d 0x%x", instruction->mnemonic, p0, AMD29K_LR(v0), v1);
544  } else {
545  v1 = 0 - v1;
546  snprintf(string, string_size, "%s %s%d -0x%x", instruction->mnemonic, p0, AMD29K_LR(v0), v1);
547  }
548 
550  const char *p0 = AMD29K_REGNAME(v0);
551  ut64 ptr = address + ((int)v1);
552  snprintf(string, string_size, "%s %s%d 0x%" PFMT64x, instruction->mnemonic, p0, AMD29K_LR(v0), ptr);
553 
555  const char *p0 = AMD29K_REGNAME(v0);
556  const char *p1 = AMD29K_REGNAME(v1);
557  const char *p2 = AMD29K_REGNAME(v2);
558  snprintf(string, string_size, "%s %s%d %s%d %s%d", instruction->mnemonic, p0, AMD29K_LR(v0), p1, AMD29K_LR(v1), p2, AMD29K_LR(v2));
559 
561  const char *p0 = AMD29K_REGNAME(v0);
562  const char *p1 = AMD29K_REGNAME(v1);
563  if (v2 >= 0) {
564  snprintf(string, string_size, "%s %s%d %s%d 0x%x", instruction->mnemonic, p0, AMD29K_LR(v0), p1, AMD29K_LR(v1), v2);
565  } else {
566  v2 = 0 - v2;
567  snprintf(string, string_size, "%s %s%d %s%d -0x%x", instruction->mnemonic, p0, AMD29K_LR(v0), p1, AMD29K_LR(v1), v2);
568  }
569 
571  const char *p2 = AMD29K_REGNAME(v2);
572  const char *p3 = AMD29K_REGNAME(v3);
573  snprintf(string, string_size, "%s %d %d %s%d %s%d", instruction->mnemonic, v0, v1, p2, AMD29K_LR(v2), p3, AMD29K_LR(v3));
574 
576  const char *p0 = AMD29K_REGNAME(v0);
577  const char *p1 = AMD29K_REGNAME(v1);
578  snprintf(string, string_size, "%s %s%d %s%d %d %d %d %d", instruction->mnemonic, p0, AMD29K_LR(v0), p1, AMD29K_LR(v1), v2, v3, v4, v5);
579 
580  } else {
581  snprintf(string, string_size, "%s", instruction->mnemonic);
582  }
583  return;
584 }
585 
586 #undef AMD29K_IS_6
587 #undef AMD29K_IS_1
588 #undef AMD29K_IS_2
589 #undef AMD29K_IS_3
590 #undef AMD29K_IS_4
591 #undef AMD29K_IS_5
#define AMD29K_SET_VALUE(x, i, v, t)
Definition: amd29k.c:15
#define AMD29K_IS_2(a, b)
Definition: amd29k.c:468
#define AMD29K_HAS_BIT(x)
Definition: amd29k.c:19
#define AMD29K_IS_4(a, b, c, d)
Definition: amd29k.c:470
static void decode_rc_ra(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:135
static void decode_load_store(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:89
#define AMD29K_LR(x)
Definition: amd29k.c:25
static void decode_ra_i16_sh2(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:59
#define AMD29K_GET_VALUE(x, i)
Definition: amd29k.c:14
static void decode_none(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:207
static void decode_mfsr(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:189
static void decode_mtsr(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:198
static void decode_ra_rb(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:153
static void decode_imm16_sh2(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:76
static void decode_calli(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:98
#define AMD29K_SET_INVALID(x, i)
Definition: amd29k.c:18
static void decode_clz(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:116
const amd29k_instruction_t amd29k_instructions[N_AMD29K_INSTRUCTIONS]
Definition: amd29k.c:217
#define AMD29K_IS_3(a, b, c)
Definition: amd29k.c:469
#define AMD29K_IS_1(a)
Definition: amd29k.c:467
static void decode_rc_ra_imm(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:107
static void decode_rc_imm(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:171
#define CPU_ANY
Definition: amd29k.c:9
#define N_AMD29K_INSTRUCTIONS
Definition: amd29k.c:11
static void decode_ra_rb_rc(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:40
bool amd29k_instr_decode(const ut8 *buffer, const ut32 buffer_size, amd29k_instr_t *instruction, const char *cpu)
Definition: amd29k.c:435
static void decode_ra_imm(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:180
bool amd29k_instr_is_ret(amd29k_instr_t *instruction)
Definition: amd29k.c:473
ut64 amd29k_instr_jump(ut64 address, amd29k_instr_t *instruction)
Definition: amd29k.c:480
static bool is_cpu(const char *cpu, const amd29k_instruction_t *in)
Definition: amd29k.c:427
#define AMD29K_GET_TYPE(x, i)
Definition: amd29k.c:13
static void decode_ra_imm16(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:49
static void decode_convert(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:125
static void decode_rb(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:162
static void decode_ra_rb_rci(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:27
static void decode_dmac_fmac(amd29k_instr_t *instruction, const ut8 *buffer)
Definition: amd29k.c:144
#define AMD29K_REGNAME(x)
Definition: amd29k.c:24
void amd29k_instr_print(char *string, int string_size, ut64 address, amd29k_instr_t *instruction)
Definition: amd29k.c:501
#define AMD29K_IS_6(a, b, c, d, e, f)
Definition: amd29k.c:466
#define CPU_29050
Definition: amd29k.h:14
#define CPU_29000
Definition: amd29k.h:13
@ AMD29K_TYPE_IMM
@ AMD29K_TYPE_JMP
@ AMD29K_TYPE_REG
static ut32 cpu[32]
Definition: analysis_or1k.c:21
lzma_index ** i
Definition: index.h:629
const lzma_allocator const uint8_t * in
Definition: block.h:527
#define NULL
Definition: cris-opc.c:27
uint32_t ut32
snprintf
Definition: kernel.h:364
@ v0
Definition: lanai.h:84
@ v1
Definition: lanai.h:85
uint8_t ut8
Definition: lh5801.h:11
@ RZ_ANALYSIS_OP_TYPE_CMP
Definition: rz_analysis.h:399
@ RZ_ANALYSIS_OP_TYPE_SUB
Definition: rz_analysis.h:402
@ RZ_ANALYSIS_OP_TYPE_ICALL
Definition: rz_analysis.h:381
@ RZ_ANALYSIS_OP_TYPE_LOAD
Definition: rz_analysis.h:416
@ RZ_ANALYSIS_OP_TYPE_MUL
Definition: rz_analysis.h:404
@ RZ_ANALYSIS_OP_TYPE_JMP
Definition: rz_analysis.h:368
@ RZ_ANALYSIS_OP_TYPE_AND
Definition: rz_analysis.h:411
@ RZ_ANALYSIS_OP_TYPE_SAL
Definition: rz_analysis.h:408
@ RZ_ANALYSIS_OP_TYPE_NOR
Definition: rz_analysis.h:413
@ RZ_ANALYSIS_OP_TYPE_NULL
Definition: rz_analysis.h:367
@ RZ_ANALYSIS_OP_TYPE_CALL
Definition: rz_analysis.h:378
@ RZ_ANALYSIS_OP_TYPE_ADD
Definition: rz_analysis.h:401
@ RZ_ANALYSIS_OP_TYPE_OR
Definition: rz_analysis.h:410
@ RZ_ANALYSIS_OP_TYPE_STORE
Definition: rz_analysis.h:415
@ RZ_ANALYSIS_OP_TYPE_RCJMP
Definition: rz_analysis.h:374
@ RZ_ANALYSIS_OP_TYPE_SHR
Definition: rz_analysis.h:406
@ RZ_ANALYSIS_OP_TYPE_RJMP
Definition: rz_analysis.h:370
@ RZ_ANALYSIS_OP_TYPE_CJMP
Definition: rz_analysis.h:373
@ RZ_ANALYSIS_OP_TYPE_DIV
Definition: rz_analysis.h:405
@ RZ_ANALYSIS_OP_TYPE_MOV
Definition: rz_analysis.h:390
@ RZ_ANALYSIS_OP_TYPE_SHL
Definition: rz_analysis.h:407
@ RZ_ANALYSIS_OP_TYPE_RET
Definition: rz_analysis.h:385
@ RZ_ANALYSIS_OP_TYPE_NOP
Definition: rz_analysis.h:389
@ RZ_ANALYSIS_OP_TYPE_XOR
Definition: rz_analysis.h:412
#define PFMT64x
Definition: rz_types.h:393
#define UT64_MAX
Definition: rz_types_base.h:86
static int
Definition: sfsocketcall.h:114
Definition: buffer.h:15
ut64(WINAPI *w32_GetEnabledXStateFeatures)()
#define buffer_size(buffer)