print_instructions/
print-instructions.rs1use 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}