38#ifndef __ARCH_X86_INSTS_MICROOP_HH__
39#define __ARCH_X86_INSTS_MICROOP_HH__
51namespace condition_tests
105 const char *mnem,
const char *_instMnem,
106 uint64_t setFlags, OpClass __opClass) :
110 const int ChunkSize =
sizeof(
unsigned long);
111 const int Chunks =
sizeof(setFlags) / ChunkSize;
115 for (
int i = 0;
i < Chunks;
i++) {
116 unsigned shift =
i * ChunkSize * 8;
125 std::stringstream
ss;
138 if (
flags[IsLastMicroop])
148 if (
flags[IsLastMicroop])
169 const char *inst_mnem, uint64_t set_flags, OpClass op_class,
virtual std::unique_ptr< PCStateBase > branchTarget(const PCStateBase &pc) const
Return the target address for a PC-relative branch.
const char * mnemonic
Base mnemonic (e.g., "add").
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
MicroCondBase(ExtMachInst mach_inst, const char *mnem, const char *inst_mnem, uint64_t set_flags, OpClass op_class, uint8_t _cc)
bool checkCondition(uint64_t flags, int condition) const
std::unique_ptr< PCStateBase > branchTarget(const PCStateBase &branch_pc) const override
Return the target address for a PC-relative branch.
void advancePC(PCStateBase &pcState) const override
X86MicroopBase(ExtMachInst _machInst, const char *mnem, const char *_instMnem, uint64_t setFlags, OpClass __opClass)
void advancePC(ThreadContext *tc) const override
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Base class for all X86 static instructions.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void ccprintf(cp::Print &print)