Trait lief::assembly::Instruction
pub trait Instruction {
Show 24 methods
// Provided methods
fn address(&self) -> u64 { ... }
fn size(&self) -> u64 { ... }
fn raw(&self) -> &[u8] ⓘ { ... }
fn mnemonic(&self) -> String { ... }
fn to_string(&self) -> String { ... }
fn to_string_no_address(&self) -> String { ... }
fn is_call(&self) -> bool { ... }
fn is_terminator(&self) -> bool { ... }
fn is_branch(&self) -> bool { ... }
fn is_syscall(&self) -> bool { ... }
fn is_memory_access(&self) -> bool { ... }
fn is_move_reg(&self) -> bool { ... }
fn is_add(&self) -> bool { ... }
fn is_trap(&self) -> bool { ... }
fn is_barrier(&self) -> bool { ... }
fn is_return(&self) -> bool { ... }
fn is_indirect_branch(&self) -> bool { ... }
fn is_conditional_branch(&self) -> bool { ... }
fn is_unconditional_branch(&self) -> bool { ... }
fn is_compare(&self) -> bool { ... }
fn is_move_immediate(&self) -> bool { ... }
fn is_bitcast(&self) -> bool { ... }
fn memory_access(&self) -> MemoryAccess { ... }
fn branch_target(&self) -> Result<u64, Error> { ... }
}
Expand description
This trait is shared by all Instructions
supported by LIEF
Provided Methods§
fn to_string_no_address(&self) -> String
fn to_string_no_address(&self) -> String
Same as Instruction::to_string
but without the address as prefix
fn is_terminator(&self) -> bool
fn is_terminator(&self) -> bool
True if the instruction marks the end of a basic block
fn is_syscall(&self) -> bool
fn is_syscall(&self) -> bool
True if the instruction is a syscall
fn is_memory_access(&self) -> bool
fn is_memory_access(&self) -> bool
True if the instruction performs a memory access
fn is_move_reg(&self) -> bool
fn is_move_reg(&self) -> bool
True if the instruction is a register to register move.
fn is_trap(&self) -> bool
fn is_trap(&self) -> bool
True if the instruction is a trap.
- On
x86/x86-64
this includes theud1/ud2
instructions - On
AArch64
this includes thebrk/udf
instructions
fn is_barrier(&self) -> bool
fn is_barrier(&self) -> bool
True if the instruction prevents executing the instruction that immediatly follows the current. This includes return or unconditional branch instructions
fn is_indirect_branch(&self) -> bool
fn is_indirect_branch(&self) -> bool
True if the instruction is and indirect branch.
This includes instructions that branch through a register (e.g. jmp rax
,
br x1
).
fn is_conditional_branch(&self) -> bool
fn is_conditional_branch(&self) -> bool
True if the instruction is conditionally jumping to the next instruction or an instruction into some other basic block.
fn is_unconditional_branch(&self) -> bool
fn is_unconditional_branch(&self) -> bool
True if the instruction is jumping (unconditionally) to some other basic block.
fn is_compare(&self) -> bool
fn is_compare(&self) -> bool
True if the instruction is a comparison
fn is_move_immediate(&self) -> bool
fn is_move_immediate(&self) -> bool
True if the instruction is moving an immediate
fn is_bitcast(&self) -> bool
fn is_bitcast(&self) -> bool
True if the instruction is doing a bitcast
fn memory_access(&self) -> MemoryAccess
fn memory_access(&self) -> MemoryAccess
Memory access flags
fn branch_target(&self) -> Result<u64, Error>
fn branch_target(&self) -> Result<u64, Error>
Given a Instruction::is_branch
instruction, try to evaluate the address of the
destination.