DisassemblerPowerpc Class Reference

#include <DisassemblerPowerpc.h>

Inheritance diagram for DisassemblerPowerpc:

Inheritance graph
[legend]
Collaboration diagram for DisassemblerPowerpc:

Collaboration graph
[legend]
List of all members.

Detailed Description

Disassembler for the PowerPC architecture.


Public Member Functions

 DisassemblerPowerpc ()
 DisassemblerPowerpc (const DisassemblerPowerpc &other)
virtual ~DisassemblerPowerpc ()
virtual DisassemblerPowerpcclone () const
 Creates a new copy of a disassembler.
virtual bool can_disassemble (SgAsmGenericHeader *) const
 Predicate determining the suitability of a disassembler for a specific file header.
virtual SgAsmInstructiondisassembleOne (const MemoryMap *map, rose_addr_t start_va, AddressSet *successors=NULL)
 This is the lowest level disassembly function and is implemented in the architecture-specific subclasses.
virtual void assembleOne (SgAsmInstruction *, SgUnsignedCharList &)
virtual SgAsmInstructionmake_unknown_instruction (const Exception &)

Private Member Functions

SgAsmPowerpcRegisterReferenceExpressionmakeRegister (PowerpcRegisterClass reg_class, int reg_number, PowerpcConditionRegisterAccessGranularity reg_grainularity=powerpc_condreggranularity_whole) const
template<size_t First, size_t Last>
uint32_t fld () const
 Helper function to use field definitions (counted with bits from left and inclusive on both sides) from manual.
bool AA () const
SgAsmPowerpcRegisterReferenceExpressionBA () const
SgAsmPowerpcRegisterReferenceExpressionBB () const
uint64_t BD () const
SgAsmPowerpcRegisterReferenceExpressionBF_cr () const
SgAsmPowerpcRegisterReferenceExpressionBF_fpscr () const
SgAsmPowerpcRegisterReferenceExpressionBFA_cr () const
SgAsmPowerpcRegisterReferenceExpressionBFA_fpscr () const
SgAsmValueExpressionBH () const
SgAsmPowerpcRegisterReferenceExpressionBI () const
SgAsmValueExpressionBO () const
SgAsmPowerpcRegisterReferenceExpressionBT () const
SgAsmValueExpressionD () const
SgAsmValueExpressionDS () const
SgAsmValueExpressionFLM () const
SgAsmPowerpcRegisterReferenceExpressionFRA () const
SgAsmPowerpcRegisterReferenceExpressionFRB () const
SgAsmPowerpcRegisterReferenceExpressionFRC () const
SgAsmPowerpcRegisterReferenceExpressionFRS () const
SgAsmPowerpcRegisterReferenceExpressionFRT () const
SgAsmValueExpressionFXM () const
SgAsmValueExpressionL_10 () const
SgAsmValueExpressionL_15 () const
uint8_t L_sync () const
SgAsmValueExpressionLEV () const
uint64_t LI () const
bool LK () const
SgAsmValueExpressionMB_32bit () const
SgAsmValueExpressionME_32bit () const
SgAsmValueExpressionMB_64bit () const
SgAsmValueExpressionME_64bit () const
SgAsmValueExpressionNB () const
bool OE () const
SgAsmPowerpcRegisterReferenceExpressionRA () const
SgAsmExpressionRA_or_zero () const
SgAsmPowerpcRegisterReferenceExpressionRB () const
bool Rc () const
SgAsmPowerpcRegisterReferenceExpressionRS () const
SgAsmPowerpcRegisterReferenceExpressionRT () const
SgAsmValueExpressionSH_32bit () const
SgAsmValueExpressionSH_64bit () const
SgAsmValueExpressionSI () const
SgAsmPowerpcRegisterReferenceExpressionSPR () const
SgAsmPowerpcRegisterReferenceExpressionSR () const
SgAsmPowerpcRegisterReferenceExpressionTBR () const
SgAsmValueExpressionTH () const
SgAsmValueExpressionTO () const
SgAsmValueExpressionU () const
SgAsmValueExpressionUI () const
SgAsmMemoryReferenceExpressionmemref (SgAsmType *t) const
SgAsmMemoryReferenceExpressionmemrefx (SgAsmType *t) const
SgAsmMemoryReferenceExpressionmemrefu (SgAsmType *t) const
SgAsmMemoryReferenceExpressionmemrefux (SgAsmType *t) const
SgAsmPowerpcInstructiondecode_I_formInstruction ()
SgAsmPowerpcInstructiondecode_B_formInstruction ()
SgAsmPowerpcInstructiondecode_SC_formInstruction ()
SgAsmPowerpcInstructiondecode_DS_formInstruction ()
SgAsmPowerpcInstructiondecode_X_formInstruction_00 ()
SgAsmPowerpcInstructiondecode_X_formInstruction_1F ()
SgAsmPowerpcInstructiondecode_X_formInstruction_3F ()
SgAsmPowerpcInstructiondecode_XL_formInstruction ()
SgAsmPowerpcInstructiondecode_XS_formInstruction ()
SgAsmPowerpcInstructiondecode_A_formInstruction_00 ()
SgAsmPowerpcInstructiondecode_A_formInstruction_04 ()
SgAsmPowerpcInstructiondecode_A_formInstruction_3B ()
SgAsmPowerpcInstructiondecode_A_formInstruction_3F ()
SgAsmPowerpcInstructiondecode_MD_formInstruction ()
SgAsmPowerpcInstructiondecode_MDS_formInstruction ()
SgAsmQuadWordValueExpressionmakeBranchTarget (uint64_t targetAddr) const
SgAsmPowerpcInstructiondisassemble ()
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 SgAsmPowerpcInstructionmakeInstructionWithoutOperands (uint64_t address, const std::string &mnemonic, PowerpcInstructionKind kind, uint32_t insn)

Private Attributes

uint64_t ip
 Instruction pointer.
uint32_t insn
 4-byte instruction word

Classes

class  ExceptionPowerpc
 Same as Disassembler::Exception except with a different constructor for ease of use in DisassemblerPowerpc. More...


Constructor & Destructor Documentation

DisassemblerPowerpc::DisassemblerPowerpc (  )  [inline]

DisassemblerPowerpc::DisassemblerPowerpc ( const DisassemblerPowerpc other  )  [inline]

virtual DisassemblerPowerpc::~DisassemblerPowerpc (  )  [inline, virtual]


Member Function Documentation

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]

template<size_t First, size_t Last>
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.


Member Data Documentation

uint64_t DisassemblerPowerpc::ip [private]

Instruction pointer.

uint32_t DisassemblerPowerpc::insn [private]

4-byte instruction word


The documentation for this class was generated from the following file:
Generated on Tue Jan 31 05:34:03 2012 for ROSE by  doxygen 1.4.7