File: pushpop.s

package info (click to toggle)
binutils-avr 2.26.20160125%2BAtmel3.6.2-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 365,552 kB
  • sloc: ansic: 2,480,046; asm: 892,807; exp: 188,218; cpp: 133,829; makefile: 63,886; sh: 32,212; yacc: 26,783; lisp: 16,709; xml: 7,490; perl: 6,449; python: 4,555; ada: 4,318; pascal: 3,174; lex: 2,250; cs: 879; sed: 334; f90: 298; awk: 168; objc: 134; java: 73; fortran: 43
file content (121 lines) | stat: -rw-r--r-- 2,085 bytes parent folder | download | duplicates (45)
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
; Check the push and pop builtin "macros".
 .text
 .syntax no_register_prefix
start:
 push r1
 push r0
 push r4
 ; Check that there is no recognition of invalid offsets.
 move.b r5,[sp=sp-8]
 move.w r5,[sp=sp-8]
 move.d r5,[sp=sp-8]

 move.b r5,[sp=sp-5]
 move.w r5,[sp=sp-5]
 move.d r5,[sp=sp-5]

 move.w r5,[sp=sp-4]
 move.b r3,[sp=sp-4]

 move.d r5,[sp=sp-3]
 move.w r11,[sp=sp-3]
 move.b r5,[sp=sp-3]

 move.d r5,[sp=sp-2]
 move.b r5,[sp=sp-2]

 move.d r5,[sp=sp-1]
 move.w r5,[sp=sp-1]

 move.d r5,[sp=sp+0]
 move.b r5,[sp=sp+0]
 move.w r5,[sp=sp+0]

 move.d r5,[sp=sp+1]
 move.w r5,[sp=sp+1]
 move.b r5,[sp=sp+1]

 move.d r5,[sp=sp+2]
 move.w r5,[sp=sp+2]
 move.b r5,[sp=sp+2]

 move.d r5,[sp=sp+3]
 move.w r5,[sp=sp+3]
 move.b r5,[sp=sp+3]

 move.d r5,[sp=sp+4]
 move.w r5,[sp=sp+4]
 move.b r5,[sp=sp+4]

 move.d r5,[sp=sp+5]
 move.w r5,[sp=sp+5]
 move.b r5,[sp=sp+5]

 move.d r1,[sp=sp+8]
 move.w r9,[sp=sp+8]
 move.b r13,[sp=sp+8]

;
; All these will have postincrement on the "real" instruction
; (e.g. "move.d [sp+],r6") which is the actual insn recognized as
; pop; it is *not* e.g. "move.d [sp=sp+4],r6".
;  Here we make sure that neither the combination nor the second
; is interpreted as a pop.
;
 move.b [sp=sp+8],r5
 move.w [sp=sp+8],r5
 move.d [sp=sp+8],r5

 move.b [sp=sp+5],r5
 move.w [sp=sp+5],r5
 move.d [sp=sp+5],r5

 move.d [sp=sp+4],r5
 move.w [sp=sp+4],r5
 move.b [sp=sp+4],r3

 move.d [sp=sp+3],r5
 move.w [sp=sp+3],r11
 move.b [sp=sp+3],r5

 move.d [sp=sp+2],r5
 move.w [sp=sp+2],r5
 move.b [sp=sp+2],r5

 move.d [sp=sp+1],r5
 move.w [sp=sp+1],r5
 move.b [sp=sp+1],r5

 move.d [sp=sp-0],r5
 move.w [sp=sp-0],r5
 move.b [sp=sp-0],r5

 move.d [sp=sp-1],r5
 move.w [sp=sp-1],r5
 move.b [sp=sp-1],r5

 move.d [sp=sp-2],r5
 move.w [sp=sp-2],r5
 move.b [sp=sp-2],r5

 move.d [sp=sp-3],r5
 move.w [sp=sp-3],r5
 move.b [sp=sp-3],r5

 move.d [sp=sp-4],r5
 move.w [sp=sp-4],r5
 move.b [sp=sp-4],r5

 move.d [sp=sp-5],r5
 move.w [sp=sp-5],r5
 move.b [sp=sp-5],r5

 move.d [sp=sp-8],r5
 move.w [sp=sp-8],r5
 move.b [sp=sp-8],r5

 push r0
 pop r2
 pop r3
 push r13
end: