#include <DisassemblerArm.h>
Inheritance diagram for DisassemblerArm:


Most of the useful disassembly methods can be found in the superclass.
Public Member Functions | |
| DisassemblerArm () | |
| DisassemblerArm (const DisassemblerArm &other) | |
| virtual | ~DisassemblerArm () |
| virtual Disassembler * | clone () const |
| Creates a new copy of a disassembler. | |
| virtual bool | can_disassemble (SgAsmGenericHeader *) const |
| See Disassembler::can_disassemble. | |
| virtual SgAsmInstruction * | disassembleOne (const MemoryMap *map, rose_addr_t start_va, AddressSet *successors=NULL) |
| See Disassembler::disassembleOne. | |
| virtual void | assembleOne (SgAsmInstruction *, SgUnsignedCharList &) |
| See Disassembler::assembleOne. | |
| virtual SgAsmInstruction * | make_unknown_instruction (const Exception &) |
| See Disassembler::can_disassemble. | |
Private Member Functions | |
| SgAsmArmRegisterReferenceExpression * | makeRegister (uint8_t reg) const |
| Creates a general-purpose register reference expression. | |
| SgAsmArmRegisterReferenceExpression * | makePsrFields (bool useSPSR, uint8_t fields) const |
| Create a reference to one of the program status registers. | |
| SgAsmArmRegisterReferenceExpression * | makePsr (bool useSPSR) const |
| SgAsmExpression * | makeRotatedImmediate () const |
| SgAsmExpression * | makeShifterField () const |
| Decode last 12 bits and bit 25 (I). | |
| SgAsmArmInstruction * | makeDataProcInstruction (uint8_t opcode, bool s, SgAsmExpression *rn, SgAsmExpression *rd, SgAsmExpression *rhsOperand) |
| SgAsmDoubleWordValueExpression * | makeSplit8bitOffset () const |
| SgAsmDoubleWordValueExpression * | makeBranchTarget () const |
| SgAsmExpression * | decodeMemoryAddress (SgAsmExpression *rn) const |
| SgAsmArmInstruction * | decodeMediaInstruction () const |
| SgAsmArmInstruction * | decodeMultiplyInstruction () const |
| SgAsmArmInstruction * | decodeExtraLoadStores () const |
| SgAsmArmInstruction * | decodeMiscInstruction () const |
| SgAsmArmInstruction * | disassemble () |
| void | init () |
| Initialize instances of this class. | |
| void | startInstruction (rose_addr_t start_va, uint32_t c) |
| Resets disassembler state to beginning of an instruction. | |
Static Private Member Functions | |
| static SgAsmArmInstruction * | makeInstructionWithoutOperands (uint32_t address, const std::string &mnemonic, int condPos, ArmInstructionKind kind, ArmInstructionCondition cond, uint32_t insn) |
Private Attributes | |
| bool | decodeUnconditionalInstructions |
| set by init() | |
| uint32_t | ip |
| instruction pointer | |
| uint32_t | insn |
| 4-byte instruction word | |
| ArmInstructionCondition | cond |
Classes | |
| class | ExceptionArm |
| Same as Disassembler::Exception except with a different constructor for ease of use in DisassemblerArm. More... | |
| DisassemblerArm::DisassemblerArm | ( | ) | [inline] |
| DisassemblerArm::DisassemblerArm | ( | const DisassemblerArm & | other | ) | [inline] |
| virtual DisassemblerArm::~DisassemblerArm | ( | ) | [inline, virtual] |
| virtual Disassembler* DisassemblerArm::clone | ( | ) | const [inline, virtual] |
Creates a new copy of a disassembler.
The new copy has all the same settings as the original.
Thread safety: The thread safety of this virtual method depends on the implementation in the subclass.
Implements Disassembler.
| bool DisassemblerArm::can_disassemble | ( | SgAsmGenericHeader * | ) | const [virtual] |
| SgAsmInstruction * DisassemblerArm::disassembleOne | ( | const MemoryMap * | map, | |
| rose_addr_t | start_va, | |||
| AddressSet * | successors = NULL | |||
| ) | [virtual] |
| virtual void DisassemblerArm::assembleOne | ( | SgAsmInstruction * | , | |
| SgUnsignedCharList & | ||||
| ) | [inline, virtual] |
See Disassembler::assembleOne.
| SgAsmInstruction * DisassemblerArm::make_unknown_instruction | ( | const Exception & | ) | [virtual] |
| SgAsmArmInstruction * DisassemblerArm::makeInstructionWithoutOperands | ( | uint32_t | address, | |
| const std::string & | mnemonic, | |||
| int | condPos, | |||
| ArmInstructionKind | kind, | |||
| ArmInstructionCondition | cond, | |||
| uint32_t | insn | |||
| ) | [static, private] |
| SgAsmArmRegisterReferenceExpression * DisassemblerArm::makeRegister | ( | uint8_t | reg | ) | const [private] |
Creates a general-purpose register reference expression.
| SgAsmArmRegisterReferenceExpression * DisassemblerArm::makePsrFields | ( | bool | useSPSR, | |
| uint8_t | fields | |||
| ) | const [private] |
Create a reference to one of the program status registers.
If useSPSR is true then create a reference to the saved program status register, otherwise create a reference to the current program status register. The fields is a 4-bit mask indicating which individual fields of the register are selected.
The field bits are 0x01 => c control field mask bit 0x02 => x extension field mask bit 0x04 => s status field mask bit 0x08 => f flags field mask bit
| SgAsmArmRegisterReferenceExpression * DisassemblerArm::makePsr | ( | bool | useSPSR | ) | const [private] |
| SgAsmExpression * DisassemblerArm::makeRotatedImmediate | ( | ) | const [private] |
| SgAsmExpression * DisassemblerArm::makeShifterField | ( | ) | const [private] |
Decode last 12 bits and bit 25 (I).
| SgAsmArmInstruction * DisassemblerArm::makeDataProcInstruction | ( | uint8_t | opcode, | |
| bool | s, | |||
| SgAsmExpression * | rn, | |||
| SgAsmExpression * | rd, | |||
| SgAsmExpression * | rhsOperand | |||
| ) | [private] |
| SgAsmDoubleWordValueExpression * DisassemblerArm::makeSplit8bitOffset | ( | ) | const [private] |
| SgAsmDoubleWordValueExpression * DisassemblerArm::makeBranchTarget | ( | ) | const [private] |
| SgAsmExpression * DisassemblerArm::decodeMemoryAddress | ( | SgAsmExpression * | rn | ) | const [private] |
| SgAsmArmInstruction * DisassemblerArm::decodeMediaInstruction | ( | ) | const [private] |
| SgAsmArmInstruction * DisassemblerArm::decodeMultiplyInstruction | ( | ) | const [private] |
| SgAsmArmInstruction * DisassemblerArm::decodeExtraLoadStores | ( | ) | const [private] |
| SgAsmArmInstruction * DisassemblerArm::decodeMiscInstruction | ( | ) | const [private] |
| SgAsmArmInstruction * DisassemblerArm::disassemble | ( | ) | [private] |
| void DisassemblerArm::init | ( | ) | [private] |
Initialize instances of this class.
Called by constructor.
| void DisassemblerArm::startInstruction | ( | rose_addr_t | start_va, | |
| uint32_t | c | |||
| ) | [inline, private] |
Resets disassembler state to beginning of an instruction.
bool DisassemblerArm::decodeUnconditionalInstructions [private] |
set by init()
uint32_t DisassemblerArm::ip [private] |
instruction pointer
uint32_t DisassemblerArm::insn [private] |
4-byte instruction word
ArmInstructionCondition DisassemblerArm::cond [private] |
1.4.7