quebex

A software analysis framework built around the QBE intermediate language

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

 1function w $first_divisor(w %.1) {
 2@start.1
 3	%.2 =l alloc4 4
 4	storew %.1, %.2
 5	%.3 =l alloc4 4
 6@body.2
 7	storew 2, %.3
 8@for_cond.3
 9	%.4 =w loadw %.3
10	%.5 =w loadw %.2
11	%.6 =w cultw %.4, %.5
12	jnz %.6, @for_body.4, @for_join.6
13@for_body.4
14	%.7 =w loadw %.2
15	%.8 =w loadw %.3
16	%.9 =w urem %.7, %.8
17	%.10 =w ceqw %.9, 0
18	jnz %.10, @if_true.7, @if_false.8
19@if_true.7
20	%.11 =w loadw %.3
21	ret %.11
22@if_false.8
23@for_cont.5
24	%.12 =w loadw %.3
25	%.13 =w add %.12, 1
26	storew %.13, %.3
27	jmp @for_cond.3
28@for_join.6
29	%.14 =w loadw %.2
30	ret %.14
31}
32export
33function w $entry(w %.1) {
34@start.9
35	%.2 =l alloc4 4
36	storew %.1, %.2
37@body.10
38	%.3 =w loadw %.2
39	%.4 =w culew %.3, 200
40	jnz %.4, @if_true.11, @if_false.12
41@if_true.11
42	%.5 =w loadw %.2
43	%.6 =w cugtw %.5, 1
44	jnz %.6, @logic_right.13, @logic_join.14
45@logic_right.13
46	%.7 =w loadw %.2
47	%.8 =w call $first_divisor(w %.7)
48	%.9 =w loadw %.2
49	%.10 =w ceqw %.8, %.9
50	%.11 =w cnew %.10, 0
51@logic_join.14
52	%.12 =w phi @if_true.11 0, @logic_right.13 %.11
53	jnz %.12, @if_true.15, @if_false.16
54@if_true.15
55	ret 1
56@if_false.16
57	ret 0
58@if_join.17
59@if_false.12
60	ret 0
61}