]> matita.cs.unibo.it Git - pkg-cerco/acc.git/blob - tests/tmp_tests/Frontend/struct_and_ptr_and_fact.RTLabs
Package description and copyright added.
[pkg-cerco/acc.git] / tests / tmp_tests / Frontend / struct_and_ptr_and_fact.RTLabs
1 program:
2
3
4   globals:
5     "p" { ptr }
6     "save" { struct {int32, int32} }
7
8
9   extern "print_sint": int4s -> void
10
11
12   extern "newline": void
13
14
15   "fact1"(int4s %0)
16     locals: int4s %1, int4s %2, int4s %4, int4s %5, int1s %6, int4s %7, int4s %8
17     result: int4s %3
18     stacksize: struct {}
19     entry: fact113
20     exit: fact10
21
22     fact19: emit _cost0 --> fact18
23     fact18: imm %6, imm_int 1 --> fact17
24     fact17: int1sto4 %3, %6 --> fact10
25     fact16: emit _cost1 --> fact15
26     fact15: imm %5, imm_int 1 --> fact14
27     fact14: sub %4, %0, %5 --> fact13
28     fact13: call "fact1", [%4], %2: int4s -> int4s --> fact12
29     fact12: id %1, %2 --> fact11
30     fact113: emit _cost2 --> fact112
31     fact112: imm %8, imm_int 1 --> fact111
32     fact111: le %7, %0, %8 --> fact110
33     fact110: %7? --> fact19, fact16
34     fact11: mul %3, %0, %1 --> fact10
35     fact10: return %3
36
37
38   "fact2"(int4s %0)
39     locals: int4s %1, int4s %2, int4s %4, int4s %5, int4s %6, int1s %7, int1s %8
40     result: int4s %3
41     stacksize: struct {}
42     entry: fact215
43     exit: fact20
44
45     fact29: notbool %5, %6 --> fact28
46     fact28: %5? --> fact22, fact27
47     fact27: emit _cost3 --> fact26
48     fact26: mul %2, %2, %1 --> fact25
49     fact25: imm %4, imm_int 1 --> fact24
50     fact24: add %1, %1, %4 --> fact23
51     fact23: --> fact210
52     fact22: emit _cost4 --> fact21
53     fact215: emit _cost5 --> fact214
54     fact214: imm %8, imm_int 1 --> fact213
55     fact213: int1sto4 %2, %8 --> fact212
56     fact212: imm %7, imm_int 1 --> fact211
57     fact211: int1sto4 %1, %7 --> fact23
58     fact210: le %6, %1, %0 --> fact29
59     fact21: id %3, %2 --> fact20
60     fact20: return %3
61
62
63   "main"()
64     locals: int4s %0, int4s %1, int4s %2, int4s %3, int1s %5, int1u %6, int4s %7, int1u %8, int4s %9, int4s %10, ptr %11, ptr %12, offset %13, ptr %14, offset %15, ptr %16, ptr %17, offset %18, ptr %19, ptr %20, int1s %21, int1s %22, int1s %23, ptr %24, offset %25, ptr %26, ptr %27, offset %28, ptr %29, offset %30, int4s %31, ptr %32, ptr %33, offset %34, ptr %35, ptr %36, offset %37, ptr %38, offset %39, int4s %40, ptr %41, ptr %42, offset %43, ptr %44, int4s %45, ptr %46, ptr %47, offset %48, ptr %49, offset %50, ptr %51, offset %52, ptr %53, int4s %54, ptr %55, ptr %56, offset %57, ptr %58, offset %59, ptr %60, offset %61, ptr %62, ptr %63, ptr %64, offset %65, ptr %66, ptr %67, ptr %68, offset %69, ptr %70, int1s %71, int1s %72, int1s %73, ptr %74, offset %75, ptr %76, int4s %77, int1s %78, ptr %79, offset %80, ptr %81, offset %82
65     result: int4s %4
66     stacksize: struct {struct {int32, int32}, struct {int32, int32}, ptr[3]}
67     entry: main91
68     exit: main0
69
70     main91: emit _cost6 --> main90
71     main90: imm %81, imm_addr STACK --> main89
72     main9: addp %12, %14, %15 --> main8
73     main89: imm %82, imm_offset { struct {struct {int32, int32}}, 0 } --> main88
74     main88: addp %79, %81, %82 --> main87
75     main87: imm %80, imm_offset { struct {int32, int32}, 1 } --> main86
76     main86: addp %76, %79, %80 --> main85
77     main85: imm %78, imm_int 5 --> main84
78     main84: int1sto4 %77, %78 --> main83
79     main83: store int32, %76, %77 --> main82
80     main82: imm %74, imm_addr STACK --> main81
81     main81: imm %75, imm_offset { struct {struct {int32, int32}, struct {int32, int32}, ptr[3]}, 2 } --> main80
82     main80: addp %70, %74, %75 --> main79
83     main8: imm %13, imm_offset { struct {int32, int32}, 1 } --> main7
84     main79: imm %72, imm_int 1 --> main78
85     main78: imm %73, imm_sizeof (ptr) --> main77
86     main77: mul %71, %72, %73 --> main76
87     main76: addp %66, %70, %71 --> main75
88     main75: imm %68, imm_addr STACK --> main74
89     main74: imm %69, imm_offset { struct {struct {int32, int32}}, 0 } --> main73
90     main73: addp %67, %68, %69 --> main72
91     main72: store ptr, %66, %67 --> main71
92     main71: imm %62, imm_addr "p" --> main70
93     main70: imm %64, imm_addr STACK --> main69
94     main7: addp %11, %12, %13 --> main6
95     main69: imm %65, imm_offset { struct {struct {int32, int32}}, 0 } --> main68
96     main68: addp %63, %64, %65 --> main67
97     main67: store ptr, %62, %63 --> main66
98     main66: imm %60, imm_addr "save" --> main65
99     main65: imm %61, imm_offset { struct {int32, int32}, 0 } --> main64
100     main64: addp %53, %60, %61 --> main63
101     main63: imm %58, imm_addr STACK --> main62
102     main62: imm %59, imm_offset { struct {struct {int32, int32}}, 0 } --> main61
103     main61: addp %56, %58, %59 --> main60
104     main60: imm %57, imm_offset { struct {int32, int32}, 0 } --> main59
105     main6: load int32, %11, %10 --> main5
106     main59: addp %55, %56, %57 --> main58
107     main58: load int32, %55, %54 --> main57
108     main57: store int32, %53, %54 --> main56
109     main56: imm %51, imm_addr "save" --> main55
110     main55: imm %52, imm_offset { struct {int32, int32}, 1 } --> main54
111     main54: addp %44, %51, %52 --> main53
112     main53: imm %49, imm_addr STACK --> main52
113     main52: imm %50, imm_offset { struct {struct {int32, int32}}, 0 } --> main51
114     main51: addp %47, %49, %50 --> main50
115     main50: imm %48, imm_offset { struct {int32, int32}, 1 } --> main49
116     main5: eq %7, %9, %10 --> main4
117     main49: addp %46, %47, %48 --> main48
118     main48: load int32, %46, %45 --> main47
119     main47: store int32, %44, %45 --> main46
120     main46: imm %42, imm_addr "save" --> main45
121     main45: imm %43, imm_offset { struct {int32, int32}, 1 } --> main44
122     main44: addp %41, %42, %43 --> main43
123     main43: load int32, %41, %40 --> main42
124     main42: call "fact1", [%40], %2: int4s -> int4s --> main41
125     main41: id %1, %2 --> main40
126     main40: imm %38, imm_addr STACK --> main39
127     main4: call "print_sint", [%7], %8: int4s -> void --> main3
128     main39: imm %39, imm_offset { struct {struct {int32, int32}}, 0 } --> main38
129     main38: addp %36, %38, %39 --> main37
130     main37: imm %37, imm_offset { struct {int32, int32}, 1 } --> main36
131     main36: addp %35, %36, %37 --> main35
132     main35: store int32, %35, %1 --> main34
133     main34: imm %33, imm_addr "save" --> main33
134     main33: imm %34, imm_offset { struct {int32, int32}, 1 } --> main32
135     main32: addp %32, %33, %34 --> main31
136     main31: load int32, %32, %31 --> main30
137     main30: call "fact2", [%31], %3: int4s -> int4s --> main29
138     main3: call "newline", [], %6: void --> main2
139     main29: id %0, %3 --> main28
140     main28: imm %29, imm_addr STACK --> main27
141     main27: imm %30, imm_offset { struct {struct {int32, int32}, struct {int32, int32}}, 1 } --> main26
142     main26: addp %27, %29, %30 --> main25
143     main25: imm %28, imm_offset { struct {int32, int32}, 1 } --> main24
144     main24: addp %26, %27, %28 --> main23
145     main23: store int32, %26, %0 --> main22
146     main22: imm %24, imm_addr STACK --> main21
147     main21: imm %25, imm_offset { struct {struct {int32, int32}, struct {int32, int32}, ptr[3]}, 2 } --> main20
148     main20: addp %20, %24, %25 --> main19
149     main2: imm %5, imm_int 0 --> main1
150     main19: imm %22, imm_int 1 --> main18
151     main18: imm %23, imm_sizeof (ptr) --> main17
152     main17: mul %21, %22, %23 --> main16
153     main16: addp %19, %20, %21 --> main15
154     main15: load ptr, %19, %17 --> main14
155     main14: imm %18, imm_offset { struct {int32, int32}, 1 } --> main13
156     main13: addp %16, %17, %18 --> main12
157     main12: load int32, %16, %9 --> main11
158     main11: imm %14, imm_addr STACK --> main10
159     main10: imm %15, imm_offset { struct {struct {int32, int32}, struct {int32, int32}}, 1 } --> main9
160     main1: int1sto4 %4, %5 --> main0
161     main0: return %4
162
163