File: stack2.s

package info (click to toggle)
binutils 2.31.1-11
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 307,644 kB
  • sloc: ansic: 1,161,122; asm: 638,494; cpp: 128,815; exp: 68,557; makefile: 55,816; sh: 22,360; yacc: 14,238; lisp: 13,272; perl: 2,111; ada: 1,681; lex: 1,652; pascal: 1,446; cs: 879; sed: 195; python: 154; xml: 95; awk: 25
file content (127 lines) | stat: -rw-r--r-- 2,391 bytes parent folder | download | duplicates (34)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

.EXTERN MY_LABEL2;
.section .text;

//
//5 STACK CONTROL
//

//[ -- SP ] = allreg ; /* predecrement SP (a) */

[--SP ] =  R0;
[--SP ] =  R6;

[--SP ] =  P0;
[--SP ] =  P4;

[--SP ] =  I0;
[--SP ] =  I1;

[--SP ] =  M0;
[--SP ] =  M1;

[--SP ] =  L0;
[--SP ] =  L1;

[--SP ] =  B0;
[--SP ] =  B1;

[--SP ] =  A0.X;
[--SP ] =  A1.X;

[--SP ] =  A0.W;
[--SP ] =  A1.W;

[--SP ] =  ASTAT;
[--SP ] =  RETS;
[--SP ] =  RETI;
[--SP ] =  RETX;
[--SP ] =  RETN;
[--SP ] =  RETE;
[--SP ] =  LC0;
[--SP ] =  LC1;
[--SP ] =  LT0;
[--SP ] =  LT1;
[--SP ] =  LB0;
[--SP ] =  LB1;
[--SP ] =  CYCLES;
[--SP ] =  CYCLES2;
//[--SP ] =  EMUDAT;
[--SP ] =  USP;
[--SP ] =  SEQSTAT;
[--SP ] =  SYSCFG;


//[ -- SP ] = ( R7 : Dreglim , P5 : Preglim ) ; /* Dregs and indexed Pregs (a) */
[--SP ] = ( R7:0, P5:0);


//[ -- SP ] = ( R7 : Dreglim ) ; /* Dregs, only (a) */
[--SP ] = ( R7:0);

//[ -- SP ] = ( P5 : Preglim ) ; /* indexed Pregs, only (a) */
[--SP ] = (P5:0);


//mostreg = [ SP ++ ] ; /* post-increment SP; does not apply to Data Registers and Pointer Registers (a) */

R0= [ SP ++ ] ;      
R6= [ SP ++ ] ;      
         
P0= [ SP ++ ] ;      
P4= [ SP ++ ] ;      
         
I0= [ SP ++ ] ;      
I1= [ SP ++ ] ;      
         
M0= [ SP ++ ] ;      
M1= [ SP ++ ] ;      
         
L0= [ SP ++ ] ;      
L1= [ SP ++ ] ;      
         
B0= [ SP ++ ] ;      
B1= [ SP ++ ] ;      
         
A0.X= [ SP ++ ] ;    
A1.X= [ SP ++ ] ;    
         
A0.W= [ SP ++ ] ;    
A1.W= [ SP ++ ] ;    
         
ASTAT= [ SP ++ ] ;   
RETS= [ SP ++ ] ;    
RETI= [ SP ++ ] ;    
RETX= [ SP ++ ] ;    
RETN= [ SP ++ ] ;    
RETE= [ SP ++ ] ;    
LC0= [ SP ++ ] ;     
LC1= [ SP ++ ] ;     
LT0= [ SP ++ ] ;     
LT1= [ SP ++ ] ;     
LB0= [ SP ++ ] ;     
LB1= [ SP ++ ] ;     
CYCLES= [ SP ++ ] ;  
CYCLES2= [ SP ++ ] ; 
//EMUDAT= [ SP ++ ] ;  
USP= [ SP ++ ] ;     
SEQSTAT= [ SP ++ ] ; 
SYSCFG= [ SP ++ ] ;  

//( R7 : Dreglim, P5 : Preglim ) = [ SP ++ ] ; /* Dregs and indexed Pregs (a) */
( R7:0, P5:0) = [ SP++ ];

//( R7 : Dreglim ) = [ SP ++ ] ; /* Dregs, only (a) */
( R7:0) = [ SP++ ];

//( P5 : Preglim ) = [ SP ++ ] ; /* indexed Pregs, only (a) */
( P5:0) = [ SP++ ];

//LINK uimm18m4 ; /* allocate a stack frame of specified size (b) */
LINK 0X0;
LINK 0X8;
LINK 0x3FFFC;

UNLINK ; /* de-allocate the stack frame (b)*/

L$L$foo:  (R7:6,P5:3) = [SP++]; /* Pop multiple on the same line with a label */