diff options
author | Lioncash <mathew1800@gmail.com> | 2014-09-06 20:37:19 +0200 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2014-09-06 20:45:56 +0200 |
commit | 403c84cdabe0eab9b2ec1a1effdb9beac5d09853 (patch) | |
tree | 1f9c5fdc2f9b217ab881d8d822e66f482cd41b73 /src/core/arm/disassembler/arm_disasm.h | |
parent | Merge pull request #88 from archshift/remove-atomic (diff) | |
download | yuzu-403c84cdabe0eab9b2ec1a1effdb9beac5d09853.tar yuzu-403c84cdabe0eab9b2ec1a1effdb9beac5d09853.tar.gz yuzu-403c84cdabe0eab9b2ec1a1effdb9beac5d09853.tar.bz2 yuzu-403c84cdabe0eab9b2ec1a1effdb9beac5d09853.tar.lz yuzu-403c84cdabe0eab9b2ec1a1effdb9beac5d09853.tar.xz yuzu-403c84cdabe0eab9b2ec1a1effdb9beac5d09853.tar.zst yuzu-403c84cdabe0eab9b2ec1a1effdb9beac5d09853.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/arm/disassembler/arm_disasm.h | 63 |
1 files changed, 29 insertions, 34 deletions
diff --git a/src/core/arm/disassembler/arm_disasm.h b/src/core/arm/disassembler/arm_disasm.h index 9600e2ade..f94bd4669 100644 --- a/src/core/arm/disassembler/arm_disasm.h +++ b/src/core/arm/disassembler/arm_disasm.h @@ -1,9 +1,9 @@ // Copyright 2006 The Android Open Source Project -#ifndef ARMDIS_H -#define ARMDIS_H +#pragma once -#include <stdint.h> +#include <cstdint> +#include <string> // Note: this list of opcodes must match the list used to initialize // the opflags[] array in opcode.cpp. @@ -109,38 +109,33 @@ enum Opcode { class ARM_Disasm { public: - static char *disasm(uint32_t addr, uint32_t insn, char *buffer); - static Opcode decode(uint32_t insn); + static std::string Disassemble(uint32_t addr, uint32_t insn); + static Opcode Decode(uint32_t insn); private: - static Opcode decode00(uint32_t insn); - static Opcode decode01(uint32_t insn); - static Opcode decode10(uint32_t insn); - static Opcode decode11(uint32_t insn); - static Opcode decode_mul(uint32_t insn); - static Opcode decode_ldrh(uint32_t insn); - static Opcode decode_alu(uint32_t insn); + static Opcode Decode00(uint32_t insn); + static Opcode Decode01(uint32_t insn); + static Opcode Decode10(uint32_t insn); + static Opcode Decode11(uint32_t insn); + static Opcode DecodeMUL(uint32_t insn); + static Opcode DecodeLDRH(uint32_t insn); + static Opcode DecodeALU(uint32_t insn); - static char *disasm_alu(Opcode opcode, uint32_t insn, char *ptr); - static char *disasm_branch(uint32_t addr, Opcode opcode, uint32_t insn, char *ptr); - static char *disasm_bx(uint32_t insn, char *ptr); - static char *disasm_bkpt(uint32_t insn, char *ptr); - static char *disasm_clz(uint32_t insn, char *ptr); - static char *disasm_memblock(Opcode opcode, uint32_t insn, char *ptr); - static char *disasm_mem(uint32_t insn, char *ptr); - static char *disasm_memhalf(uint32_t insn, char *ptr); - static char *disasm_mcr(Opcode opcode, uint32_t insn, char *ptr); - static char *disasm_mla(Opcode opcode, uint32_t insn, char *ptr); - static char *disasm_umlal(Opcode opcode, uint32_t insn, char *ptr); - static char *disasm_mul(Opcode opcode, uint32_t insn, char *ptr); - static char *disasm_mrs(uint32_t insn, char *ptr); - static char *disasm_msr(uint32_t insn, char *ptr); - static char *disasm_pld(uint32_t insn, char *ptr); - static char *disasm_swi(uint32_t insn, char *ptr); - static char *disasm_swp(Opcode opcode, uint32_t insn, char *ptr); + static std::string DisassembleALU(Opcode opcode, uint32_t insn); + static std::string DisassembleBranch(uint32_t addr, Opcode opcode, uint32_t insn); + static std::string DisassembleBX(uint32_t insn); + static std::string DisassembleBKPT(uint32_t insn); + static std::string DisassembleCLZ(uint32_t insn); + static std::string DisassembleMemblock(Opcode opcode, uint32_t insn); + static std::string DisassembleMem(uint32_t insn); + static std::string DisassembleMemHalf(uint32_t insn); + static std::string DisassembleMCR(Opcode opcode, uint32_t insn); + static std::string DisassembleMLA(Opcode opcode, uint32_t insn); + static std::string DisassembleUMLAL(Opcode opcode, uint32_t insn); + static std::string DisassembleMUL(Opcode opcode, uint32_t insn); + static std::string DisassembleMRS(uint32_t insn); + static std::string DisassembleMSR(uint32_t insn); + static std::string DisassemblePLD(uint32_t insn); + static std::string DisassembleSWI(uint32_t insn); + static std::string DisassembleSWP(Opcode opcode, uint32_t insn); }; - -extern char *disasm_insn_thumb(uint32_t pc, uint32_t insn1, uint32_t insn2, char *result); -extern Opcode decode_insn_thumb(uint32_t given); - -#endif /* ARMDIS_H */ |