📄 main.lst
字号:
241 0056 80E0 ldi r24,lo8(__c.0)
242 0058 90E0 ldi r25,hi8(__c.0)
243 005a 9F93 push r25
244 005c 8F93 push r24
245 005e 81E0 ldi r24,lo8(1)
246 0060 8F93 push r24
247 0062 0E94 0000 call rprintf1RamRom
69:main.c ****
70:main.c **** // init device driver
71:main.c **** ax88796devInit();
248 .stabn 68,0,71,.LM15-main
249 .LM15:
250 0066 0E94 0000 call ax88796devInit
72:main.c ****
73:main.c **** // init uIP
74:main.c **** uip_init();
251 .stabn 68,0,74,.LM16-main
252 .LM16:
253 006a 0E94 0000 call uip_init
75:main.c ****
76:main.c **** // init app
77:main.c **** appInit();
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s page 7
254 .stabn 68,0,77,.LM17-main
255 .LM17:
256 006e 0E94 0000 call appInit
78:main.c ****
79:main.c **** // init ARP cache
80:main.c **** uip_arp_init();
257 .stabn 68,0,80,.LM18-main
258 .LM18:
259 0072 0E94 0000 call uip_arp_init
81:main.c ****
82:main.c **** // init periodic timer
83:main.c **** initTimer();
260 .stabn 68,0,83,.LM19-main
261 .LM19:
262 0076 0E94 0000 call initTimer
84:main.c ****
85:main.c **** sei();
263 .stabn 68,0,85,.LM20-main
264 .LM20:
265 /* #APP */
266 007a 7894 sei
86:main.c ****
87:main.c **** rprintf("Starting packet receive loop\r\n");
267 .stabn 68,0,87,.LM21-main
268 .LM21:
269 /* #NOAPP */
270 007c 0F90 pop __tmp_reg__
271 007e 0F90 pop __tmp_reg__
272 0080 0F90 pop __tmp_reg__
273 0082 80E0 ldi r24,lo8(__c.1)
274 0084 90E0 ldi r25,hi8(__c.1)
275 0086 9F93 push r25
276 0088 8F93 push r24
277 008a 81E0 ldi r24,lo8(1)
278 008c 8F93 push r24
279 008e 0E94 0000 call rprintf1RamRom
88:main.c **** while(1)
280 .stabn 68,0,88,.LM22-main
281 .LM22:
282 0092 0F90 pop __tmp_reg__
283 0094 0F90 pop __tmp_reg__
284 0096 0F90 pop __tmp_reg__
285 .L24:
89:main.c **** {
90:main.c **** // look for a packet
91:main.c **** uip_len = ax88796devPoll();
286 .stabn 68,0,91,.LM23-main
287 .LM23:
288 0098 0E94 0000 call ax88796devPoll
289 009c 8093 0000 sts uip_len,r24
92:main.c **** if(uip_len == 0)
290 .stabn 68,0,92,.LM24-main
291 .LM24:
292 00a0 C091 0000 lds r28,uip_len
293 00a4 CC23 tst r28
294 00a6 21F5 brne .L7
93:main.c **** {
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s page 8
94:main.c **** // if timed out, call periodic function for each connection
95:main.c **** if(timerCounter > TIMERCOUNTER_PERIODIC_TIMEOUT)
295 .stabn 68,0,95,.LM25-main
296 .LM25:
297 00a8 8091 0000 lds r24,timerCounter
298 00ac 8031 cpi r24,lo8(16)
299 00ae A0F3 brlo .L24
96:main.c **** {
97:main.c **** timerCounter = 0;
300 .stabn 68,0,97,.LM26-main
301 .LM26:
302 00b0 C093 0000 sts timerCounter,r28
98:main.c ****
99:main.c **** vt100SetCursorPos(18,0);
303 .stabn 68,0,99,.LM27-main
304 .LM27:
305 00b4 6C2F mov r22,r28
306 00b6 82E1 ldi r24,lo8(18)
307 00b8 0E94 0000 call vt100SetCursorPos
100:main.c **** ax88796RegDump();
308 .stabn 68,0,100,.LM28-main
309 .LM28:
310 00bc 0E94 0000 call ax88796RegDump
311 .L15:
101:main.c ****
102:main.c **** for(i = 0; i < UIP_CONNS; i++)
103:main.c **** {
104:main.c **** uip_periodic(i);
312 .stabn 68,0,104,.LM29-main
313 .LM29:
314 00c0 89E1 ldi r24,lo8(25)
315 00c2 C89F mul r28,r24
316 00c4 C001 movw r24,r0
317 00c6 1124 clr r1
318 00c8 8050 subi r24,lo8(-(uip_conns))
319 00ca 9040 sbci r25,hi8(-(uip_conns))
320 00cc 9093 0000 sts (uip_conn)+1,r25
321 00d0 8093 0000 sts uip_conn,r24
322 00d4 82E0 ldi r24,lo8(2)
323 00d6 0E94 0000 call uip_process
105:main.c ****
106:main.c **** // transmit a packet, if one is ready
107:main.c **** if(uip_len > 0)
324 .stabn 68,0,107,.LM30-main
325 .LM30:
326 00da 8091 0000 lds r24,uip_len
327 00de 8823 tst r24
328 00e0 21F0 breq .L11
108:main.c **** {
109:main.c **** uip_arp_out();
329 .stabn 68,0,109,.LM31-main
330 .LM31:
331 00e2 0E94 0000 call uip_arp_out
110:main.c **** ax88796devSend();
332 .stabn 68,0,110,.LM32-main
333 .LM32:
334 00e6 0E94 0000 call ax88796devSend
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s page 9
335 .stabn 68,0,102,.LM33-main
336 .LM33:
337 .L11:
338 00ea CF5F subi r28,lo8(-(1))
339 00ec 49F3 breq .L15
340 00ee D4CF rjmp .L24
341 .L7:
111:main.c **** }
112:main.c **** }
113:main.c ****
114:main.c **** /* Call the ARP timer function every 10 seconds. */
115:main.c **** /* not tested yet
116:main.c **** if(++arptimer == 20)
117:main.c **** {
118:main.c **** uip_arp_timer();
119:main.c **** arptimer = 0;
120:main.c **** }*/
121:main.c ****
122:main.c **** }
123:main.c **** }
124:main.c **** else // packet received
125:main.c **** {
126:main.c **** rprintf("Packet Received with length: %d\r\n",uip_len);
342 .stabn 68,0,126,.LM34-main
343 .LM34:
344 00f0 8091 0000 lds r24,uip_len
345 00f4 9927 clr r25
346 00f6 9F93 push r25
347 00f8 8F93 push r24
348 00fa 80E0 ldi r24,lo8(__c.2)
349 00fc 90E0 ldi r25,hi8(__c.2)
350 00fe 9F93 push r25
351 0100 8F93 push r24
352 0102 C1E0 ldi r28,lo8(1)
353 0104 CF93 push r28
354 0106 0E94 0000 call rprintf1RamRom
127:main.c ****
128:main.c **** // process an IP packet
129:main.c **** if(BUF->type == htons(UIP_ETHTYPE_IP))
355 .stabn 68,0,129,.LM35-main
356 .LM35:
357 010a 8091 0000 lds r24,uip_buf+12
358 010e 9091 0000 lds r25,(uip_buf+12)+1
359 0112 0F90 pop __tmp_reg__
360 0114 0F90 pop __tmp_reg__
361 0116 0F90 pop __tmp_reg__
362 0118 0F90 pop __tmp_reg__
363 011a 0F90 pop __tmp_reg__
364 011c 8830 cpi r24,8
365 011e 9105 cpc r25,__zero_reg__
366 0120 71F0 breq .L26
130:main.c **** {
131:main.c **** // add the source to the ARP cache
132:main.c **** // also correctly set the ethernet packet length before processing
133:main.c **** uip_arp_ipin();
134:main.c **** uip_input();
135:main.c ****
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s page 10
136:main.c **** // transmit a packet, if one is ready
137:main.c **** if(uip_len > 0)
138:main.c **** {
139:main.c **** uip_arp_out();
140:main.c **** ax88796devSend();
141:main.c **** }
142:main.c **** }
143:main.c **** // process an ARP packet
144:main.c **** else if(BUF->type == htons(UIP_ETHTYPE_ARP))
367 .stabn 68,0,144,.LM36-main
368 .LM36:
369 0122 8850 subi r24,lo8(1544)
370 0124 9640 sbci r25,hi8(1544)
371 0126 09F0 breq _PC_+2
372 0128 B7CF rjmp .L24
145:main.c **** {
146:main.c **** uip_arp_arpin();
373 .stabn 68,0,146,.LM37-main
374 .LM37:
375 012a 0E94 0000 call uip_arp_arpin
147:main.c ****
148:main.c **** // transmit a packet, if one is ready
149:main.c **** if(uip_len > 0)
376 .stabn 68,0,149,.LM38-main
377 .LM38:
378 012e 8091 0000 lds r24,uip_len
379 0132 8823 tst r24
380 0134 09F4 brne _PC_+2
381 0136 B0CF rjmp .L24
150:main.c **** ax88796devSend();
382 .stabn 68,0,150,.LM39-main
383 .LM39:
384 .L25:
385 0138 0E94 0000 call ax88796devSend
386 013c ADCF rjmp .L24
387 .stabn 68,0,133,.LM40-main
388 .LM40:
389 .L26:
390 013e 0E94 0000 call uip_arp_ipin
391 .stabn 68,0,134,.LM41-main
392 .LM41:
393 0142 8C2F mov r24,r28
394 0144 0E94 0000 call uip_process
395 .stabn 68,0,137,.LM42-main
396 .LM42:
397 0148 8091 0000 lds r24,uip_len
398 014c 8823 tst r24
399 014e 09F4 brne _PC_+2
400 0150 A3CF rjmp .L24
401 .stabn 68,0,139,.LM43-main
402 .LM43:
403 0152 0E94 0000 call uip_arp_out
404 .stabn 68,0,140,.LM44-main
405 .LM44:
406 0156 F0CF rjmp .L25
151:main.c **** }
152:main.c **** }
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s page 11
153:main.c **** }
154:main.c ****
155:main.c **** return 1;
156:main.c **** }
407 .stabn 68,0,156,.LM45-main
408 .LM45:
409 .LBE2:
410 /* epilogue: frame size=0 */
411 /* epilogue: noreturn */
412 /* epilogue end (size=0) */
413 /* function main size 150 (146) */
414 .Lfe3:
415 .size main,.Lfe3-main
416 .stabs "i:r(0,11)",64,0,62,28
417 .stabn 192,0,0,.LBB2-main
418 .stabn 224,0,0,.LBE2-main
419 .Lscope2:
420 .stabs "",36,0,0,.Lscope2-main
421 .lcomm timerCounter,1
422 .stabs "timerCounter:S(0,11)",40,0,39,timerCounter
423 .text
424 .stabs "",100,0,0,Letext
425 Letext:
426 /* File "main.c": code 175 = 0x00af ( 158), prologues 10, epilogues 7 */
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s page 12
DEFINED SYMBOLS
*ABS*:00000000 main.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
*ABS*:00000002 _PC_
C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s:133 .text:00000000 initTimer
.bss:00000000 timerCounter
C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s:163 .text:00000010 __vector_11
C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s:197 .progmem.data:00000000 __c.0
C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s:201 .progmem.data:00000015 __c.1
C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s:205 .progmem.data:00000034 __c.2
C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s:211 .text:00000032 main
C:\DOCUME~1\pstang\LOCALS~1\Temp/ccOyaaaa.s:425 .text:00000158 Letext
*ABS*:00000000 *ABS*
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack
uartInit
uartSetBaudRate
uartSendByte
rprintfInit
vt100ClearScreen
rprintf1RamRom
ax88796devInit
uip_init
appInit
uip_arp_init
ax88796devPoll
uip_len
vt100SetCursorPos
ax88796RegDump
uip_conns
uip_conn
uip_process
uip_arp_out
ax88796devSend
uip_buf
uip_arp_arpin
uip_arp_ipin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -