Skip to content
Snippets Groups Projects
STARSInstruction.h 1.32 KiB
Newer Older
#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