Skip to content

Commit

Permalink
Add dyninstAPI/emit-power.h
Browse files Browse the repository at this point in the history
  • Loading branch information
hainest committed Apr 3, 2024
1 parent ed859c2 commit 6ebebc8
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 10 deletions.
100 changes: 100 additions & 0 deletions docs/dyninstAPI/developer/emit-power.h.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,103 @@
emit-power.h
############


.. cpp:class:: EmitterPOWER : public Emitter

.. cpp:function:: virtual ~EmitterPOWER()
.. cpp:function:: virtual codeBufIndex_t emitIf(Dyninst::Register, Dyninst::Register, RegControl, codeGen &)
.. cpp:function:: virtual void emitOp(unsigned, Dyninst::Register, Dyninst::Register, Dyninst::Register, codeGen &)
.. cpp:function:: virtual void emitOpImm(unsigned, unsigned, Dyninst::Register, Dyninst::Register, Dyninst::RegValue, codeGen &)
.. cpp:function:: virtual void emitRelOp(unsigned, Dyninst::Register, Dyninst::Register, Dyninst::Register, codeGen &, bool)
.. cpp:function:: virtual void emitRelOpImm(unsigned, Dyninst::Register, Dyninst::Register, Dyninst::RegValue, codeGen &, bool)
.. cpp:function:: virtual void emitDiv(Dyninst::Register, Dyninst::Register, Dyninst::Register, codeGen &, bool)
.. cpp:function:: virtual void emitTimesImm(Dyninst::Register, Dyninst::Register, Dyninst::RegValue, codeGen &)
.. cpp:function:: virtual void emitDivImm(Dyninst::Register, Dyninst::Register, Dyninst::RegValue, codeGen &, bool)
.. cpp:function:: virtual void emitLoad(Dyninst::Register, Dyninst::Address, int, codeGen &)
.. cpp:function:: virtual void emitLoadConst(Dyninst::Register, Dyninst::Address, codeGen &)
.. cpp:function:: virtual void emitLoadIndir(Dyninst::Register, Dyninst::Register, int, codeGen &)
.. cpp:function:: virtual bool emitCallRelative(Dyninst::Register, Dyninst::Address, Dyninst::Register, codeGen &)
.. cpp:function:: virtual bool emitLoadRelative(Dyninst::Register, Dyninst::Address, Dyninst::Register, int, codeGen &)
.. cpp:function:: virtual void emitLoadShared(opCode op, Dyninst::Register dest, const image_variable *var, bool is_local, int size, codeGen &gen, Dyninst::Address offset)
.. cpp:function:: virtual void emitLoadFrameAddr(Dyninst::Register, Dyninst::Address, codeGen &)

......

.. rubric::
These implicitly use the stored originalnon-inst value

.. cpp:function:: virtual void emitLoadOrigFrameRelative(Dyninst::Register, Dyninst::Address, codeGen &)
.. cpp:function:: virtual void emitLoadOrigRegRelative(Dyninst::Register, Dyninst::Address, Dyninst::Register, codeGen &, bool)
.. cpp:function:: virtual void emitLoadOrigRegister(Dyninst::Address, Dyninst::Register, codeGen &)
.. cpp:function:: virtual void emitStore(Dyninst::Address, Dyninst::Register, int, codeGen &)
.. cpp:function:: virtual void emitStoreIndir(Dyninst::Register, Dyninst::Register, int, codeGen &)
.. cpp:function:: virtual void emitStoreFrameRelative(Dyninst::Address, Dyninst::Register, Dyninst::Register, int, codeGen &)
.. cpp:function:: virtual void emitStoreRelative(Dyninst::Register, Dyninst::Address, Dyninst::Register, int, codeGen &)
.. cpp:function:: virtual void emitStoreShared(Dyninst::Register source, const image_variable *var, bool is_local, int size, codeGen &gen)
.. cpp:function:: virtual void emitStoreOrigRegister(Dyninst::Address, Dyninst::Register, codeGen &)
.. cpp:function:: virtual bool emitMoveRegToReg(Dyninst::Register, Dyninst::Register, codeGen &)
.. cpp:function:: virtual bool emitMoveRegToReg(registerSlot *src, registerSlot *dest, codeGen &gen)
.. cpp:function:: virtual Dyninst::Address emitMovePCToReg(Dyninst::Register, codeGen &gen)
.. cpp:function:: virtual Dyninst::Register emitCall(opCode, codeGen &, const std::vector<AstNodePtr> &, bool, func_instance *)

This one we actually use now.

.. cpp:function:: virtual void emitGetRetVal(Dyninst::Register, bool, codeGen &)
.. cpp:function:: virtual void emitGetRetAddr(Dyninst::Register, codeGen &)
.. cpp:function:: virtual void emitGetParam(Dyninst::Register, Dyninst::Register, instPoint::Type, opCode, bool, codeGen &)
.. cpp:function:: virtual void emitASload(int, int, int, long, Dyninst::Register, int, codeGen &)
.. cpp:function:: virtual void emitCSload(int, int, int, long, Dyninst::Register, codeGen &)
.. cpp:function:: virtual void emitPushFlags(codeGen &)
.. cpp:function:: virtual void emitRestoreFlags(codeGen &, unsigned)
.. cpp:function:: virtual void emitRestoreFlagsFromStackSlot(codeGen &)
.. cpp:function:: virtual bool emitBTSaves(baseTramp *, codeGen &)
.. cpp:function:: virtual bool emitBTRestores(baseTramp *, codeGen &)
.. cpp:function:: virtual void emitStoreImm(Dyninst::Address, int, codeGen &, bool)
.. cpp:function:: virtual void emitAddSignedImm(Dyninst::Address, int, codeGen &, bool)
.. cpp:function:: virtual int Register_DWARFtoMachineEnc(int)
.. cpp:function:: virtual bool emitPush(codeGen &, Dyninst::Register)
.. cpp:function:: virtual bool emitPop(codeGen &, Dyninst::Register)
.. cpp:function:: virtual bool emitAdjustStackPointer(int, codeGen &)
.. cpp:function:: virtual bool clobberAllFuncCall(registerSpace *rs, func_instance *callee)
.. cpp:function:: virtual Dyninst::Register emitCallReplacement(opCode, codeGen &, bool, func_instance *)
.. cpp:function:: void emitCallWithSaves(codeGen &gen, Dyninst::Address dest, bool saveToc, bool saveLR, bool saveR12)
.. cpp:function:: protected virtual bool emitCallInstruction(codeGen &, func_instance *, bool, Dyninst::Address)


