smoke_dom_inspect.nx source
↩ module page · 30 lines · 1011 B
1// Probe dom_test to see what b4.idom actually is.
2import "syscalls.nx"
3import "dom.nx"
4
5func main() -> i64 {
6 let buf: *u8 = sys_mmap(512)
7 let blocks: *Block = buf as *Block
8 let base: i64 = blocks as i64
9
10 let b0: *Block = (base + 0 * 80) as *Block
11 b0.id = 0; b0.n_succs = 1; b0.succ0 = 1; b0.n_preds = 0
12
13 let b1: *Block = (base + 1 * 80) as *Block
14 b1.id = 1; b1.n_succs = 2; b1.succ0 = 2; b1.succ1 = 3
15 b1.n_preds = 1; b1.pred0 = 0
16
17 let b2: *Block = (base + 2 * 80) as *Block
18 b2.id = 2; b2.n_succs = 1; b2.succ0 = 4; b2.n_preds = 1; b2.pred0 = 1
19
20 let b3: *Block = (base + 3 * 80) as *Block
21 b3.id = 3; b3.n_succs = 1; b3.succ0 = 4; b3.n_preds = 1; b3.pred0 = 1
22
23 let b4: *Block = (base + 4 * 80) as *Block
24 b4.id = 4; b4.n_succs = 0; b4.n_preds = 2; b4.pred0 = 2; b4.pred1 = 3
25
26 dom_compute(blocks, 5, 0)
27
28 // Return b4.idom + 100 so we distinguish 0/1/2/3 results.
29 return __syscall(93, 100 + b4.idom, 0, 0, 0, 0, 0)
30}