1 2.EXTERN MY_LABEL2; 3.section .text; 4 5// 6//5 STACK CONTROL 7// 8 9//[ -- SP ] = allreg ; /* predecrement SP (a) */ 10 11[--SP ] = R0; 12[--SP ] = R6; 13 14[--SP ] = P0; 15[--SP ] = P4; 16 17[--SP ] = I0; 18[--SP ] = I1; 19 20[--SP ] = M0; 21[--SP ] = M1; 22 23[--SP ] = L0; 24[--SP ] = L1; 25 26[--SP ] = B0; 27[--SP ] = B1; 28 29[--SP ] = A0.X; 30[--SP ] = A1.X; 31 32[--SP ] = A0.W; 33[--SP ] = A1.W; 34 35[--SP ] = ASTAT; 36[--SP ] = RETS; 37[--SP ] = RETI; 38[--SP ] = RETX; 39[--SP ] = RETN; 40[--SP ] = RETE; 41[--SP ] = LC0; 42[--SP ] = LC1; 43[--SP ] = LT0; 44[--SP ] = LT1; 45[--SP ] = LB0; 46[--SP ] = LB1; 47[--SP ] = CYCLES; 48[--SP ] = CYCLES2; 49//[--SP ] = EMUDAT; 50[--SP ] = USP; 51[--SP ] = SEQSTAT; 52[--SP ] = SYSCFG; 53 54 55//[ -- SP ] = ( R7 : Dreglim , P5 : Preglim ) ; /* Dregs and indexed Pregs (a) */ 56[--SP ] = ( R7:0, P5:0); 57 58 59//[ -- SP ] = ( R7 : Dreglim ) ; /* Dregs, only (a) */ 60[--SP ] = ( R7:0); 61 62//[ -- SP ] = ( P5 : Preglim ) ; /* indexed Pregs, only (a) */ 63[--SP ] = (P5:0); 64 65 66//mostreg = [ SP ++ ] ; /* post-increment SP; does not apply to Data Registers and Pointer Registers (a) */ 67 68R0= [ SP ++ ] ; 69R6= [ SP ++ ] ; 70 71P0= [ SP ++ ] ; 72P4= [ SP ++ ] ; 73 74I0= [ SP ++ ] ; 75I1= [ SP ++ ] ; 76 77M0= [ SP ++ ] ; 78M1= [ SP ++ ] ; 79 80L0= [ SP ++ ] ; 81L1= [ SP ++ ] ; 82 83B0= [ SP ++ ] ; 84B1= [ SP ++ ] ; 85 86A0.X= [ SP ++ ] ; 87A1.X= [ SP ++ ] ; 88 89A0.W= [ SP ++ ] ; 90A1.W= [ SP ++ ] ; 91 92ASTAT= [ SP ++ ] ; 93RETS= [ SP ++ ] ; 94RETI= [ SP ++ ] ; 95RETX= [ SP ++ ] ; 96RETN= [ SP ++ ] ; 97RETE= [ SP ++ ] ; 98LC0= [ SP ++ ] ; 99LC1= [ SP ++ ] ; 100LT0= [ SP ++ ] ; 101LT1= [ SP ++ ] ; 102LB0= [ SP ++ ] ; 103LB1= [ SP ++ ] ; 104CYCLES= [ SP ++ ] ; 105CYCLES2= [ SP ++ ] ; 106//EMUDAT= [ SP ++ ] ; 107USP= [ SP ++ ] ; 108SEQSTAT= [ SP ++ ] ; 109SYSCFG= [ SP ++ ] ; 110 111//( R7 : Dreglim, P5 : Preglim ) = [ SP ++ ] ; /* Dregs and indexed Pregs (a) */ 112( R7:0, P5:0) = [ SP++ ]; 113 114//( R7 : Dreglim ) = [ SP ++ ] ; /* Dregs, only (a) */ 115( R7:0) = [ SP++ ]; 116 117//( P5 : Preglim ) = [ SP ++ ] ; /* indexed Pregs, only (a) */ 118( P5:0) = [ SP++ ]; 119 120//LINK uimm18m4 ; /* allocate a stack frame of specified size (b) */ 121LINK 0X0; 122LINK 0X8; 123LINK 0x3FFFC; 124 125UNLINK ; /* de-allocate the stack frame (b)*/ 126 127L$L$foo: (R7:6,P5:3) = [SP++]; /* Pop multiple on the same line with a label */ 128