38#ifndef __ARCH_ARM_MEM64_HH__
39#define __ARCH_ARM_MEM64_HH__
70 uint32_t
iss()
const override;
84 if (
flags[IsLastMicroop]) {
86 }
else if (
flags[IsMicroop]) {
97 if (
flags[IsLastMicroop]) {
99 }
else if (
flags[IsMicroop]) {
146 return uops[microPC];
163 :
Memory64(mnem, _machInst, __opClass, _dest, _base),
imm(_imm)
178 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm),
194 :
MemoryDImm64(mnem, _machInst, __opClass, _dest, _dest2,
195 _base, _imm),
result(_result)
208 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm)
221 :
MemoryImm64(mnem, _machInst, __opClass, _dest, _base, _imm)
239 :
Memory64(mnem, _machInst, __opClass, _dest, _base),
252 :
Memory64(mnem, _machInst, __opClass, _dest, _base)
267 :
Memory64(mnem, _machInst, __opClass, _dest, _base),
result(_result)
280 OpClass __opClass,
RegIndex _dest, int64_t _imm)
281 :
Memory64(mnem, _machInst, __opClass, _dest, int_reg::Zero),
imm(_imm)
298 :
Memory64(mnem, _machInst, __opClass, _dest, _base),
static const unsigned numMicroops
Memory64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base)
bool baseIsSP
True if the base register is SP (used for SP alignment checking).
void setExcAcRel(bool exclusive, bool acrel)
void startDisassembly(std::ostream &os) const
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.
MemoryAtomicPair64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, RegIndex _result)
MemoryDImm64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _dest2, RegIndex _base, int64_t _imm)
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
MemoryDImmEx64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _result, RegIndex _dest, RegIndex _dest2, RegIndex _base, int32_t _imm)
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
MemoryEx64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, RegIndex _result)
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, RegIndex _dest, RegIndex _base, 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.
MemoryLiteral64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, int64_t _imm)
MemoryPostIndex64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, 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.
MemoryPreIndex64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, int64_t _imm)
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
MemoryRaw64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base)
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, RegIndex _dest, RegIndex _base, RegIndex _offset, ArmExtendType _type, uint64_t _shiftAmt)
void advancePC(PCStateBase &pcState) const override
void advancePC(ThreadContext *tc) const override
MightBeMicro64(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
SysDC64(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _base, MiscRegIndex _dest)
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
uint32_t iss() const override
This class is implementing the Base class for a generic AArch64 instruction which is making use of sy...
std::bitset< Num_Flags > flags
Flag values for this instruction.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual const PCStateBase & pcState() const =0
static bool isSP(RegIndex reg)
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.