Newer
Older
#ifndef STARSInstruction_h
#define STARSInstruction_h
#include <memory>
#include <stdint.h>
#include <assert.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(void) = 0;
virtual STARS_InstructionID_t GetTargetInstructionID(void) = 0;
virtual bool STARS_GetCmd(void) = 0;
virtual inline uint32 GetFeatures(void) const = 0;
virtual inline bool IsRegOpnd(size_t OpndNum) const = 0;
virtual STARSOpndTypePtr GetOpnd(size_t OpndNum) const = 0;
virtual STARSOpndTypePtr MakeVoidOpnd(void) = 0;
virtual STARSOpndTypePtr MakeImmediateOpnd(uintptr_t value) = 0;
virtual STARSOpndTypePtr MakeRegOpnd(uint16 RegNum) = 0;
virtual STARSOpndTypePtr MakeFloatingPointRegOpnd(uint16 RegNum) = 0;
virtual STARSOpndTypePtr MakeMMXRegOpnd(uint16 RegNum) = 0;
virtual STARSOpndTypePtr MakeXMMRegOpnd(uint16 RegNum) = 0;
virtual STARSOpndTypePtr MakeYMMRegOpnd(uint16 RegNum) = 0;
virtual STARSOpndTypePtr MakeMemDisplacementOpnd(uint16 BaseRegNum, uint16 IndexRegNum, uint16_t ScaleFactor, uintptr_t offset) = 0;
virtual STARSOpndTypePtr MakeMemPhraseOpnd(uint16 BaseRegNum, uint16 IndexRegNum, uint16_t ScaleFactor) = 0;