#ifndef __MEMORYINSTRUCTION_HPP__ #define __MEMORYINSTRUCTION_HPP__ #include #include "SALConfig.hpp" namespace fail { class MemoryInstruction { regdata_t address; regdata_t value; uint8_t width; bool writeAccess; public: MemoryInstruction(regdata_t address = ADDR_INV, regdata_t value = 0, uint8_t width = 0, bool writeAccess = false) : address(address), value(value), width(width), writeAccess(writeAccess) { }; bool isWriteAccess(void) const { return writeAccess; } regdata_t getAddress() const { return address; } regdata_t getValue() const { return value; } uint8_t getWidth() const { return width; } bool isValid(void) const { return address != ADDR_INV; } void setAddress(regdata_t addr) { address = addr; } void setValue(regdata_t val) { value = val; } void setWidth(uint8_t w) { width = w; } void setWriteAccess(bool iswrite) { writeAccess = iswrite; } }; class MemoryInstructionAnalyzer { public: virtual bool eval(address_t opcode, MemoryInstruction & result) = 0; }; extern MemoryInstructionAnalyzer & meminstruction; } // end of namespace fail #endif // __MEMORYINSTRUCTION_HPP__