mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-13 15:18:03 -05:00
core: Make the ARM disassembler use std::string internally
This commit is contained in:
@ -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 */
|
||||
|
Reference in New Issue
Block a user