#ifndef STARSInstruction_h #define STARSInstruction_h #include <stdint.h> #include <assert.h> #include <map> #include "interfaces/SMPDBInterface.h" class STARS_Instruction_t { public: STARS_Instruction_t(const STARS_InstructionID_t& p_id) : m_id(p_id) { p_id.AddIDToInsnMapping(this);} virtual STARS_InstructionID_t GetNextInstructionID() = 0; virtual STARS_InstructionID_t GetTargetInstructionID() = 0; virtual bool STARS_GetCmd(void) = 0; virtual inline uint32 GetFeatures(void) const = 0; virtual inline bool IsRegOpnd(size_t OpndNum) const = 0; #if 0 virtual STARSOpndTypePtr GetOpnd(size_t OpndNum) = 0; virtual STARSOpndTypePtr MakeVoidOpnd(void) = 0; virtual STARSOpndTypePtr MakeImmediateOpnd(uintptr_t value) = 0; virtual STARSOpndTypePtr MakeRegOpnd(int RegNum) = 0; virtual STARSOpndTypePtr MakeMemDisplacementOpnd(int BaseRegNum, int IndexRegNum, uint16_t ScaleFactor, uintptr_t offset) = 0; virtual STARSOpndTypePtr MakeMemPhraseOpnd(int BaseRegNum, int IndexRegNum, uint16_t ScaleFactor) = 0; virtual STARSOpndTypePtr MakeFloatingPointRegOpnd(int RegNum) = 0; virtual STARSOpndTypePtr MakeMMXRegOpnd(int RegNum) = 0; virtual STARSOpndTypePtr MakeXMMRegOpnd(int RegNum) = 0; virtual STARSOpndTypePtr MakeYMMRegOpnd(int RegNum) = 0; #endif protected: STARS_InstructionID_t m_id; }; #endif