39 #ifndef __ARCH_ARM_MEM64_HH__ 40 #define __ARCH_ARM_MEM64_HH__ 61 base(_base), dest(_dest), imm(_imm), faultAddr(0)
78 if (
flags[IsLastMicroop]) {
80 }
else if (
flags[IsMicroop]) {
103 static const unsigned numMicroops = 3;
110 dest(_dest), base(_base), uops(NULL), memAccessFlags(0)
112 baseIsSP =
isSP(_base);
124 assert(uops != NULL && microPC < numMicroops);
125 return uops[microPC];
128 void startDisassembly(std::ostream &
os)
const;
132 void setExcAcRel(
bool exclusive,
bool acrel);
142 :
Memory64(mnem, _machInst, __opClass, _dest, _base), imm(_imm)
157 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm),
173 :
MemoryDImm64(mnem, _machInst, __opClass, _dest, _dest2,
174 _base, _imm), result(_result)
187 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm)
200 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm)
218 :
Memory64(mnem, _machInst, __opClass, _dest, _base),
219 offset(_offset), type(_type), shiftAmt(_shiftAmt)
231 :
Memory64(mnem, _machInst, __opClass, _dest, _base)
246 :
Memory64(mnem, _machInst, __opClass, _dest, _base), result(_result)
259 OpClass __opClass,
IntRegIndex _dest, int64_t _imm)
269 #endif //__ARCH_ARM_INSTS_MEM_HH__
MemoryPostIndex64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, int64_t _imm)
SysDC64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _base, MiscRegIndex _dest, uint64_t _imm)
MemoryPreIndex64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, int64_t _imm)
void advancePC(PCState &pcState) const
MightBeMicro64(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
MemoryDImmEx64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, int32_t _imm)
This class is implementing the Base class for a generic AArch64 instruction which is making use of sy...
MemoryReg64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, IntRegIndex _offset, ArmExtendType _type, uint64_t _shiftAmt)
MemoryLiteral64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, int64_t _imm)
MemoryEx64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, IntRegIndex _result)
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.
std::bitset< Num_Flags > flags
Flag values for this instruction.
bool baseIsSP
True if the base register is SP (used for SP alignment checking).
MemoryRaw64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Memory64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base)
GenericISA::SimplePCState< MachInst > PCState
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const override
Internal function to generate disassembly string.
MemoryImm64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, int64_t _imm)
TheISA::ExtMachInst ExtMachInst
Binary extended machine instruction type.
static bool isSP(IntRegIndex reg)
MemoryDImm64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, int64_t _imm)