quebex

A software analysis framework built around the QBE intermediate language

git clone https://git.8pit.net/quebex.git

 1export
 2function w $entry(w %.1) {
 3@start.1
 4	%.2 =l alloc4 4
 5	storew %.1, %.2
 6	%.3 =l alloc4 20
 7	%.12 =l alloc8 8
 8	%.21 =l alloc4 4
 9	%.22 =l alloc4 4
10@body.2
11	storew 0, %.3
12	%.4 =l add %.3, 4
13	storew 0, %.4
14	%.5 =l add %.3, 8
15	storew 0, %.5
16	%.6 =l add %.3, 12
17	storew 0, %.6
18	%.7 =l add %.3, 16
19	storew 0, %.7
20	%.8 =w loadw %.2
21	%.9 =l extuw %.8
22	%.10 =l udiv 20, 4
23	%.11 =w cultl %.9, %.10
24	jnz %.11, @if_true.3, @if_false.4
25@if_true.3
26	%.13 =l extsw 0
27	%.14 =l mul %.13, 4
28	%.15 =l add %.3, %.14
29	storel %.15, %.12
30	%.16 =l loadl %.12
31	%.17 =w loadw %.2
32	%.18 =l extuw %.17
33	%.19 =l mul %.18, 4
34	%.20 =l add %.16, %.19
35	storew 42, %.20
36	storew 0, %.21
37	storew 0, %.22
38@for_cond.5
39	%.23 =w loadw %.22
40	%.24 =l extuw %.23
41	%.25 =l udiv 20, 4
42	%.26 =w cultl %.24, %.25
43	jnz %.26, @for_body.6, @for_join.8
44@for_body.6
45	%.27 =w loadw %.22
46	%.28 =l extuw %.27
47	%.29 =l mul %.28, 4
48	%.30 =l add %.3, %.29
49	%.31 =w loadw %.30
50	jnz %.31, @if_true.9, @if_false.10
51@if_true.9
52	%.32 =w loadw %.22
53	storew %.32, %.21
54	jmp @for_join.8
55@if_false.10
56@for_cont.7
57	%.33 =w loadw %.22
58	%.34 =w add %.33, 1
59	storew %.34, %.22
60	jmp @for_cond.5
61@for_join.8
62	%.35 =w loadw %.2
63	%.36 =w loadw %.21
64	%.37 =w ceqw %.35, %.36
65	jnz %.37, @logic_join.12, @logic_right.11
66@logic_right.11
67	hlt
68@dead.13
69	%.38 =w cnew 0, 0
70@logic_join.12
71	%.39 =w phi @for_join.8 1, @dead.13 %.38
72@if_false.4
73	ret 0
74}