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 address(&self) -> u64

Address of the instruction

fn size(&self) -> u64

Size of the instruction in bytes

fn raw(&self) -> &[u8]

Raw bytes of the current instruction

fn mnemonic(&self) -> String

Instruction mnemonic (e.g. br)

fn to_string(&self) -> String

Representation of the current instruction in a pretty assembly way

fn to_string_no_address(&self) -> String

Same as Instruction::to_string but without the address as prefix

fn is_call(&self) -> bool

True if the instruction is a call

fn is_terminator(&self) -> bool

True if the instruction marks the end of a basic block

fn is_branch(&self) -> bool

True if the instruction is a branch

fn is_syscall(&self) -> bool

True if the instruction is a syscall

fn is_memory_access(&self) -> bool

True if the instruction performs a memory access

fn is_move_reg(&self) -> bool

True if the instruction is a register to register move.

fn is_add(&self) -> bool

True if the instruction performs an arithmetic addition.

fn is_trap(&self) -> bool

True if the instruction is a trap.

  • On x86/x86-64 this includes the ud1/ud2 instructions
  • On AArch64 this includes the brk/udf instructions

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_return(&self) -> bool

True if the instruction is a return

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

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

True if the instruction is jumping (unconditionally) to some other basic block.

fn is_compare(&self) -> bool

True if the instruction is a comparison

fn is_move_immediate(&self) -> bool

True if the instruction is moving an immediate

fn is_bitcast(&self) -> bool

True if the instruction is doing a bitcast

fn memory_access(&self) -> MemoryAccess

Memory access flags

fn branch_target(&self) -> Result<u64, Error>

Given a Instruction::is_branch instruction, try to evaluate the address of the destination.

Implementors§

§

impl Instruction for Instructions

§

impl Instruction for lief::assembly::aarch64::Instruction

§

impl Instruction for lief::assembly::arm::Instruction

§

impl Instruction for lief::assembly::ebpf::Instruction

§

impl Instruction for Generic

§

impl Instruction for lief::assembly::mips::Instruction

§

impl Instruction for lief::assembly::powerpc::Instruction

§

impl Instruction for lief::assembly::riscv::Instruction

§

impl Instruction for lief::assembly::x86::Instruction