This class represents an AArch64 instruction.
Public Types
Public Functions
The instruction opcode as defined in LLVM.
Iterator over the operands of the current instruction.
Public Static Functions
True if inst
is an effective instance of aarch64::Instruction.
See LIEF::assembly::aarch64::OPCODE
in include/asm/aarch64/opcodes.hpp
This class represents an operand for an AArch64 instruction.
Subclassed by LIEF::assembly::aarch64::operands::Immediate, LIEF::assembly::aarch64::operands::Memory, LIEF::assembly::aarch64::operands::PCRelative, LIEF::assembly::aarch64::operands::Register
Public Functions
Pretty representation of the operand.
This function can be used to down cast an Operand instance:
std::unique_ptr<assembly::aarch64::Operand> op = ...;
if (const auto* imm = inst->as<assembly::aarch64::operands::Immediate>()) {
const int64_t value = imm->value();
}
This class represents a memory operand.
ldr x0, [x1, x2, lsl #3]
| | |
+------------+ | +--------+
| | |
v v v
Base Reg Offset Shift
Public Types
Public Functions
The base register.
For str x3, [x8, #8]
it would return x8
.
The addressing offset.
It can be either:
A register (e.g. ldr x0, [x1, x3]
)
An offset (e.g. ldr x0, [x1, #8]
)
Shift information.
For instance, for ldr x1, [x2, x3, lsl #3]
it would return a SHIFT::LSL with a shift_info_t::value set to 3
.
Wraps a memory offset as an integer offset or as a register offset.
Public Types
This structure holds shift info (type + value)