/src/capstonenext/arch/WASM/WASMInstPrinter.c
Line | Count | Source |
1 | | /* Capstone Disassembly Engine */ |
2 | | /* By Spike, xwings 2019 */ |
3 | | |
4 | | #include "WASMInstPrinter.h" |
5 | | #include "WASMMapping.h" |
6 | | |
7 | | void WASM_printInst(MCInst *MI, struct SStream *O, void *PrinterInfo) |
8 | 18.0k | { |
9 | 18.0k | SStream_concat(O, WASM_insn_name((csh)MI->csh, MI->Opcode)); |
10 | | |
11 | 18.0k | switch (MI->wasm_data.type) { |
12 | 13.6k | default: |
13 | 13.6k | break; |
14 | | |
15 | 13.6k | case WASM_OP_VARUINT32: |
16 | 800 | SStream_concat(O, "\t0x%x", MI->wasm_data.varuint32); |
17 | 800 | break; |
18 | | |
19 | 198 | case WASM_OP_VARUINT64: |
20 | 198 | SStream_concat(O, "\t0x%lx", MI->wasm_data.varuint64); |
21 | 198 | break; |
22 | | |
23 | 5 | case WASM_OP_UINT32: |
24 | 5 | SStream_concat(O, "\t0x%2" PRIx32, MI->wasm_data.uint32); |
25 | 5 | break; |
26 | | |
27 | 25 | case WASM_OP_UINT64: |
28 | 25 | SStream_concat(O, "\t0x%2" PRIx64, MI->wasm_data.uint64); |
29 | 25 | break; |
30 | | |
31 | 2.84k | case WASM_OP_IMM: |
32 | 2.84k | SStream_concat(O, "\t0x%x, 0x%x", MI->wasm_data.immediate[0], |
33 | 2.84k | MI->wasm_data.immediate[1]); |
34 | 2.84k | break; |
35 | | |
36 | 298 | case WASM_OP_INT7: |
37 | 298 | SStream_concat(O, "\t%d", MI->wasm_data.int7); |
38 | 298 | break; |
39 | | |
40 | 235 | case WASM_OP_BRTABLE: |
41 | 235 | SStream_concat(O, "\t0x%x, [", MI->wasm_data.brtable.length); |
42 | 235 | SStream_concat(O, "0x%x", MI->wasm_data.brtable.address); |
43 | 235 | SStream_concat(O, "], 0x%x", |
44 | 235 | MI->wasm_data.brtable.default_target); |
45 | | |
46 | 235 | break; |
47 | 18.0k | } |
48 | 18.0k | } |