source: Deliverables/D4.1/pretty.ml @ 107

Last change on this file since 107 was 98, checked in by mulligan, 11 years ago

preliminary pretty-printing function (no usable output)

File size: 8.4 KB
Line 
1open BitVectors;;
2open ASM;;
3
4let pp_instruction =
5 function
6    `Label l -> l ^ ":"
7  | `Cost l -> l ^ ":"
8  | `ACALL (`ADDR11 w) ->
9    "ACALL addr11 (" ^ string_of_vect w ^ ")"
10  | `ADD (`A,`REG (r1,r2,r3)) ->
11   "ADD `A `Rn (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
12  | `ADD (`A, `DIRECT b1) ->
13   "ADD `A direct (" ^ string_of_vect b1 ^ ")"
14  | `ADD (`A, `INDIRECT i1) ->
15   "ADD `A @Ri (" ^ string_of_bit i1 ^ ")"
16  | `ADD (`A, `DATA b1) ->
17   "ADD `A #data (" ^ string_of_vect b1 ^ ")"
18  | `ADDC (`A, `REG(r1,r2,r3)) ->
19   "ADDC `A `Rn (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
20  | `ADDC (`A, `DIRECT b1) ->
21   "ADDC `A direct (" ^ string_of_vect b1 ^ ")"
22  | `ADDC (`A,`INDIRECT i1) ->
23   "ADDC `A @Ri (" ^ string_of_bit i1 ^ ")"
24  | `ADDC (`A,`DATA b1) ->
25   "ADDC `A #data (" ^ string_of_vect b1 ^ ")"
26  | `AJMP (`ADDR11 w) ->
27   "AJMP addr11 (" ^ string_of_vect w ^ ")"
28  | `ANL (`U1 (`A, `REG (r1,r2,r3))) ->
29   "ANL `A `Rn (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
30  | `ANL (`U1 (`A, `DIRECT b1)) ->
31   "ANL `A direct (" ^ string_of_vect b1 ^ ")"
32  | `ANL (`U1 (`A, `INDIRECT i1)) ->
33   "ANL `A @Ri (" ^ string_of_bit i1 ^ ")"
34  | `ANL (`U1 (`A, `DATA b1)) ->
35   "ANL `A #data (" ^ string_of_vect b1 ^ ")"
36  | `ANL (`U2 (`DIRECT b1,`A)) ->
37   "ANL direct `A (" ^ string_of_vect b1 ^ ")"
38  | `ANL (`U2 (`DIRECT b1,`DATA b2)) ->
39   "ANL direct #data (" ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
40  | `ANL (`U3 (`C,`BIT b1)) ->
41   "ANL `C bit (" ^ string_of_vect b1 ^ ")"
42  | `ANL (`U3 (`C,`NBIT b1)) ->
43   "ANL `C /bit (" ^ string_of_vect b1 ^ ")"
44  | `CJNE (`U1 (`A, `DIRECT b1), `REL b2) ->
45   "CJNE `A direct rel (" ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
46  | `CJNE (`U1 (`A, `DATA b1), `REL b2) ->
47   "CJNE `A #data rel (" ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
48  | `CJNE (`U2 (`REG(r1,r2,r3), `DATA b1), `REL b2) ->
49   "CJNE `Rn #data rel (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
50  | `CJNE (`U2 (`INDIRECT i1, `DATA b1), `REL b2) ->
51   "CJNE @Ri #data rel (" ^ string_of_bit i1 ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
52  | `CLR `A -> "CLR `A"
53  | `CLR `C -> "CLR `C"
54  | `CLR (`BIT b1) -> "CLR bit (" ^ string_of_vect b1 ^ ")"
55  | `CPL `A -> "CPL A"
56  | `CPL `C -> "CPL C"
57  | `CPL `BIT b1 -> "CPL bit (" ^ string_of_vect b1 ^ ")"
58  | `DA `A ->
59  "DA `A"
60  | `DEC `A ->
61  "DEC `A"
62  | `DEC (`REG(r1,r2,r3)) ->
63  "DEC `Rn (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
64  | `DEC (`DIRECT b1) ->
65  "DEC direct (" ^ string_of_vect b1 ^ ")"
66  | `DEC (`INDIRECT i1) ->
67  "DEC @Ri (" ^ string_of_bit i1 ^ ")"
68  | `DIV (`A, `B) ->
69  "DIV `A `B"
70  | `DJNZ (`REG(r1,r2,r3), `REL b1) ->
71  "DJNZ `Rn rel (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ string_of_vect b1 ^ ")"
72  | `DJNZ (`DIRECT b1, `REL b2) ->
73  "DJNZ direct rel (" ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
74  | `INC `A ->
75  "INC `A"
76  | `INC (`REG(r1,r2,r3)) ->
77  "INC `Rn (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
78  | `INC (`DIRECT b1) ->
79  "INC direct (" ^ string_of_vect b1 ^ ")"
80  | `INC (`INDIRECT i1) ->
81  "INC @Ri (" ^ string_of_bit i1 ^ ")"
82  | `INC `DPTR ->
83  "INC `DPTR"
84  | `JB (`BIT b1, `REL b2) ->
85  "JB bit rel (" ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
86  | `JBC (`BIT b1, `REL b2) ->
87  "JBC bit rel (" ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
88  | `JC (`REL b1) ->
89  "JC rel (" ^ string_of_vect b1 ^ ")"
90  | `JMP `IND_DPTR ->
91  "JMP @A + `DPTR"
92  | `JNB (`BIT b1, `REL b2) ->
93  "JNB bit rel (" ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
94  | `JNC (`REL b1) ->
95  "JNC rel (" ^ string_of_vect b1 ^ ")"
96  | `JNZ (`REL b1) ->
97  "JNZ rel (" ^ string_of_vect b1 ^ ")"
98  | `JZ (`REL b1) ->
99  "JZ rel (" ^ string_of_vect b1 ^ ")"
100  | `LCALL (`ADDR16 w) ->
101  "LCALL addr16 (" ^ string_of_vect w ^ ")"
102  | `LJMP (`ADDR16 w) ->
103  "LJMP addr16 (" ^ string_of_vect w ^ ")"
104  | `MOV (`U1 (`A, `REG(r1,r2,r3))) ->
105  "MOV `A `Rn (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
106  | `MOV (`U1 (`A, `DIRECT b1)) ->
107  "MOV `A direct (" ^ string_of_vect b1 ^ ")"
108  | `MOV (`U1 (`A, `INDIRECT i1)) ->
109  "MOV `A @Ri (" ^ string_of_bit i1 ^ ")"
110  | `MOV (`U1 (`A, `DATA b1)) ->
111  "MOV `A #data (" ^ string_of_vect b1 ^ ")"
112  | `MOV (`U2 (`REG(r1,r2,r3), `A)) ->
113  "MOV `Rn `A (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
114  | `MOV (`U2 (`REG(r1,r2,r3), (`DIRECT b1))) ->
115  "MOV `Rn direct (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
116  | `MOV (`U2 (`REG(r1,r2,r3), (`DATA b1))) ->
117  "MOV `Rn #data (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
118  | `MOV (`U3 (`DIRECT b1, `A)) ->
119  "MOV direct `A (" ^ string_of_vect b1 ^ ")"
120  | `MOV (`U3 (`DIRECT b1, `REG(r1,r2,r3))) ->
121  "MOV direct `Rn (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
122  | `MOV (`U3 (`DIRECT b1, `DIRECT b2)) ->
123  "MOV direct direct (" ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
124  | `MOV (`U3 (`DIRECT b1, `INDIRECT i1)) ->
125  "MOV direct @Ri (" ^ string_of_vect b1 ^ string_of_bit i1 ^ ")"
126  | `MOV (`U3 (`DIRECT b1, `DATA b2)) ->
127  "MOV direct #data (" ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
128  | `MOV (`U2 (`INDIRECT i1, `A)) ->
129  "MOV @Ri `A (" ^ string_of_bit i1 ^ ")"
130  | `MOV (`U2 (`INDIRECT i1, `DIRECT b1)) ->
131  "MOV @Ri direct (" ^ string_of_bit i1 ^ string_of_vect b1 ^ ")"
132  | `MOV (`U2 (`INDIRECT i1, `DATA b1)) ->
133  "MOV @Ri #data (" ^ string_of_bit i1 ^ string_of_vect b1 ^ ")"
134  | `MOV (`U5 (`C, `BIT b1)) ->
135  "MOV `C bit (" ^ string_of_vect b1 ^ ")"
136  | `MOV (`U6 (`BIT b1, `C)) ->
137  "MOV bit `C (" ^ string_of_vect b1 ^ ")"
138  | `MOV (`U4 (`DPTR, `DATA16 w)) ->
139  "MOV `DPTR #data16 (" ^ string_of_vect w ^ ")"
140  | `MOVC (`A, `A_DPTR) ->
141  "MOVC `A @A + `DPTR"
142  | `MOVC (`A, `A_PC) ->
143  "MOVC `A @A + `PC"
144  | `MOVX (`U1 (`A, `EXT_INDIRECT i1)) ->
145  "MOVX `A @Ri (" ^ string_of_bit i1 ^ ")"
146  | `MOVX (`U1 (`A, `EXT_IND_DPTR)) ->
147  "MOVX `A @DPTR"
148  | `MOVX (`U2 (`EXT_INDIRECT i1, `A)) ->
149  "MOVX @Ri `A ( " ^ string_of_bit i1 ^ ")"
150  | `MOVX (`U2 (`EXT_IND_DPTR, `A)) ->
151  "MOVX @DPTR `A"
152  | `MUL(`A, `B) ->
153  "MUL `A `B"
154  | `NOP ->
155  "NOP"
156  | `ORL (`U1(`A, `REG(r1,r2,r3))) ->
157  "ORL `A `Rn (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
158  | `ORL (`U1(`A, `DIRECT b1)) ->
159  "ORL `A direct (" ^ string_of_vect b1 ^ ")"
160  | `ORL (`U1(`A, `INDIRECT i1)) ->
161  "ORL `A @Ri (" ^ string_of_bit i1 ^ ")"
162  | `ORL (`U1(`A, `DATA b1)) ->
163  "ORL `A #data (" ^ string_of_vect b1 ^ ")"
164  | `ORL (`U2(`DIRECT b1, `A)) ->
165  "ORL direct `A (" ^ string_of_vect b1 ^ ")"
166  | `ORL (`U2 (`DIRECT b1, `DATA b2)) ->
167  "ORL direct #data (" ^ string_of_vect b1 ^ string_of_vect b2 ^ ")"
168  | `ORL (`U3 (`C, `BIT b1)) ->
169  "ORL `C bit (" ^ string_of_vect b1 ^ ")"
170  | `ORL (`U3 (`C, `NBIT b1)) ->
171  "ORL `C \\bit (" ^ string_of_vect b1 ^ ")"
172  | `POP (`DIRECT b1) ->
173  "POP direct (" ^ string_of_vect b1 ^ ")"
174  | `PUSH (`DIRECT b1) ->
175  "PUSH direct (" ^ string_of_vect b1 ^ ")"
176  | `RET ->
177  "RET"
178  | `RETI ->
179  "RETI"
180  | `RL `A ->
181  "RL `A"
182  | `RLC `A ->
183  "RLC `A"
184  | `RR `A ->
185  "RR `A"
186  | `RRC `A ->
187  "RRC `A"
188  | `SETB `C ->
189  "SETB `C"
190  | `SETB (`BIT b1) ->
191  "SETB bit (" ^ string_of_vect b1 ^ ")"
192  | `SJMP (`REL b1) ->
193  "SJMP rel (" ^ string_of_vect b1 ^ ")"
194  | `SUBB (`A, `REG(r1,r2,r3)) ->
195  "SUBB `A `Rn (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
196  | `SUBB (`A, `DIRECT b1) ->
197  "SUBB `A direct (" ^ string_of_vect b1 ^ ")"
198  | `SUBB (`A, `INDIRECT i1) ->
199  "SUBB `A @Ri (" ^ string_of_bit i1 ^ ")"
200  | `SUBB (`A, `DATA b1) ->
201  "SUBB `A #data (" ^ string_of_vect b1 ^ ")"
202  | `SWAP `A ->
203  "SWAP `A"
204  | `XCH (`A, `REG(r1,r2,r3)) ->
205  "XCH `A `Rn (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
206  | `XCH (`A, `DIRECT b1) ->
207  "XCH `A direct (" ^ string_of_vect b1 ^ ")"
208  | `XCH (`A, `INDIRECT i1) ->
209  "XCH `A @Ri (" ^ string_of_bit i1 ^ ")"
210  | `XCHD(`A, `INDIRECT i1) ->
211  "XCHD `A @Ri (" ^ string_of_bit i1 ^ ")"
212  | `XRL(`U1(`A, `REG(r1,r2,r3))) ->
213  "XRL `A `Rn (" ^ string_of_bit r1 ^ string_of_bit r2 ^ string_of_bit r3 ^ ")"
214  | `XRL(`U1(`A, `DIRECT b1)) ->
215  "XRL `A direct (" ^ string_of_vect b1 ^ ")"
216  | `XRL(`U1(`A, `INDIRECT i1)) ->
217  "XRL `A @Ri (" ^ string_of_bit i1 ^ ")"
218  | `XRL(`U1(`A, `DATA b1)) ->
219  "XRL `A #data (" ^ string_of_vect b1 ^ ")"
220  | `XRL(`U2(`DIRECT b1, `A)) ->
221  "XRL direct `A (" ^ string_of_vect b1 ^ ")"
222  | `XRL(`U2(`DIRECT b1, `DATA b2)) ->
223  "XRL direct #data (" ^ string_of_vect b2 ^ ")"
Note: See TracBrowser for help on using the repository browser.