1
2.EXTERN MY_LABEL2;
3.section .text;
4
5//
6//4 MOVE
7//
8
9//genreg = genreg ; /* (a) */
10R0 = R0;
11R1 = R1;
12R2 = R2;
13R3 = R3;
14R4 = R4;
15R5 = R5;
16R6 = R6;
17R7 = R7;
18
19P0 = P0;
20P1 = P1;
21P2 = P2;
22P3 = P3;
23P4 = P4;
24P5 = P5;
25SP = SP;
26FP = FP;
27
28A0.X = A0.X;
29A0.W = A0.W;
30A1.X = A1.X;
31A1.W = A1.W;
32
33
34R0 = A1.W;
35R1 = A1.X;
36R2 = A0.W;
37R3 = A0.X;
38R4 = FP;
39R5 = SP;
40R6 = P5;
41R7 = P4;
42
43P0 = P3;
44P1 = P2;
45P2 = P1;
46P3 = P0;
47P4 = R7;
48P5 = R6;
49SP = R5;
50FP = R4;
51
52A0.X = R3;
53A0.W = R2;
54A1.X = R1;
55A1.W = R0;
56
57A0.X = A0.W;
58A0.X = A1.W;
59A0.X = A1.X;
60
61A1.X = A1.W;
62A1.X = A0.W;
63A1.X = A0.X;
64
65A0.W = A0.W;
66A0.W = A1.W;
67A0.W = A1.X;
68
69A1.W = A1.W;
70A1.W = A0.W;
71A1.W = A0.X;
72
73//genreg = dagreg ; /* (a) */
74R0 = I0;
75R1 = I1;
76R2 = I2;
77R3 = I3;
78R4 = M0;
79R5 = M1;
80R6 = M2;
81R7 = M3;
82
83R0 = B0;
84R1 = B1;
85R2 = B2;
86R3 = B3;
87R4 = L0;
88R5 = L1;
89R6 = L2;
90R7 = L3;
91
92P0 = I0;
93P1 = I1;
94P2 = I2;
95P3 = I3;
96P4 = M0;
97P5 = M1;
98SP = M2;
99FP = M3;
100
101P0 = B0;
102P1 = B1;
103P2 = B2;
104P3 = B3;
105P4 = L0;
106P5 = L1;
107SP = L2;
108FP = L3;
109
110
111A0.X = I0;
112A0.W = I1;
113A1.X = I2;
114A1.W = I3;
115
116A0.X = M0;
117A0.W = M1;
118A1.X = M2;
119A1.W = M3;
120
121A0.X = B0;
122A0.W = B1;
123A1.X = B2;
124A1.W = B3;
125
126A0.X = L0;
127A0.W = L1;
128A1.X = L2;
129A1.W = L3;
130
131//dagreg = genreg ; /* (a) */
132I0 = R0;
133I1 = P0;
134I2 = SP;
135I3 = FP;
136I0 = A0.X;
137I1 = A0.W;
138I2 = A1.X;
139I3 = A1.W;
140
141M0 = R0;
142M1 = P0;
143M2 = SP;
144M3 = FP;
145M0 = A0.X;
146M1 = A0.W;
147M2 = A1.X;
148M3 = A1.W;
149
150B0 = R0;
151B1 = P0;
152B2 = SP;
153B3 = FP;
154B0 = A0.X;
155B1 = A0.W;
156B2 = A1.X;
157B3 = A1.W;
158
159L0 = R0;
160L1 = P0;
161L2 = SP;
162L3 = FP;
163L0 = A0.X;
164L1 = A0.W;
165L2 = A1.X;
166L3 = A1.W;
167
168
169//dagreg = dagreg ; /* (a) */
170
171I0 = I1;
172I1 = M0;
173I2 = B1;
174I3 = L0;
175
176M0 = I1;
177M1 = M0;
178M2 = B1;
179M3 = L0;
180
181B0 = I1;
182B1 = M0;
183B2 = B1;
184B3 = L0;
185
186L0 = I1;
187L1 = M0;
188L2 = B1;
189L3 = L0;
190
191//genreg = USP ; /* (a)*/
192R1 = USP;
193P2 = USP;
194SP = USP;
195FP = USP;
196A0.X = USP;
197A1.W = USP;
198
199//USP = genreg ; /* (a)*/
200USP = R2;
201USP = P4;
202USP = SP;
203USP = FP;
204USP = A0.X;
205USP = A1.W;
206
207//Dreg = sysreg ; /* sysreg to 32-bit D-register (a) */
208R0 = ASTAT;
209R1 = SEQSTAT;
210R2 = SYSCFG;
211R3 = RETI;
212R4 = RETX;
213R5 = RETN;
214R6 = RETE;
215R7 = RETS;
216R0 = LC0;
217R1 = LC1;
218R2 = LT0;
219R3 = LT1;
220R4 = LB0;
221R5 = LB1;
222R6 = CYCLES;
223R7 = CYCLES2;
224//R0 = EMUDAT;
225//sysreg = Dreg ; /* 32-bit D-register to sysreg (a) */
226ASTAT = R0;
227SEQSTAT = R1;
228SYSCFG = R3;
229RETI = R4;
230RETX =R5;
231RETN = R6;
232RETE = R7;
233RETS = R0;
234LC0 = R1;
235LC1 = R2;
236LT0 = R3;
237LT1 = R4;
238LB0 = R5;
239LB1 = R6;
240CYCLES = R7;
241CYCLES2 = R0;
242//EMUDAT = R1;
243//sysreg = Preg ; /* 32-bit P-register to sysreg (a) */
244ASTAT = P0;
245SEQSTAT = P1;
246SYSCFG = P3;
247RETI = P4;
248RETX =P5;
249RETN = SP;
250RETE = FP;
251RETS = P0;
252LC0 = P1;
253LC1 = P2;
254LT0 = P3;
255LT1 = P4;
256LB0 = P5;
257LB1 = SP;
258CYCLES = SP;
259CYCLES2 = P0;
260//EMUDAT = P1;
261
262
263//sysreg = USP ; /* (a) */
264//ASTAT = USP;
265//SEQSTAT = USP;
266//SYSCFG = USP;
267//RETI = USP;
268//RETX =USP;
269//RETN = USP;
270//RETE = USP;
271//RETS = USP;
272//LC0 = USP;
273//LC1 = USP;
274//LT0 = USP;
275//LT1 = USP;
276//LB0 = USP;
277//LB1 = USP;
278//CYCLES = USP;
279//CYCLES2 = USP;
280//EMUDAT = USP;
281
282A0 = A1 ; /* move 40-bit Accumulator value (b) */
283
284A1 = A0 ; /* move 40-bit Accumulator value (b) */
285
286//A0 = Dreg ; /* 32-bit D-register to 40-bit A0, sign extended (b)*/
287A0 = R0;
288A0 = R1;
289A0 = R2;
290
291//A1 = Dreg ; /* 32-bit D-register to 40-bit A1, sign extended (b)*/
292
293A1 = R0;
294A1 = R1;
295A1 = R2;
296//Dreg_even = A0 (opt_mode) ; /* move 32-bit A0.W to even Dreg (b) */
297R0 = A0;
298R2 = A0(FU);
299R4 = A0(ISS2);
300
301//Dreg_odd = A1 (opt_mode) ; /* move 32-bit A1.W to odd Dreg (b) */
302R1 = A1;
303R3 = A1(FU);
304R5 = A1(ISS2);
305
306//Dreg_even = A0, Dreg_odd = A1 (opt_mode) ; /* move both Accumulators to a register pair (b) */
307R0 = A0, R1 = A1;
308R0 = A0, R1 = A1(FU);
309R6 = A0, R7 = A1(ISS2);
310
311
312//Dreg_odd = A1, Dreg_even = A0 (opt_mode) ; /* move both Accumulators to a register pair (b) */
313R1 = A1, R0 = A0;
314R3 = A1, R2 = A0(FU);
315R5 = A1, R4 = A0(ISS2);
316
317//IF CC DPreg = DPreg ; /* move if CC = 1 (a) */
318
319IF CC R3 = R0;
320IF CC R2 = R0;
321IF CC R7 = R0;
322
323IF CC R2 = P2;
324IF CC R4 = P1;
325IF CC R0 = P0;
326IF CC R7 = P4;
327
328IF CC P0 = P2;
329IF CC P4 = P5;
330IF CC P1 = P3;
331IF CC P5 = P4;
332
333IF CC P0 = R2;
334IF CC P4 = R3;
335IF CC P5 = R7;
336IF CC P2 = R6;
337
338//IF ! CC DPreg = DPreg ; /* move if CC = 0 (a) */
339IF !CC R3 = R0;
340IF !CC R2 = R0;
341IF !CC R7 = R0;
342
343IF !CC R2 = P2;
344IF !CC R4 = P1;
345IF !CC R0 = P0;
346IF !CC R7 = P4;
347
348IF !CC P0 = P2;
349IF !CC P4 = P5;
350IF !CC P1 = P3;
351IF !CC P5 = P4;
352
353IF !CC P0 = R2;
354IF !CC P4 = R3;
355IF !CC P5 = R7;
356IF !CC P2 = R6;
357
358//Dreg = Dreg_lo (Z) ; /* (a) */
359
360R0 = R0.L(Z);
361R2 = R1.L(Z);
362R1 = R2.L(Z);
363R7 = R6.L(Z);
364
365//Dreg = Dreg_lo (X) ; /* (a)*/
366R0 = R0.L(X);
367R2 = R1.L(X);
368R1 = R2.L(X);
369R7 = R6.L(X);
370
371R0 = R0.L;
372R2 = R1.L;
373R1 = R2.L;
374R7 = R6.L;
375
376//A0.X = Dreg_lo ; /* least significant 8 bits of Dreg into A0.X (b) */
377A0.X = R0.L;
378A0.X = R1.L;
379
380//A1.X = Dreg_lo ; /* least significant 8 bits of Dreg into A1.X (b) */
381A1.X = R0.L;
382A1.X = R1.L;
383
384//Dreg_lo = A0.X ; /* 8-bit A0.X, sign-extended, into least significant 16 bits of Dreg (b) */
385R0.L = A0.X;
386R1.L = A0.X;
387R7.L = A0.X;
388
389//Dreg_lo = A1.X ; /* 8-bit A1.X, sign-extended, into least significant 16 bits of Dreg (b) */
390R0.L = A1.X;
391R1.L = A1.X;
392R7.L = A1.X;
393
394//A0.L = Dreg_lo ; /* least significant 16 bits of Dreg into least significant 16 bits of A0.W (b) */
395A0.L = R0.L;
396A0.L = R1.L;
397A0.L = R6.L;
398
399//A1.L = Dreg_lo ; /* least significant 16 bits of Dreg into least significant 16 bits of A1.W (b) */
400A1.L = R0.L;
401A1.L = R1.L;
402A1.L = R6.L;
403
404//A0.H = Dreg_hi ; /* most significant 16 bits of Dreg into most significant 16 bits of A0.W (b) */
405A0.H = R0.H;
406A0.H = R1.H;
407A0.H = R6.H;
408//A1.H = Dreg_hi ; /* most significant 16 bits of Dreg into most significant 16 bits of A1.W (b) */
409A1.H = R0.H;
410A1.H = R1.H;
411A1.H = R6.H;
412
413//Dreg_lo = A0 (opt_mode) ; /* move A0 to lower half of Dreg (b) */
414R0.L = A0;
415R1.L = A0;
416
417R0.L = A0(FU);
418R1.L = A0(FU);
419
420R0.L = A0(IS);
421R1.L = A0(IS);
422
423R0.L = A0(IU);
424R1.L = A0(IU);
425
426R0.L = A0(T);
427R1.L = A0(T);
428
429R0.L = A0(S2RND);
430R1.L = A0(S2RND);
431
432R0.L = A0(ISS2);
433R1.L = A0(ISS2);
434
435R0.L = A0(IH);
436R1.L = A0(IH);
437
438//Dreg_hi = A1 (opt_mode) ; /* move A1 to upper half of Dreg (b) */
439R0.H = A1;
440R1.H = A1;
441
442R0.H = A1(FU);
443R1.H = A1(FU);
444
445R0.H = A1(IS);
446R1.H = A1(IS);
447
448R0.H = A1(IU);
449R1.H = A1(IU);
450
451R0.H = A1(T);
452R1.H = A1(T);
453
454R0.H = A1(S2RND);
455R1.H = A1(S2RND);
456
457R0.H = A1(ISS2);
458R1.H = A1(ISS2);
459
460R0.H = A1(IH);
461R1.H = A1(IH);
462
463
464//Dreg_lo = A0, Dreg_hi = A1 (opt_mode) ; /* move both values at once; must go to the lower and upper halves of the same Dreg (b)*/
465
466R0.L = A0, R0.H = A1;
467R1.L = A0, R1.H = A1;
468
469R0.L = A0, R0.H = A1(FU);
470R1.L = A0, R1.H = A1(FU);
471
472R0.L = A0, R0.H = A1(IS);
473R1.L = A0, R1.H = A1(IS);
474
475R0.L = A0, R0.H = A1(IU);
476R1.L = A0, R1.H = A1(IU);
477
478R0.L = A0, R0.H = A1(T);
479R1.L = A0, R1.H = A1(T);
480
481R0.L = A0, R0.H = A1(S2RND);
482R1.L = A0, R1.H = A1(S2RND);
483
484R0.L = A0, R0.H = A1(ISS2);
485R1.L = A0, R1.H = A1(ISS2);
486
487R0.L = A0, R0.H = A1(IH);
488R1.L = A0, R1.H = A1(IH);
489
490//Dreg_hi = A1, Dreg_lo = AO (opt_mode) ; /* move both values at once; must go to the upper and lower halves of the same Dreg (b) */
491
492R0.H = A1,R0.L = A0;
493R1.H = A1,R1.L = A0;
494
495R0.H = A1,R0.L = A0 (FU);
496R1.H = A1,R1.L = A0 (FU);
497
498R0.H = A1,R0.L = A0 (IS);
499R1.H = A1,R1.L = A0 (IS);
500
501R0.H = A1,R0.L = A0 (IU);
502R1.H = A1,R1.L = A0 (IU);
503
504R0.H = A1,R0.L = A0 (T);
505R1.H = A1,R1.L = A0 (T);
506
507R0.H = A1,R0.L = A0 (S2RND);
508R1.H = A1,R1.L = A0 (S2RND);
509
510R0.H = A1,R0.L = A0 (ISS2);
511R1.H = A1,R1.L = A0 (ISS2);
512
513R0.H = A1,R0.L = A0 (IH);
514R1.H = A1,R1.L = A0 (IH);
515
516//Dreg = Dreg_byte (Z) ; /* (a)*/
517
518R0 = R1.B(Z);
519R0 = R2.B(Z);
520
521R7 = R1.B(Z);
522R7 = R2.B(Z);
523
524//Dreg = Dreg_byte (X) ; /* (a) */
525R0 = R1.B(X);
526R0 = R2.B(X);
527
528R7 = R1.B(X);
529R7 = R2.B(X);
530
531