|
OPCODE | opcode () const |
| The instruction opcode as defined in LLVM.
|
|
| ~Instruction () override=default |
|
uint64_t | address () const |
| Address of the instruction.
|
|
size_t | size () const |
| Size of the instruction in bytes.
|
|
const std::vector< uint8_t > & | raw () const |
| Raw bytes of the current instruction.
|
|
std::string | mnemonic () const |
| Instruction mnemonic (e.g. br )
|
|
std::string | to_string (bool with_address=true) const |
| Representation of the current instruction in a pretty assembly way.
|
|
bool | is_call () const |
| True if the instruction is a call.
|
|
bool | is_terminator () const |
| True if the instruction marks the end of a basic block.
|
|
bool | is_branch () const |
| True if the instruction is a branch.
|
|
bool | is_syscall () const |
| True if the instruction is a syscall.
|
|
bool | is_memory_access () const |
| True if the instruction performs a memory access.
|
|
bool | is_move_reg () const |
| True if the instruction is a register to register move.
|
|
bool | is_add () const |
| True if the instruction performs an arithmetic addition.
|
|
bool | is_trap () const |
| True if the instruction is a trap.
|
|
bool | is_barrier () const |
| True if the instruction prevents executing the instruction that immediatly follows the current. This includes return or unconditional branch instructions.
|
|
bool | is_return () const |
| True if the instruction is a return.
|
|
bool | is_indirect_branch () const |
| True if the instruction is and indirect branch.
|
|
bool | is_conditional_branch () const |
| True if the instruction is conditionally jumping to the next instruction or an instruction into some other basic block.
|
|
bool | is_unconditional_branch () const |
| True if the instruction is jumping (unconditionally) to some other basic block.
|
|
bool | is_compare () const |
| True if the instruction is a comparison.
|
|
bool | is_move_immediate () const |
| True if the instruction is moving an immediate.
|
|
bool | is_bitcast () const |
| True if the instruction is doing a bitcast.
|
|
MemoryAccess | memory_access () const |
| Memory access flags.
|
|
result< uint64_t > | branch_target () const |
| Given a is_branch() instruction, try to evaluate the address of the destination.
|
|
const llvm::MCInst & | mcinst () const |
| Return the underlying llvm::MCInst implementation.
|
|
template<class T > |
const T * | as () const |
| This function can be used to down cast an Instruction instance:
|
|
This class represents an ARM/Thumb instruction.