38 #ifndef __ARCH_ARM_MEM64_HH__ 39 #define __ARCH_ARM_MEM64_HH__ 60 base(_base), dest(_dest), imm(_imm), faultAddr(0)
77 if (
flags[IsLastMicroop]) {
79 }
else if (
flags[IsMicroop]) {
102 static const unsigned numMicroops = 3;
109 dest(_dest), base(_base), uops(NULL), memAccessFlags(0)
111 baseIsSP =
isSP(_base);
123 assert(uops != NULL && microPC < numMicroops);
124 return uops[microPC];
127 void startDisassembly(std::ostream &
os)
const;
131 void setExcAcRel(
bool exclusive,
bool acrel);
141 :
Memory64(mnem, _machInst, __opClass, _dest, _base), imm(_imm)
156 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm),
172 :
MemoryDImm64(mnem, _machInst, __opClass, _dest, _dest2,
173 _base, _imm), result(_result)
186 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm)
199 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm)
217 :
Memory64(mnem, _machInst, __opClass, _dest, _base),
218 offset(_offset), type(_type), shiftAmt(_shiftAmt)
230 :
Memory64(mnem, _machInst, __opClass, _dest, _base)
245 :
Memory64(mnem, _machInst, __opClass, _dest, _base), result(_result)
258 OpClass __opClass,
IntRegIndex _dest, int64_t _imm)
268 #endif //__ARCH_ARM_INSTS_MEM_HH__
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
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)
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)
GenericISA::DelaySlotPCState< MachInst > PCState
MemoryDImm64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, int64_t _imm)