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


| DisassemblerPowerpc::DisassemblerPowerpc | ( | ) | [inline] |
| DisassemblerPowerpc::DisassemblerPowerpc | ( | const DisassemblerPowerpc & | other | ) | [inline] |
| virtual DisassemblerPowerpc::~DisassemblerPowerpc | ( | ) | [inline, virtual] |
| virtual DisassemblerPowerpc* DisassemblerPowerpc::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.
| virtual bool DisassemblerPowerpc::can_disassemble | ( | SgAsmGenericHeader * | ) | const [virtual] |
Predicate determining the suitability of a disassembler for a specific file header.
If this disassembler is capable of disassembling machine code described by the specified file header, then this predicate returns true, otherwise it returns false.
Thread safety: The thread safety of this virtual method depends on the implementation in the subclass.
Implements Disassembler.
| virtual SgAsmInstruction* DisassemblerPowerpc::disassembleOne | ( | const MemoryMap * | map, | |
| rose_addr_t | start_va, | |||
| AddressSet * | successors = NULL | |||
| ) | [virtual] |
This is the lowest level disassembly function and is implemented in the architecture-specific subclasses.
It disassembles one instruction at the specified virtual address. The map is a mapping from virtual addresses to buffer and enables instructions to span file segments that are mapped contiguously in virtual memory by the loader but which might not be contiguous in the file. The instruction's successor virtual addresses are added to the optional successor set (note that successors of an individual instruction can also be obtained via SgAsmInstruction::get_successors). If the instruction cannot be disassembled then an exception is thrown and the successors set is not modified.
Thread safety: The safety of this method depends on its implementation in the subclass. In any case, no other thread can be modifying the MemoryMap or successors set at the same time.
Implements Disassembler.
| virtual void DisassemblerPowerpc::assembleOne | ( | SgAsmInstruction * | , | |
| SgUnsignedCharList & | ||||
| ) | [inline, virtual] |
| virtual SgAsmInstruction* DisassemblerPowerpc::make_unknown_instruction | ( | const Exception & | ) | [virtual] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::makeRegister | ( | PowerpcRegisterClass | reg_class, | |
| int | reg_number, | |||
| PowerpcConditionRegisterAccessGranularity | reg_grainularity = powerpc_condreggranularity_whole | |||
| ) | const [private] |
| static SgAsmPowerpcInstruction* DisassemblerPowerpc::makeInstructionWithoutOperands | ( | uint64_t | address, | |
| const std::string & | mnemonic, | |||
| PowerpcInstructionKind | kind, | |||
| uint32_t | insn | |||
| ) | [static, private] |
| uint32_t DisassemblerPowerpc::fld | ( | ) | const [private] |
Helper function to use field definitions (counted with bits from left and inclusive on both sides) from manual.
| bool DisassemblerPowerpc::AA | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::BA | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::BB | ( | ) | const [inline, private] |
| uint64_t DisassemblerPowerpc::BD | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::BF_cr | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::BF_fpscr | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::BFA_cr | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::BFA_fpscr | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::BH | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::BI | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::BO | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::BT | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::D | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::DS | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::FLM | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::FRA | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::FRB | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::FRC | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::FRS | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::FRT | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::FXM | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::L_10 | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::L_15 | ( | ) | const [inline, private] |
| uint8_t DisassemblerPowerpc::L_sync | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::LEV | ( | ) | const [inline, private] |
| uint64_t DisassemblerPowerpc::LI | ( | ) | const [inline, private] |
| bool DisassemblerPowerpc::LK | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::MB_32bit | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::ME_32bit | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::MB_64bit | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::ME_64bit | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::NB | ( | ) | const [inline, private] |
| bool DisassemblerPowerpc::OE | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::RA | ( | ) | const [inline, private] |
| SgAsmExpression* DisassemblerPowerpc::RA_or_zero | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::RB | ( | ) | const [inline, private] |
| bool DisassemblerPowerpc::Rc | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::RS | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::RT | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::SH_32bit | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::SH_64bit | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::SI | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::SPR | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::SR | ( | ) | const [inline, private] |
| SgAsmPowerpcRegisterReferenceExpression* DisassemblerPowerpc::TBR | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::TH | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::TO | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::U | ( | ) | const [inline, private] |
| SgAsmValueExpression* DisassemblerPowerpc::UI | ( | ) | const [inline, private] |
| SgAsmMemoryReferenceExpression* DisassemblerPowerpc::memref | ( | SgAsmType * | t | ) | const [inline, private] |
| SgAsmMemoryReferenceExpression* DisassemblerPowerpc::memrefx | ( | SgAsmType * | t | ) | const [inline, private] |
| SgAsmMemoryReferenceExpression* DisassemblerPowerpc::memrefu | ( | SgAsmType * | t | ) | const [inline, private] |
| SgAsmMemoryReferenceExpression* DisassemblerPowerpc::memrefux | ( | SgAsmType * | t | ) | const [inline, private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_I_formInstruction | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_B_formInstruction | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_SC_formInstruction | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_DS_formInstruction | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_X_formInstruction_00 | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_X_formInstruction_1F | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_X_formInstruction_3F | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_XL_formInstruction | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_XS_formInstruction | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_A_formInstruction_00 | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_A_formInstruction_04 | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_A_formInstruction_3B | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_A_formInstruction_3F | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_MD_formInstruction | ( | ) | [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::decode_MDS_formInstruction | ( | ) | [private] |
| SgAsmQuadWordValueExpression* DisassemblerPowerpc::makeBranchTarget | ( | uint64_t | targetAddr | ) | const [private] |
| SgAsmPowerpcInstruction* DisassemblerPowerpc::disassemble | ( | ) | [private] |
| void DisassemblerPowerpc::init | ( | ) | [private] |
Initialize instances of this class.
Called by constructor.
| void DisassemblerPowerpc::startInstruction | ( | rose_addr_t | start_va, | |
| uint32_t | c | |||
| ) | [inline, private] |
Resets disassembler state to beginning of an instruction.
uint64_t DisassemblerPowerpc::ip [private] |
Instruction pointer.
uint32_t DisassemblerPowerpc::insn [private] |
4-byte instruction word
1.4.7