diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2024-03-05 19:50:13 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2024-03-05 20:34:34 -0500 |
| commit | e093c21ed880ac3eb72119be15093ee04f8ce299 (patch) | |
| tree | 9f720ebdc0ae415734b1199ed341668c69710a94 /arch/arm64/disassembler/gofer.c | |
| parent | 0609276712622908254065546102381466033141 (diff) | |
Move architecture modules into the API repo
Diffstat (limited to 'arch/arm64/disassembler/gofer.c')
| -rw-r--r-- | arch/arm64/disassembler/gofer.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/arm64/disassembler/gofer.c b/arch/arm64/disassembler/gofer.c new file mode 100644 index 00000000..7f0df371 --- /dev/null +++ b/arch/arm64/disassembler/gofer.c @@ -0,0 +1,28 @@ +#include <stdio.h> +#include <stdint.h> +#include <stddef.h> +#include <string.h> +#include <stdbool.h> + +#include "decode.h" +#include "format.h" + +void disassemble(uint64_t addr, uint8_t *data, int len, char *result, bool verbose) +{ + Instruction instr; + memset(&instr, 0, sizeof(instr)); + + aarch64_decompose(*(uint32_t *)data, &instr, addr); + + aarch64_disassemble(&instr, result, 1024); +} + +uint32_t get_encoding(uint8_t *data) +{ + Instruction instr; + //printf("sizeof(instr): %lu\n", sizeof(instr)); + //printf("sizeof(instr.encoding): %lu\n", sizeof(instr.encoding)); + memset(&instr, 0, sizeof(instr)); + aarch64_decompose(*(uint32_t *)data, &instr, 0); + return instr.encoding; +} |
