Go to the documentation of this file.
38 #ifndef __ARCH_ARM_MEM64_HH__
39 #define __ARCH_ARM_MEM64_HH__
83 if (
flags[IsLastMicroop]) {
85 }
else if (
flags[IsMicroop]) {
96 if (
flags[IsLastMicroop]) {
98 }
else if (
flags[IsMicroop]) {
128 IntRegIndex _dest, IntRegIndex _base)
145 return uops[microPC];
161 IntRegIndex _dest, IntRegIndex _base, int64_t _imm)
162 :
Memory64(mnem, _machInst, __opClass, _dest, _base),
imm(_imm)
175 IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base,
177 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm),
191 IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2,
192 IntRegIndex _base, int32_t _imm)
193 :
MemoryDImm64(mnem, _machInst, __opClass, _dest, _dest2,
194 _base, _imm),
result(_result)
205 OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
207 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm)
218 OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
220 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm)
235 OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
238 :
Memory64(mnem, _machInst, __opClass, _dest, _base),
250 OpClass __opClass, IntRegIndex _dest, IntRegIndex _base)
251 :
Memory64(mnem, _machInst, __opClass, _dest, _base)
264 OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
266 :
Memory64(mnem, _machInst, __opClass, _dest, _base),
result(_result)
279 OpClass __opClass, IntRegIndex _dest, int64_t _imm)
280 :
Memory64(mnem, _machInst, __opClass, _dest, INTREG_ZERO),
imm(_imm)
295 OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
297 :
Memory64(mnem, _machInst, __opClass, _dest, _base),
298 dest2((IntRegIndex)(_dest + (IntRegIndex)(1))),
300 result2((IntRegIndex)(_result + (IntRegIndex)(1)))
310 #endif //__ARCH_ARM_INSTS_MEM_HH__
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
void setExcAcRel(bool exclusive, bool acrel)
static bool isSP(IntRegIndex reg)
MightBeMicro64(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
virtual const PCStateBase & pcState() const =0
MemoryRaw64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base)
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
void advancePC(PCStateBase &pcState) const override
Memory64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base)
MemoryPostIndex64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, int64_t _imm)
void advancePC(ThreadContext *tc) const override
MemoryLiteral64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, int64_t _imm)
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const loader::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)
MemoryEx64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, IntRegIndex _result)
ThreadContext is the external interface to all thread state for anything outside of the CPU.
SysDC64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _base, MiscRegIndex _dest, uint64_t _imm)
std::bitset< Num_Flags > flags
Flag values for this instruction.
MemoryAtomicPair64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, IntRegIndex _result)
void startDisassembly(std::ostream &os) const
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
This class is implementing the Base class for a generic AArch64 instruction which is making use of sy...
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
static const unsigned numMicroops
MemoryPreIndex64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, int64_t _imm)
MemoryDImmEx64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, int32_t _imm)
bool baseIsSP
True if the base register is SP (used for SP alignment checking).
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
MemoryReg64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, IntRegIndex _offset, ArmExtendType _type, uint64_t _shiftAmt)
MemoryDImm64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, int64_t _imm)
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Generated on Wed May 4 2022 12:13:47 for gem5 by doxygen 1.8.17