.. cpp:class:: EmitterPOWER32Dyn : public EmitterPOWER

.. cpp:function:: virtual ~EmitterPOWER32Dyn()


.. cpp:class:: EmitterPOWER32Stat : public EmitterPOWER

.. cpp:function:: virtual ~EmitterPOWER32Stat()
.. cpp:function:: virtual bool emitPLTCall(func_instance *dest, codeGen &gen)
.. cpp:function:: virtual bool emitPLTJump(func_instance *dest, codeGen &gen)
.. cpp:function:: virtual bool emitTOCCall(block_instance *dest, codeGen &gen)
.. cpp:function:: virtual bool emitTOCJump(block_instance *dest, codeGen &gen)
.. cpp:function:: protected virtual bool emitCallInstruction(codeGen &, func_instance *, bool, Dyninst::Address)
.. cpp:function:: protected virtual Dyninst::Register emitCallReplacement(opCode, codeGen &, bool, func_instance *)
.. cpp:function:: private bool emitPLTCommon(func_instance *dest, bool call, codeGen &gen)
.. cpp:function:: private bool emitTOCCommon(block_instance *dest, bool call, codeGen &gen)


.. cpp:class:: EmitterPOWER64Dyn : public EmitterPOWER

.. cpp:function:: virtual bool emitTOCCall(block_instance *dest, codeGen &gen)
.. cpp:function:: virtual bool emitTOCJump(block_instance *dest, codeGen &gen)
.. cpp:function:: virtual ~EmitterPOWER64Dyn()
.. cpp:function:: private bool emitTOCCommon(block_instance *dest, bool call, codeGen &gen)


.. cpp:class:: EmitterPOWER64Stat : public EmitterPOWER

.. cpp:function:: virtual ~EmitterPOWER64Stat()
.. cpp:function:: virtual bool emitPLTCall(func_instance *dest, codeGen &gen)
.. cpp:function:: virtual bool emitPLTJump(func_instance *dest, codeGen &gen)
.. cpp:function:: virtual bool emitTOCCall(block_instance *dest, codeGen &gen)
.. cpp:function:: virtual bool emitTOCJump(block_instance *dest, codeGen &gen)
.. cpp:function:: protected virtual bool emitCallInstruction(codeGen &, func_instance *, bool, Dyninst::Address)
.. cpp:function:: protected virtual Dyninst::Register emitCallReplacement(opCode, codeGen &, bool, func_instance *)
.. cpp:function:: private bool emitPLTCommon(func_instance *dest, bool call, codeGen &gen)
.. cpp:function:: private bool emitTOCCommon(block_instance *dest, bool call, codeGen &gen)
10 changes: 0 additions & 10 deletions dyninstAPI/src/emit-power.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

/*
* emit-x86.h - x86 & AMD64 code generators
* $Id: emit-power.h,v 1.6 2008/03/25 19:24:26 bernat Exp $
*/

#ifndef _EMITTER_POWER_H
#define _EMITTER_POWER_H

Expand All @@ -49,8 +44,6 @@ class codeGen;
class registerSpace;
class baseTramp;

// class for encapsulating
// platform dependent code generation functions
class EmitterPOWER : public Emitter {

public:
Expand All @@ -72,7 +65,6 @@ class EmitterPOWER : public Emitter {
virtual void emitLoadShared(opCode op, Register dest, const image_variable *var, bool is_local, int size, codeGen &gen, Address offset);
virtual void emitLoadFrameAddr(Register, Address, codeGen &) { assert(0); }

// These implicitly use the stored original/non-inst value
virtual void emitLoadOrigFrameRelative(Register, Address, codeGen &) { assert(0); }
virtual void emitLoadOrigRegRelative(Register, Address, Register, codeGen &, bool) { assert(0); }
virtual void emitLoadOrigRegister(Address, Register, codeGen &) { assert(0); }
Expand All @@ -91,7 +83,6 @@ class EmitterPOWER : public Emitter {

virtual Address emitMovePCToReg(Register, codeGen& gen);

// This one we actually use now.
virtual Register emitCall(opCode, codeGen &, const std::vector<AstNodePtr> &,
bool, func_instance *);

Expand All @@ -102,7 +93,6 @@ class EmitterPOWER : public Emitter {
virtual void emitCSload(int, int, int, long, Register, codeGen &) { assert(0); }
virtual void emitPushFlags(codeGen &) { assert(0); }
virtual void emitRestoreFlags(codeGen &, unsigned) { assert(0); }
// Built-in offset...
virtual void emitRestoreFlagsFromStackSlot(codeGen &) { assert(0); }
virtual bool emitBTSaves(baseTramp*, codeGen &) { assert(0); return true;}
virtual bool emitBTRestores(baseTramp*, codeGen &) { assert(0); return true; }
Expand Down

0 comments on commit 6ebebc8

Please sign in to comment.