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