Function get_insn

Source
pub fn get_insn(prog: &[u8], pc: usize) -> Insn
Expand description

Get the instruction at idx of an eBPF program. idx is the index (number) of the instruction (not a byte offset). The first instruction has index 0.

§Panics

Panics if it is not possible to get the instruction (if idx is too high, or last instruction is incomplete).

§Examples

use solana_sbpf::ebpf;

let prog = &[
    0xb7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    ];
let insn = ebpf::get_insn(prog, 1);
assert_eq!(insn.opc, 0x95);

The example below will panic, since the last instruction is not complete and cannot be loaded.

use solana_sbpf::ebpf;

let prog = &[
    0xb7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x95, 0x00, 0x00, 0x00, 0x00, 0x00              // two bytes missing
    ];
let insn = ebpf::get_insn(prog, 1);