#include <frontend/sparcfrontend.h>
Inheritance diagram for SparcFrontEnd:
Definition at line 18 of file sparcfrontend.h.
Public Member Functions | |
virtual std::vector< Exp * > & | getDefaultParams () |
virtual std::vector< Exp * > & | getDefaultReturns () |
virtual platform | getFrontEndId () |
virtual ADDRESS | getMainEntryPoint (bool &gotMain) |
virtual bool | processProc (ADDRESS uAddr, UserProc *pProc, std::ofstream &os, bool frag=false, bool spec=false) |
SparcFrontEnd (BinaryFile *pBF, Prog *prog, BinaryFileFactory *pbff) | |
virtual | ~SparcFrontEnd () |
Virtual destructor. | |
Private Member Functions | |
void | appendAssignment (Exp *lhs, Exp *rhs, Type *type, ADDRESS addr, std::list< RTL * > *lrtl) |
bool | case_CALL (ADDRESS &address, DecodeResult &inst, DecodeResult &delay_inst, std::list< RTL * > *&BB_rtls, UserProc *proc, std::list< CallStatement * > &callList, std::ofstream &os, bool isPattern=false) |
bool | case_DD (ADDRESS &address, int delta, DecodeResult &inst, DecodeResult &delay_inst, std::list< RTL * > *&BB_rtls, TargetQueue &tq, UserProc *proc, std::list< CallStatement * > &callList) |
bool | case_SCD (ADDRESS &address, int delta, ADDRESS hiAddress, DecodeResult &inst, DecodeResult &delay_inst, std::list< RTL * > *&BB_rtls, Cfg *cfg, TargetQueue &tq) |
bool | case_SCDAN (ADDRESS &address, int delta, ADDRESS hiAddress, DecodeResult &inst, DecodeResult &delay_inst, std::list< RTL * > *&BB_rtls, Cfg *cfg, TargetQueue &tq) |
void | case_SD (ADDRESS &address, int delta, ADDRESS hiAddress, DecodeResult &inst, DecodeResult &delay_inst, std::list< RTL * > *&BB_rtls, Cfg *cfg, TargetQueue &tq, std::ofstream &os) |
void | case_unhandled_stub (ADDRESS addr) |
void | emitCopyPC (std::list< RTL * > *pRtls, ADDRESS uAddr) |
void | emitNop (std::list< RTL * > *pRtls, ADDRESS uAddr) |
unsigned | fetch4 (unsigned char *ptr) |
void | gen32op32gives64 (OPER op, std::list< RTL * > *lrtl, ADDRESS addr) |
void | handleBranch (ADDRESS dest, ADDRESS hiAddress, BasicBlock *&newBB, Cfg *cfg, TargetQueue &tq) |
void | handleCall (UserProc *proc, ADDRESS dest, BasicBlock *callBB, Cfg *cfg, ADDRESS address, int offset=0) |
bool | helperFunc (ADDRESS dest, ADDRESS addr, std::list< RTL * > *lrtl) |
bool | helperFuncLong (ADDRESS dest, ADDRESS addr, std::list< RTL * > *lrtl, std::string &name) |
BasicBlock * | optimise_CallReturn (CallStatement *call, RTL *rtl, RTL *delay, UserProc *pProc) |
bool | optimise_DelayCopy (ADDRESS src, ADDRESS dest, int delta, ADDRESS uUpper) |
void | quadOperation (ADDRESS addr, std::list< RTL * > *lrtl, OPER op) |
void | warnDCTcouple (ADDRESS uAt, ADDRESS uDest) |
Private Attributes | |
DecodeResult | nop_inst |
|
Definition at line 1495 of file sparcfrontend.cpp. References NOP, nop_inst, DecodeResult::numBytes, FrontEnd::prog, DecodeResult::rtl, DecodeResult::type, and DecodeResult::valid. |
|
Virtual destructor.
Definition at line 1504 of file sparcfrontend.cpp. |
|
Definition at line 1253 of file sparcfrontend.cpp. Referenced by helperFuncLong(), and quadOperation(). |
|
Definition at line 225 of file sparcfrontend.cpp. References Boomerang::get(), RTL::getList(), CallStatement::isReturnAfterCall(), NOP, RTL::print(), DecodeResult::rtl, DecodeResult::type, and RTL::updateAddress(). |
|
Definition at line 412 of file sparcfrontend.cpp. References COMPCALL, COMPJUMP, FrontEnd::createReturnBlock(), UserProc::getCFG(), BasicBlock::getDest(), Statement::getKind(), RTL::getList(), Cfg::newBB(), NOP, NULL, BasicBlock::processSwitch(), DecodeResult::rtl, STMT_CALL, STMT_CASE, STMT_RET, DecodeResult::type, and RTL::updateAddress(). |
|
Definition at line 515 of file sparcfrontend.cpp. References Cfg::addOutEdge(), RTL::areFlagsAffected(), GotoStatement::getFixedDest(), RTL::getList(), handleBranch(), RTL::isCall(), Cfg::newBB(), NOP, NULL, DecodeResult::rtl, TWOWAY, DecodeResult::type, and RTL::updateAddress(). |
|
Definition at line 628 of file sparcfrontend.cpp. References Cfg::addOutEdge(), GotoStatement::adjustFixedDest(), GotoStatement::getFixedDest(), RTL::getList(), handleBranch(), Cfg::newBB(), NULL, ONEWAY, optimise_DelayCopy(), DecodeResult::rtl, BasicBlock::setJumpReqd(), TWOWAY, RTL::updateAddress(), and TargetQueue::visit(). |
|
Definition at line 357 of file sparcfrontend.cpp. References GotoStatement::adjustFixedDest(), GotoStatement::getFixedDest(), RTL::getList(), handleBranch(), Cfg::newBB(), NOP, NULL, ONEWAY, optimise_DelayCopy(), DecodeResult::rtl, and DecodeResult::type. |
|
Definition at line 206 of file sparcfrontend.cpp. |
|
Definition at line 1229 of file sparcfrontend.cpp. References RTL::appendStmt(), opPC, and Location::regOf(). |
|
Definition at line 1209 of file sparcfrontend.cpp. References RTL::updateAddress(). |
|
|
|
Definition at line 1361 of file sparcfrontend.cpp. References opAt, opMachFtr, opSgnEx, opTruncs, Location::regOf(), and Location::tempOf(). Referenced by helperFuncLong(). |
|
Implements FrontEnd. Definition at line 682 of file sparcfrontend.cpp. References Location::regOf(). |
|
Implements FrontEnd. Definition at line 699 of file sparcfrontend.cpp. References Location::regOf(). |
|
Implements FrontEnd. Definition at line 31 of file sparcfrontend.h. References PLAT_SPARC. |
|
Implements FrontEnd. Definition at line 1514 of file sparcfrontend.cpp. References BinaryFile::GetEntryPoint(), BinaryFile::GetMainEntryPoint(), NO_ADDRESS, FrontEnd::pBF, and start(). |
|
Definition at line 153 of file sparcfrontend.cpp. References NULL, and TargetQueue::visit(). Referenced by case_SCD(), case_SCDAN(), and case_SD(). |
|
Definition at line 178 of file sparcfrontend.cpp. References Prog::findProc(), Boomerang::get(), Proc::getProg(), and NULL. |
|
Reimplemented from FrontEnd. Definition at line 1277 of file sparcfrontend.cpp. References helperFuncLong(), BinaryFile::IsDynamicLinkedProc(), NULL, opDiv, opDivs, opFDiv, opFMinus, opFMult, opFPlus, opMod, opMods, opMult, opMults, FrontEnd::pBF, quadOperation(), Location::regOf(), and BinaryFile::SymbolByAddress(). |
|
Definition at line 1416 of file sparcfrontend.cpp. References appendAssignment(), gen32op32gives64(), opDiv, opDivs, opFDiv, opFMinus, opFMult, opFPlus, opMod, opMods, opMult, opMults, quadOperation(), and Location::regOf(). Referenced by helperFunc(). |
|
Definition at line 114 of file sparcfrontend.cpp. References FrontEnd::createReturnBlock(), RTL::elementAt(), RTL::getAddress(), RTL::getNumStmt(), Statement::isAssign(), and CallStatement::isReturnAfterCall(). |
|
Definition at line 80 of file sparcfrontend.cpp. Referenced by case_SCDAN(), and case_SD(). |
|
Reimplemented from FrontEnd. Definition at line 727 of file sparcfrontend.cpp. References DD, FrontEnd::decodeInstruction(), Boomerang::get(), UserProc::getCFG(), Statement::getKind(), RTL::getList(), BinaryFile::getTextDelta(), TargetQueue::initial(), LOG, TargetQueue::nextAddress(), NO_ADDRESS, NULL, FrontEnd::pBF, FrontEnd::previouslyDecoded, STMT_CALL, STMT_RET, FrontEnd::targetQueue, and Boomerang::traceDecoder. |
|
Definition at line 1265 of file sparcfrontend.cpp. References appendAssignment(), Location::memOf(), opPlus, and Location::regOf(). Referenced by helperFunc(), and helperFuncLong(). |
|
Definition at line 61 of file sparcfrontend.cpp. |
|
Definition at line 90 of file sparcfrontend.h. Referenced by SparcFrontEnd(). |