source: Deliverables/D4.1/Pretty.ml @ 45

Last change on this file since 45 was 45, checked in by mulligan, 10 years ago

More pretty stuff added.

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