Browse Source
Dyncom: Remove disassembler code
Dyncom: Remove disassembler code
Had licensing issue around it, in addition to several bugs. Closes #1632, #1280pull/15/merge
4 changed files with 2 additions and 1589 deletions
-
2src/core/CMakeLists.txt
-
1344src/core/arm/disassembler/arm_disasm.cpp
-
238src/core/arm/disassembler/arm_disasm.h
-
7src/core/arm/dyncom/arm_dyncom_interpreter.cpp
1344
src/core/arm/disassembler/arm_disasm.cpp
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -1,238 +0,0 @@ |
|||
// Copyright 2006 The Android Open Source Project |
|||
|
|||
#pragma once |
|||
|
|||
#include <string> |
|||
#include "common/common_types.h" |
|||
|
|||
// Note: this list of opcodes must match the list used to initialize |
|||
// the opflags[] array in opcode.cpp. |
|||
enum Opcode { |
|||
OP_INVALID, |
|||
OP_UNDEFINED, |
|||
OP_ADC, |
|||
OP_ADD, |
|||
OP_AND, |
|||
OP_B, |
|||
OP_BL, |
|||
OP_BIC, |
|||
OP_BKPT, |
|||
OP_BLX, |
|||
OP_BX, |
|||
OP_CDP, |
|||
OP_CLREX, |
|||
OP_CLZ, |
|||
OP_CMN, |
|||
OP_CMP, |
|||
OP_EOR, |
|||
OP_LDC, |
|||
OP_LDM, |
|||
OP_LDR, |
|||
OP_LDRB, |
|||
OP_LDRBT, |
|||
OP_LDREX, |
|||
OP_LDREXB, |
|||
OP_LDREXD, |
|||
OP_LDREXH, |
|||
OP_LDRH, |
|||
OP_LDRSB, |
|||
OP_LDRSH, |
|||
OP_LDRT, |
|||
OP_MCR, |
|||
OP_MLA, |
|||
OP_MOV, |
|||
OP_MRC, |
|||
OP_MRS, |
|||
OP_MSR, |
|||
OP_MUL, |
|||
OP_MVN, |
|||
OP_NOP, |
|||
OP_ORR, |
|||
OP_PKH, |
|||
OP_PLD, |
|||
OP_QADD16, |
|||
OP_QADD8, |
|||
OP_QASX, |
|||
OP_QSAX, |
|||
OP_QSUB16, |
|||
OP_QSUB8, |
|||
OP_REV, |
|||
OP_REV16, |
|||
OP_REVSH, |
|||
OP_RSB, |
|||
OP_RSC, |
|||
OP_SADD16, |
|||
OP_SADD8, |
|||
OP_SASX, |
|||
OP_SBC, |
|||
OP_SEL, |
|||
OP_SEV, |
|||
OP_SHADD16, |
|||
OP_SHADD8, |
|||
OP_SHASX, |
|||
OP_SHSAX, |
|||
OP_SHSUB16, |
|||
OP_SHSUB8, |
|||
OP_SMLAD, |
|||
OP_SMLAL, |
|||
OP_SMLALD, |
|||
OP_SMLSD, |
|||
OP_SMLSLD, |
|||
OP_SMMLA, |
|||
OP_SMMLS, |
|||
OP_SMMUL, |
|||
OP_SMUAD, |
|||
OP_SMULL, |
|||
OP_SMUSD, |
|||
OP_SSAT, |
|||
OP_SSAT16, |
|||
OP_SSAX, |
|||
OP_SSUB16, |
|||
OP_SSUB8, |
|||
OP_STC, |
|||
OP_STM, |
|||
OP_STR, |
|||
OP_STRB, |
|||
OP_STRBT, |
|||
OP_STREX, |
|||
OP_STREXB, |
|||
OP_STREXD, |
|||
OP_STREXH, |
|||
OP_STRH, |
|||
OP_STRT, |
|||
OP_SUB, |
|||
OP_SWI, |
|||
OP_SWP, |
|||
OP_SWPB, |
|||
OP_SXTAB, |
|||
OP_SXTAB16, |
|||
OP_SXTAH, |
|||
OP_SXTB, |
|||
OP_SXTB16, |
|||
OP_SXTH, |
|||
OP_TEQ, |
|||
OP_TST, |
|||
OP_UADD16, |
|||
OP_UADD8, |
|||
OP_UASX, |
|||
OP_UHADD16, |
|||
OP_UHADD8, |
|||
OP_UHASX, |
|||
OP_UHSAX, |
|||
OP_UHSUB16, |
|||
OP_UHSUB8, |
|||
OP_UMLAL, |
|||
OP_UMULL, |
|||
OP_UQADD16, |
|||
OP_UQADD8, |
|||
OP_UQASX, |
|||
OP_UQSAX, |
|||
OP_UQSUB16, |
|||
OP_UQSUB8, |
|||
OP_USAD8, |
|||
OP_USADA8, |
|||
OP_USAT, |
|||
OP_USAT16, |
|||
OP_USAX, |
|||
OP_USUB16, |
|||
OP_USUB8, |
|||
OP_UXTAB, |
|||
OP_UXTAB16, |
|||
OP_UXTAH, |
|||
OP_UXTB, |
|||
OP_UXTB16, |
|||
OP_UXTH, |
|||
OP_WFE, |
|||
OP_WFI, |
|||
OP_YIELD, |
|||
|
|||
// Define thumb opcodes |
|||
OP_THUMB_UNDEFINED, |
|||
OP_THUMB_ADC, |
|||
OP_THUMB_ADD, |
|||
OP_THUMB_AND, |
|||
OP_THUMB_ASR, |
|||
OP_THUMB_B, |
|||
OP_THUMB_BIC, |
|||
OP_THUMB_BKPT, |
|||
OP_THUMB_BL, |
|||
OP_THUMB_BLX, |
|||
OP_THUMB_BX, |
|||
OP_THUMB_CMN, |
|||
OP_THUMB_CMP, |
|||
OP_THUMB_EOR, |
|||
OP_THUMB_LDMIA, |
|||
OP_THUMB_LDR, |
|||
OP_THUMB_LDRB, |
|||
OP_THUMB_LDRH, |
|||
OP_THUMB_LDRSB, |
|||
OP_THUMB_LDRSH, |
|||
OP_THUMB_LSL, |
|||
OP_THUMB_LSR, |
|||
OP_THUMB_MOV, |
|||
OP_THUMB_MUL, |
|||
OP_THUMB_MVN, |
|||
OP_THUMB_NEG, |
|||
OP_THUMB_ORR, |
|||
OP_THUMB_POP, |
|||
OP_THUMB_PUSH, |
|||
OP_THUMB_ROR, |
|||
OP_THUMB_SBC, |
|||
OP_THUMB_STMIA, |
|||
OP_THUMB_STR, |
|||
OP_THUMB_STRB, |
|||
OP_THUMB_STRH, |
|||
OP_THUMB_SUB, |
|||
OP_THUMB_SWI, |
|||
OP_THUMB_TST, |
|||
|
|||
OP_END // must be last |
|||
}; |
|||
|
|||
class ARM_Disasm { |
|||
public: |
|||
static std::string Disassemble(u32 addr, u32 insn); |
|||
static Opcode Decode(u32 insn); |
|||
|
|||
private: |
|||
static Opcode Decode00(u32 insn); |
|||
static Opcode Decode01(u32 insn); |
|||
static Opcode Decode10(u32 insn); |
|||
static Opcode Decode11(u32 insn); |
|||
static Opcode DecodeSyncPrimitive(u32 insn); |
|||
static Opcode DecodeParallelAddSub(u32 insn); |
|||
static Opcode DecodePackingSaturationReversal(u32 insn); |
|||
static Opcode DecodeMUL(u32 insn); |
|||
static Opcode DecodeMSRImmAndHints(u32 insn); |
|||
static Opcode DecodeMediaMulDiv(u32 insn); |
|||
static Opcode DecodeMedia(u32 insn); |
|||
static Opcode DecodeLDRH(u32 insn); |
|||
static Opcode DecodeALU(u32 insn); |
|||
|
|||
static std::string DisassembleALU(Opcode opcode, u32 insn); |
|||
static std::string DisassembleBranch(u32 addr, Opcode opcode, u32 insn); |
|||
static std::string DisassembleBX(u32 insn); |
|||
static std::string DisassembleBKPT(u32 insn); |
|||
static std::string DisassembleCLZ(u32 insn); |
|||
static std::string DisassembleMediaMulDiv(Opcode opcode, u32 insn); |
|||
static std::string DisassembleMemblock(Opcode opcode, u32 insn); |
|||
static std::string DisassembleMem(u32 insn); |
|||
static std::string DisassembleMemHalf(u32 insn); |
|||
static std::string DisassembleMCR(Opcode opcode, u32 insn); |
|||
static std::string DisassembleMLA(Opcode opcode, u32 insn); |
|||
static std::string DisassembleUMLAL(Opcode opcode, u32 insn); |
|||
static std::string DisassembleMUL(Opcode opcode, u32 insn); |
|||
static std::string DisassembleMRS(u32 insn); |
|||
static std::string DisassembleMSR(u32 insn); |
|||
static std::string DisassembleNoOperands(Opcode opcode, u32 insn); |
|||
static std::string DisassembleParallelAddSub(Opcode opcode, u32 insn); |
|||
static std::string DisassemblePKH(u32 insn); |
|||
static std::string DisassemblePLD(u32 insn); |
|||
static std::string DisassembleREV(Opcode opcode, u32 insn); |
|||
static std::string DisassembleREX(Opcode opcode, u32 insn); |
|||
static std::string DisassembleSAT(Opcode opcode, u32 insn); |
|||
static std::string DisassembleSEL(u32 insn); |
|||
static std::string DisassembleSWI(u32 insn); |
|||
static std::string DisassembleSWP(Opcode opcode, u32 insn); |
|||
static std::string DisassembleXT(Opcode opcode, u32 insn); |
|||
}; |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue