print_instructions/
print-instructions.rs

1use bpf_script::compiler::Compiler;
2use bpf_script::types::{Field, TypeDatabase};
3
4fn main() {
5    let prog = r#"
6            fn(vec: &iovec)
7              vec_copy: iovec = 0
8              vec_copy.iov_base = vec.iov_base
9              vec_copy.iov_len = vec.iov_len
10              return 50
11        "#;
12
13    let mut database = TypeDatabase::default();
14
15    let u64id = database
16        .add_integer(Some("__u64"), 8, false)
17        .expect("Failed to add type.");
18
19    let iov_base = Field {
20        offset: 0,
21        type_id: u64id,
22    };
23
24    let iov_len = Field {
25        offset: 64,
26        type_id: u64id,
27    };
28
29    database
30        .add_struct(
31            Some("iovec"),
32            &[("iov_base", iov_base), ("iov_len", iov_len)],
33        )
34        .expect("Failed to add type.");
35    let mut compiler = Compiler::create(&database);
36    compiler.compile(prog).unwrap();
37
38    for ins in compiler.get_instructions() {
39        println!("{}", ins);
40    }
41}