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