174 |
kaklik |
1 |
GAS LISTING /tmp/ccQbezXt.s page 1
|
|
|
2 |
|
|
|
3 |
|
|
|
4 |
1 .file "Utility.c"
|
|
|
5 |
2 .arch atmega8
|
|
|
6 |
3 __SREG__ = 0x3f
|
|
|
7 |
4 __SP_H__ = 0x3e
|
|
|
8 |
5 __SP_L__ = 0x3d
|
|
|
9 |
6 __tmp_reg__ = 0
|
|
|
10 |
7 __zero_reg__ = 1
|
|
|
11 |
8 .global __do_copy_data
|
|
|
12 |
9 .global __do_clear_bss
|
|
|
13 |
10 .stabs "/home/kaklik/projects/programy/Atmel_C/AVRcam/",100,0,2,.Ltext0
|
|
|
14 |
11 .stabs "Utility.c",100,0,2,.Ltext0
|
|
|
15 |
12 .text
|
|
|
16 |
13 .Ltext0:
|
|
|
17 |
14 .stabs "gcc2_compiled.",60,0,0,0
|
|
|
18 |
15 .stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
|
|
|
19 |
16 .stabs "char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
|
|
|
20 |
17 .stabs "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0
|
|
|
21 |
18 .stabs "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0
|
|
|
22 |
19 .stabs "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0
|
|
|
23 |
20 .stabs "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
|
|
|
24 |
21 .stabs "long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0
|
|
|
25 |
22 .stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
|
|
|
26 |
23 .stabs "short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0
|
|
|
27 |
24 .stabs "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
|
|
|
28 |
25 .stabs "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
|
|
|
29 |
26 .stabs "float:t(0,12)=r(0,1);4;0;",128,0,0,0
|
|
|
30 |
27 .stabs "double:t(0,13)=r(0,1);4;0;",128,0,0,0
|
|
|
31 |
28 .stabs "long double:t(0,14)=r(0,1);4;0;",128,0,0,0
|
|
|
32 |
29 .stabs "void:t(0,15)=(0,15)",128,0,0,0
|
|
|
33 |
30 .stabs "CommonDefs.h",130,0,0,0
|
|
|
34 |
31 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/interrupt.h",130,0,0,0
|
|
|
35 |
32 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/io.h",130,0,0,0
|
|
|
36 |
33 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
|
|
|
37 |
34 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/inttypes.h",130,0,0,0
|
|
|
38 |
35 .stabs "/usr/lib/gcc/avr/4.1.0/../../../../avr/include/stdint.h",130,0,0,0
|
|
|
39 |
36 .stabs "int8_t:t(6,1)=(0,10)",128,0,116,0
|
|
|
40 |
37 .stabs "uint8_t:t(6,2)=(0,11)",128,0,117,0
|
|
|
41 |
38 .stabs "int16_t:t(6,3)=(0,1)",128,0,118,0
|
|
|
42 |
39 .stabs "uint16_t:t(6,4)=(0,4)",128,0,119,0
|
|
|
43 |
40 .stabs "int32_t:t(6,5)=(0,3)",128,0,120,0
|
|
|
44 |
41 .stabs "uint32_t:t(6,6)=(0,5)",128,0,121,0
|
|
|
45 |
42 .stabs "int64_t:t(6,7)=(0,6)",128,0,122,0
|
|
|
46 |
43 .stabs "uint64_t:t(6,8)=(0,7)",128,0,123,0
|
|
|
47 |
44 .stabs "intptr_t:t(6,9)=(6,3)",128,0,135,0
|
|
|
48 |
45 .stabs "uintptr_t:t(6,10)=(6,4)",128,0,140,0
|
|
|
49 |
46 .stabs "int_least8_t:t(6,11)=(6,1)",128,0,152,0
|
|
|
50 |
47 .stabs "uint_least8_t:t(6,12)=(6,2)",128,0,157,0
|
|
|
51 |
48 .stabs "int_least16_t:t(6,13)=(6,3)",128,0,162,0
|
|
|
52 |
49 .stabs "uint_least16_t:t(6,14)=(6,4)",128,0,167,0
|
|
|
53 |
50 .stabs "int_least32_t:t(6,15)=(6,5)",128,0,172,0
|
|
|
54 |
51 .stabs "uint_least32_t:t(6,16)=(6,6)",128,0,177,0
|
|
|
55 |
52 .stabs "int_least64_t:t(6,17)=(6,7)",128,0,182,0
|
|
|
56 |
53 .stabs "uint_least64_t:t(6,18)=(6,8)",128,0,187,0
|
|
|
57 |
54 .stabs "int_fast8_t:t(6,19)=(6,1)",128,0,200,0
|
|
|
58 |
55 .stabs "uint_fast8_t:t(6,20)=(6,2)",128,0,205,0
|
|
|
59 |
56 .stabs "int_fast16_t:t(6,21)=(6,3)",128,0,210,0
|
|
|
60 |
57 .stabs "uint_fast16_t:t(6,22)=(6,4)",128,0,215,0
|
|
|
61 |
GAS LISTING /tmp/ccQbezXt.s page 2
|
|
|
62 |
|
|
|
63 |
|
|
|
64 |
58 .stabs "int_fast32_t:t(6,23)=(6,5)",128,0,220,0
|
|
|
65 |
59 .stabs "uint_fast32_t:t(6,24)=(6,6)",128,0,225,0
|
|
|
66 |
60 .stabs "int_fast64_t:t(6,25)=(6,7)",128,0,230,0
|
|
|
67 |
61 .stabs "uint_fast64_t:t(6,26)=(6,8)",128,0,235,0
|
|
|
68 |
62 .stabs "intmax_t:t(6,27)=(6,7)",128,0,249,0
|
|
|
69 |
63 .stabs "uintmax_t:t(6,28)=(6,8)",128,0,254,0
|
|
|
70 |
64 .stabn 162,0,0,0
|
|
|
71 |
65 .stabs "int_farptr_t:t(5,1)=(6,5)",128,0,76,0
|
|
|
72 |
66 .stabs "uint_farptr_t:t(5,2)=(6,6)",128,0,80,0
|
|
|
73 |
67 .stabn 162,0,0,0
|
|
|
74 |
68 .stabn 162,0,0,0
|
|
|
75 |
69 .stabn 162,0,0,0
|
|
|
76 |
70 .stabn 162,0,0,0
|
|
|
77 |
71 .stabs "bool_t:t(1,1)=(0,11)",128,0,56,0
|
|
|
78 |
72 .stabn 162,0,0,0
|
|
|
79 |
73 .stabs "Utility_delay:F(0,15)",36,0,65,Utility_delay
|
|
|
80 |
74 .stabs "numMs:P(0,9)",64,0,64,18
|
|
|
81 |
75 .global Utility_delay
|
|
|
82 |
76 .type Utility_delay, @function
|
|
|
83 |
77 Utility_delay:
|
|
|
84 |
78 .stabd 46,0,0
|
|
|
85 |
1:Utility.c **** /*
|
|
|
86 |
2:Utility.c **** Copyright (C) 2004 John Orlando
|
|
|
87 |
3:Utility.c ****
|
|
|
88 |
4:Utility.c **** AVRcam: a small real-time image processing engine.
|
|
|
89 |
5:Utility.c ****
|
|
|
90 |
6:Utility.c **** This program is free software; you can redistribute it and/or
|
|
|
91 |
7:Utility.c **** modify it under the terms of the GNU General Public
|
|
|
92 |
8:Utility.c **** License as published by the Free Software Foundation; either
|
|
|
93 |
9:Utility.c **** version 2 of the License, or (at your option) any later version.
|
|
|
94 |
10:Utility.c ****
|
|
|
95 |
11:Utility.c **** This program is distributed in the hope that it will be useful,
|
|
|
96 |
12:Utility.c **** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
97 |
13:Utility.c **** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
98 |
14:Utility.c **** General Public License for more details.
|
|
|
99 |
15:Utility.c ****
|
|
|
100 |
16:Utility.c **** You should have received a copy of the GNU General Public
|
|
|
101 |
17:Utility.c **** License along with this program; if not, write to the Free Software
|
|
|
102 |
18:Utility.c **** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
103 |
19:Utility.c ****
|
|
|
104 |
20:Utility.c **** For more information on the AVRcam, please contact:
|
|
|
105 |
21:Utility.c ****
|
|
|
106 |
22:Utility.c **** john@jrobot.net
|
|
|
107 |
23:Utility.c ****
|
|
|
108 |
24:Utility.c **** or go to www.jrobot.net for more details regarding the system.
|
|
|
109 |
25:Utility.c **** */
|
|
|
110 |
26:Utility.c **** /***********************************************************
|
|
|
111 |
27:Utility.c **** Module Name: Utility.c
|
|
|
112 |
28:Utility.c **** Module Date: 04/13/2004
|
|
|
113 |
29:Utility.c **** Module Auth: John Orlando
|
|
|
114 |
30:Utility.c ****
|
|
|
115 |
31:Utility.c **** Description: This module provides a basic set of
|
|
|
116 |
32:Utility.c **** general purpose utilities that can be used by any
|
|
|
117 |
33:Utility.c **** module needing them.
|
|
|
118 |
34:Utility.c ****
|
|
|
119 |
35:Utility.c **** Revision History:
|
|
|
120 |
36:Utility.c **** Date Rel Ver. Notes
|
|
|
121 |
GAS LISTING /tmp/ccQbezXt.s page 3
|
|
|
122 |
|
|
|
123 |
|
|
|
124 |
37:Utility.c **** 4/10/2004 0.1 Module created
|
|
|
125 |
38:Utility.c **** 6/30/2004 1.0 Initial release for Circuit Cellar
|
|
|
126 |
39:Utility.c **** contest.
|
|
|
127 |
40:Utility.c **** ***********************************************************/
|
|
|
128 |
41:Utility.c ****
|
|
|
129 |
42:Utility.c **** /* Includes */
|
|
|
130 |
43:Utility.c **** #include "CommonDefs.h"
|
|
|
131 |
44:Utility.c ****
|
|
|
132 |
45:Utility.c **** /* Local Variables */
|
|
|
133 |
46:Utility.c ****
|
|
|
134 |
47:Utility.c **** /* Local Structures and Typedefs */
|
|
|
135 |
48:Utility.c ****
|
|
|
136 |
49:Utility.c **** /* Extern Variables */
|
|
|
137 |
50:Utility.c ****
|
|
|
138 |
51:Utility.c **** /* Definitions */
|
|
|
139 |
52:Utility.c ****
|
|
|
140 |
53:Utility.c **** /***********************************************************
|
|
|
141 |
54:Utility.c **** Function Name: Utility_delay
|
|
|
142 |
55:Utility.c **** Function Description: This function provides a busy-wait
|
|
|
143 |
56:Utility.c **** delay for a specified number of milliseconds.
|
|
|
144 |
57:Utility.c **** Inputs: numMs - the number of milliseconds to delay
|
|
|
145 |
58:Utility.c **** Outputs: none
|
|
|
146 |
59:Utility.c **** NOTES: The delay_loop_1 and delay_loop_2 functions found
|
|
|
147 |
60:Utility.c **** in avr/delay.h provide accurate 3 and 4 cycle delay loops
|
|
|
148 |
61:Utility.c **** if needed...this isn't really a millisecond, so DON'T
|
|
|
149 |
62:Utility.c **** depend on it for exact timing...
|
|
|
150 |
63:Utility.c **** ***********************************************************/
|
|
|
151 |
64:Utility.c **** void Utility_delay(unsigned short numMs)
|
|
|
152 |
65:Utility.c **** {
|
|
|
153 |
79 .stabn 68,0,65,.LM0-Utility_delay
|
|
|
154 |
80 .LM0:
|
|
|
155 |
81 /* prologue: frame size=4 */
|
|
|
156 |
82 0000 CF93 push r28
|
|
|
157 |
83 0002 DF93 push r29
|
|
|
158 |
84 0004 CDB7 in r28,__SP_L__
|
|
|
159 |
85 0006 DEB7 in r29,__SP_H__
|
|
|
160 |
86 0008 2497 sbiw r28,4
|
|
|
161 |
87 000a 0FB6 in __tmp_reg__,__SREG__
|
|
|
162 |
88 000c F894 cli
|
|
|
163 |
89 000e DEBF out __SP_H__,r29
|
|
|
164 |
90 0010 0FBE out __SREG__,__tmp_reg__
|
|
|
165 |
91 0012 CDBF out __SP_L__,r28
|
|
|
166 |
92 /* prologue end (size=10) */
|
|
|
167 |
93 0014 9C01 movw r18,r24
|
|
|
168 |
66:Utility.c **** volatile unsigned short i=0,j=0;
|
|
|
169 |
94 .stabn 68,0,66,.LM1-Utility_delay
|
|
|
170 |
95 .LM1:
|
|
|
171 |
96 0016 1A82 std Y+2,__zero_reg__
|
|
|
172 |
97 0018 1982 std Y+1,__zero_reg__
|
|
|
173 |
98 001a 1C82 std Y+4,__zero_reg__
|
|
|
174 |
99 001c 1B82 std Y+3,__zero_reg__
|
|
|
175 |
67:Utility.c **** #ifndef SIMULATION
|
|
|
176 |
68:Utility.c **** for (i=0; i<numMs; i++)
|
|
|
177 |
100 .stabn 68,0,68,.LM2-Utility_delay
|
|
|
178 |
101 .LM2:
|
|
|
179 |
102 001e 1A82 std Y+2,__zero_reg__
|
|
|
180 |
103 0020 1982 std Y+1,__zero_reg__
|
|
|
181 |
GAS LISTING /tmp/ccQbezXt.s page 4
|
|
|
182 |
|
|
|
183 |
|
|
|
184 |
104 0022 8981 ldd r24,Y+1
|
|
|
185 |
105 0024 9A81 ldd r25,Y+2
|
|
|
186 |
106 0026 8217 cp r24,r18
|
|
|
187 |
107 0028 9307 cpc r25,r19
|
|
|
188 |
108 002a E0F4 brsh .L6
|
|
|
189 |
109 .L7:
|
|
|
190 |
69:Utility.c **** {
|
|
|
191 |
70:Utility.c **** for (j=0; j<1000; j++)
|
|
|
192 |
110 .stabn 68,0,70,.LM3-Utility_delay
|
|
|
193 |
111 .LM3:
|
|
|
194 |
112 002c 1C82 std Y+4,__zero_reg__
|
|
|
195 |
113 002e 1B82 std Y+3,__zero_reg__
|
|
|
196 |
114 0030 8B81 ldd r24,Y+3
|
|
|
197 |
115 0032 9C81 ldd r25,Y+4
|
|
|
198 |
116 0034 885E subi r24,lo8(1000)
|
|
|
199 |
117 0036 9340 sbci r25,hi8(1000)
|
|
|
200 |
118 0038 58F4 brsh .L4
|
|
|
201 |
119 .L8:
|
|
|
202 |
71:Utility.c **** {
|
|
|
203 |
72:Utility.c **** asm volatile("nop"::);
|
|
|
204 |
120 .stabn 68,0,72,.LM4-Utility_delay
|
|
|
205 |
121 .LM4:
|
|
|
206 |
122 /* #APP */
|
|
|
207 |
123 003a 0000 nop
|
|
|
208 |
124 .stabn 68,0,70,.LM5-Utility_delay
|
|
|
209 |
125 .LM5:
|
|
|
210 |
126 /* #NOAPP */
|
|
|
211 |
127 003c 8B81 ldd r24,Y+3
|
|
|
212 |
128 003e 9C81 ldd r25,Y+4
|
|
|
213 |
129 0040 0196 adiw r24,1
|
|
|
214 |
130 0042 9C83 std Y+4,r25
|
|
|
215 |
131 0044 8B83 std Y+3,r24
|
|
|
216 |
132 0046 8B81 ldd r24,Y+3
|
|
|
217 |
133 0048 9C81 ldd r25,Y+4
|
|
|
218 |
134 004a 885E subi r24,lo8(1000)
|
|
|
219 |
135 004c 9340 sbci r25,hi8(1000)
|
|
|
220 |
136 004e A8F3 brlo .L8
|
|
|
221 |
137 .L4:
|
|
|
222 |
138 .stabn 68,0,68,.LM6-Utility_delay
|
|
|
223 |
139 .LM6:
|
|
|
224 |
140 0050 8981 ldd r24,Y+1
|
|
|
225 |
141 0052 9A81 ldd r25,Y+2
|
|
|
226 |
142 0054 0196 adiw r24,1
|
|
|
227 |
143 0056 9A83 std Y+2,r25
|
|
|
228 |
144 0058 8983 std Y+1,r24
|
|
|
229 |
145 005a 8981 ldd r24,Y+1
|
|
|
230 |
146 005c 9A81 ldd r25,Y+2
|
|
|
231 |
147 005e 8217 cp r24,r18
|
|
|
232 |
148 0060 9307 cpc r25,r19
|
|
|
233 |
149 0062 20F3 brlo .L7
|
|
|
234 |
150 .L6:
|
|
|
235 |
151 /* epilogue: frame size=4 */
|
|
|
236 |
152 0064 2496 adiw r28,4
|
|
|
237 |
153 0066 0FB6 in __tmp_reg__,__SREG__
|
|
|
238 |
154 0068 F894 cli
|
|
|
239 |
155 006a DEBF out __SP_H__,r29
|
|
|
240 |
156 006c 0FBE out __SREG__,__tmp_reg__
|
|
|
241 |
GAS LISTING /tmp/ccQbezXt.s page 5
|
|
|
242 |
|
|
|
243 |
|
|
|
244 |
157 006e CDBF out __SP_L__,r28
|
|
|
245 |
158 0070 DF91 pop r29
|
|
|
246 |
159 0072 CF91 pop r28
|
|
|
247 |
160 0074 0895 ret
|
|
|
248 |
161 /* epilogue end (size=9) */
|
|
|
249 |
162 /* function Utility_delay size 62 (43) */
|
|
|
250 |
163 .size Utility_delay, .-Utility_delay
|
|
|
251 |
164 .stabs "i:(0,16)=B(0,9)",128,0,66,1
|
|
|
252 |
165 .stabs "j:(0,16)",128,0,66,3
|
|
|
253 |
166 .stabn 192,0,0,Utility_delay-Utility_delay
|
|
|
254 |
167 .stabn 224,0,0,.Lscope0-Utility_delay
|
|
|
255 |
168 .Lscope0:
|
|
|
256 |
169 .stabs "",36,0,0,.Lscope0-Utility_delay
|
|
|
257 |
170 .stabd 78,0,0
|
|
|
258 |
171 .stabs "",100,0,0,.Letext0
|
|
|
259 |
172 .Letext0:
|
|
|
260 |
173 /* File "Utility.c": code 62 = 0x003e ( 43), prologues 10, epilogues 9 */
|
|
|
261 |
GAS LISTING /tmp/ccQbezXt.s page 6
|
|
|
262 |
|
|
|
263 |
|
|
|
264 |
DEFINED SYMBOLS
|
|
|
265 |
*ABS*:00000000 Utility.c
|
|
|
266 |
/tmp/ccQbezXt.s:3 *ABS*:0000003f __SREG__
|
|
|
267 |
/tmp/ccQbezXt.s:4 *ABS*:0000003e __SP_H__
|
|
|
268 |
/tmp/ccQbezXt.s:5 *ABS*:0000003d __SP_L__
|
|
|
269 |
/tmp/ccQbezXt.s:6 *ABS*:00000000 __tmp_reg__
|
|
|
270 |
/tmp/ccQbezXt.s:7 *ABS*:00000001 __zero_reg__
|
|
|
271 |
/tmp/ccQbezXt.s:77 .text:00000000 Utility_delay
|
|
|
272 |
|
|
|
273 |
UNDEFINED SYMBOLS
|
|
|
274 |
__do_copy_data
|
|
|
275 |
__do_clear_bss
|