quebex

A software analysis framework built around the QBE intermediate language

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

  1export
  2function $bubble_sort(l %.1) {
  3@start.1
  4	%.2 =l alloc8 8
  5	storel %.1, %.2
  6	%.3 =l alloc4 1
  7	%.9 =l alloc4 4
  8	%.27 =l alloc4 4
  9@body.2
 10	%.4 =w cnew 0, 0
 11	storeb %.4, %.3
 12@while_cond.3
 13	%.5 =w loadub %.3
 14	%.6 =w extub %.5
 15	%.7 =w ceqw %.6, 0
 16	jnz %.7, @while_body.4, @while_join.5
 17@while_body.4
 18	%.8 =w cnew 1, 0
 19	storeb %.8, %.3
 20	storew 0, %.9
 21@for_cond.6
 22	%.10 =w loadw %.9
 23	%.11 =w sub 4, 1
 24	%.12 =w csltw %.10, %.11
 25	jnz %.12, @for_body.7, @for_join.9
 26@for_body.7
 27	%.13 =l loadl %.2
 28	%.14 =w loadw %.9
 29	%.15 =l extsw %.14
 30	%.16 =l mul %.15, 4
 31	%.17 =l add %.13, %.16
 32	%.18 =w loadw %.17
 33	%.19 =l loadl %.2
 34	%.20 =w loadw %.9
 35	%.21 =w add %.20, 1
 36	%.22 =l extsw %.21
 37	%.23 =l mul %.22, 4
 38	%.24 =l add %.19, %.23
 39	%.25 =w loadw %.24
 40	%.26 =w csgtw %.18, %.25
 41	jnz %.26, @if_true.10, @if_false.11
 42@if_true.10
 43	%.28 =l loadl %.2
 44	%.29 =w loadw %.9
 45	%.30 =l extsw %.29
 46	%.31 =l mul %.30, 4
 47	%.32 =l add %.28, %.31
 48	%.33 =w loadw %.32
 49	storew %.33, %.27
 50	%.34 =l loadl %.2
 51	%.35 =w loadw %.9
 52	%.36 =w add %.35, 1
 53	%.37 =l extsw %.36
 54	%.38 =l mul %.37, 4
 55	%.39 =l add %.34, %.38
 56	%.40 =w loadw %.39
 57	%.41 =l loadl %.2
 58	%.42 =w loadw %.9
 59	%.43 =l extsw %.42
 60	%.44 =l mul %.43, 4
 61	%.45 =l add %.41, %.44
 62	storew %.40, %.45
 63	%.46 =w loadw %.27
 64	%.47 =l loadl %.2
 65	%.48 =w loadw %.9
 66	%.49 =w add %.48, 1
 67	%.50 =l extsw %.49
 68	%.51 =l mul %.50, 4
 69	%.52 =l add %.47, %.51
 70	storew %.46, %.52
 71	%.53 =w cnew 0, 0
 72	storeb %.53, %.3
 73@if_false.11
 74@for_cont.8
 75	%.54 =w loadw %.9
 76	%.55 =w add %.54, 1
 77	storew %.55, %.9
 78	jmp @for_cond.6
 79@for_join.9
 80	jmp @while_cond.3
 81@while_join.5
 82	ret
 83}
 84export
 85function w $entry(w %.1, w %.3, w %.5, w %.7) {
 86@start.12
 87	%.2 =l alloc4 4
 88	storew %.1, %.2
 89	%.4 =l alloc4 4
 90	storew %.3, %.4
 91	%.6 =l alloc4 4
 92	storew %.5, %.6
 93	%.8 =l alloc4 4
 94	storew %.7, %.8
 95	%.9 =l alloc4 16
 96@body.13
 97	%.10 =w loadw %.2
 98	%.11 =l extsw 0
 99	%.12 =l mul %.11, 4
100	%.13 =l add %.9, %.12
101	storew %.10, %.13
102	%.14 =w loadw %.4
103	%.15 =l extsw 1
104	%.16 =l mul %.15, 4
105	%.17 =l add %.9, %.16
106	storew %.14, %.17
107	%.18 =w loadw %.6
108	%.19 =l extsw 2
109	%.20 =l mul %.19, 4
110	%.21 =l add %.9, %.20
111	storew %.18, %.21
112	%.22 =w loadw %.8
113	%.23 =l extsw 3
114	%.24 =l mul %.23, 4
115	%.25 =l add %.9, %.24
116	storew %.22, %.25
117	call $bubble_sort(l %.9)
118	ret 0
119}