x86dis.h - vx32 - Local 9vx git repository for patches.
(HTM) git clone git://r-36.net/vx32
(DIR) Log
(DIR) Files
(DIR) Refs
---
x86dis.h (765B)
---
1 // X86 assembly library, adapted for use in VX32
2
3 #include <stdint.h>
4
5 typedef struct xdarg xdarg;
6 typedef struct xdinst xdinst;
7 typedef struct xinst xinst;
8
9 struct xinst
10 {
11 int op;
12 int flags;
13 int arg1;
14 int arg2;
15 int arg3;
16 xinst *sub;
17 };
18
19 // Decoded instruction argument.
20 struct xdarg
21 {
22 int op; // Kind of argument (DA_NONE, ...)
23 int reg;
24 int index;
25 int scale;
26 int seg; // Segment number (>=0) or register (<0).
27 uint32_t disp;
28 };
29
30 // Decoded instruction.
31 struct xdinst
32 {
33 uint32_t addr;
34 uint32_t len;
35 char *name; // Mnemonic.
36 int opsz; // Operand size: 8, 16, 32
37 int flags;
38 xdarg arg[3]; // Instruction arguments.
39 };
40
41 uint8_t* x86decode(uint8_t *a0, uint8_t *a, xdinst *dec);
42 int x86print(char *buf, int nbuf, xdinst *dec);