| /* Capstone Disassembly Engine */ |
| /* By Spike, xwings 2019 */ |
| |
| #include "WASMInstPrinter.h" |
| #include "WASMMapping.h" |
| |
| |
| void WASM_printInst(MCInst *MI, struct SStream *O, void *PrinterInfo) |
| { |
| SStream_concat(O, WASM_insn_name((csh)MI->csh, MI->Opcode)); |
| |
| switch (MI->wasm_data.type) { |
| default: |
| break; |
| |
| case WASM_OP_VARUINT32: |
| SStream_concat(O, "\t0x%x", MI->wasm_data.varuint32); |
| break; |
| |
| case WASM_OP_VARUINT64: |
| SStream_concat(O, "\t0x%lx", MI->wasm_data.varuint64); |
| break; |
| |
| case WASM_OP_UINT32: |
| SStream_concat(O, "\t0x%2" PRIx32, MI->wasm_data.uint32); |
| break; |
| |
| case WASM_OP_UINT64: |
| SStream_concat(O, "\t0x%2" PRIx64, MI->wasm_data.uint64); |
| break; |
| |
| case WASM_OP_IMM: |
| SStream_concat(O, "\t0x%x, 0x%x", MI->wasm_data.immediate[0], MI->wasm_data.immediate[1]); |
| break; |
| |
| case WASM_OP_INT7: |
| SStream_concat(O, "\t%d", MI->wasm_data.int7); |
| break; |
| |
| case WASM_OP_BRTABLE: |
| SStream_concat(O, "\t0x%x, [", MI->wasm_data.brtable.length); |
| SStream_concat(O, "0x%x", MI->wasm_data.brtable.address); |
| SStream_concat(O, "], 0x%x", MI->wasm_data.brtable.default_target); |
| |
| break; |
| } |
| } |