📄 router.lst
字号:
1 .file "router.c"
2 .arch atmega128
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
223 .global associate_tab_init
225 associate_tab_init:
1:router.c **** //----------------------------------------------------//
2:router.c **** //-------Institute Of Computing Technology-----------//
3:router.c **** //------------Chinese Academic Science---------------//
4:router.c **** //-----中国科学院计算技术研究所先进测试技术实验室-----//
5:router.c **** //----------------------------------------------------//
6:router.c ****
7:router.c **** /**
8:router.c **** * @copyright:nbicc_lpp
9:router.c **** * @this is router layer code
10:router.c **** * @author liulingyi (lingyiliu@ict.ac.cn)
11:router.c **** *
12:router.c **** *
13:router.c **** * @data:2005.12.16
14:router.c **** * @version:0.0.1
15:router.c **** * @updata:$
16:router.c **** *
17:router.c **** */
18:router.c ****
19:router.c **** #include "project.h"
20:router.c **** #include "router.h"
21:router.c ****
22:router.c **** extern SHORT_ADDR default_short_addr;
23:router.c **** extern MAC_PIB mac_pib_data;
24:router.c ****
25:router.c **** ASSOCIATE_TABLE_ELEM associate_tab[MAX_ASSOCIATE_TABLE_NUM];
26:router.c ****
27:router.c **** uint16_t short_address_initial;
28:router.c **** uint16_t address_allocated_num;
29:router.c ****
30:router.c ****
31:router.c **** void associate_tab_init(void)
32:router.c **** {
227 .LM1:
228 /* prologue: frame size=0 */
229 /* prologue end (size=0) */
230 0000 E0E0 ldi r30,lo8(associate_tab)
231 0002 F0E0 ldi r31,hi8(associate_tab)
232 0004 89E0 ldi r24,lo8(9)
233 .L5:
234 .LBB2:
33:router.c **** for(uint8_t index=0;index<MAX_ASSOCIATE_TABLE_NUM;index++)
34:router.c **** {
35:router.c **** associate_tab[index].is_valid=FALSE;
236 .LM2:
237 0006 1286 std Z+10,__zero_reg__
36:router.c **** associate_tab[index].ieee_addr.longaddr=0x0000000000000000;
239 .LM3:
240 0008 1082 st Z,__zero_reg__
241 000a 1182 std Z+1,__zero_reg__
242 000c 1282 std Z+2,__zero_reg__
243 000e 1382 std Z+3,__zero_reg__
244 0010 1482 std Z+4,__zero_reg__
245 0012 1582 std Z+5,__zero_reg__
246 0014 1682 std Z+6,__zero_reg__
247 0016 1782 std Z+7,__zero_reg__
249 .LM4:
250 0018 8150 subi r24,lo8(-(-1))
251 001a 3B96 adiw r30,11
252 001c 87FF sbrs r24,7
253 001e F3CF rjmp .L5
254 .LBE2:
255 /* epilogue: frame size=0 */
256 0020 0895 ret
257 /* epilogue end (size=1) */
258 /* function associate_tab_init size 17 (16) */
264 .global router_init
266 router_init:
37:router.c **** }
38:router.c **** }
39:router.c **** void router_init(void)
40:router.c **** {
268 .LM5:
269 /* prologue: frame size=0 */
270 /* prologue end (size=0) */
41:router.c **** associate_tab_init();
272 .LM6:
273 0022 0E94 0000 call associate_tab_init
42:router.c **** short_address_initial=0x1201;
275 .LM7:
276 0026 81E0 ldi r24,lo8(4609)
277 0028 92E1 ldi r25,hi8(4609)
278 002a 9093 0000 sts (short_address_initial)+1,r25
279 002e 8093 0000 sts short_address_initial,r24
43:router.c **** address_allocated_num=0;
281 .LM8:
282 0032 1092 0000 sts (address_allocated_num)+1,__zero_reg__
283 0036 1092 0000 sts address_allocated_num,__zero_reg__
284 /* epilogue: frame size=0 */
285 003a 0895 ret
286 /* epilogue end (size=1) */
287 /* function router_init size 13 (12) */
291 .global Is_associated
293 Is_associated:
44:router.c **** }
45:router.c **** SHORT_ADDR short_address_allocate_req(LONG_ADDR ieee_addr)
46:router.c **** {
47:router.c ****
48:router.c ****
49:router.c **** //地址分配,记录关联信息
50:router.c **** SHORT_ADDR allocated_addr;
51:router.c **** //allocated_addr=get_a_short_address();
52:router.c ****
53:router.c ****
54:router.c ****
55:router.c ****
56:router.c **** //return allocated_addr;
57:router.c ****
58:router.c **** uint8_t index;
59:router.c ****
60:router.c **** //allocated_addr.Val=0x0044;
61:router.c **** // return allocated_addr;
62:router.c **** index=Is_associated(ieee_addr);
63:router.c **** if(index!=MAX_ASSOCIATE_TABLE_NUM)
64:router.c **** return associate_tab[index].allocated_addr;
65:router.c ****
66:router.c **** index=0;
67:router.c **** while((associate_tab[index].is_valid)&&(index<MAX_ASSOCIATE_TABLE_NUM))
68:router.c **** index++;
69:router.c ****
70:router.c **** if(index==MAX_ASSOCIATE_TABLE_NUM)
71:router.c **** return default_short_addr;
72:router.c **** associate_tab[index].ieee_addr=ieee_addr;
73:router.c **** associate_tab[index].is_valid=TRUE;
74:router.c **** associate_tab[index].allocated_addr=get_a_short_address();
75:router.c **** return associate_tab[index].allocated_addr;
76:router.c ****
77:router.c **** }
78:router.c ****
79:router.c ****
80:router.c **** uint8_t Is_associated(LONG_ADDR long_address)
81:router.c **** {
295 .LM9:
296 /* prologue: frame size=8 */
297 003c EF92 push r14
298 003e FF92 push r15
299 0040 0F93 push r16
300 0042 1F93 push r17
301 0044 CF93 push r28
302 0046 DF93 push r29
303 0048 CDB7 in r28,__SP_L__
304 004a DEB7 in r29,__SP_H__
305 004c 2897 sbiw r28,8
306 004e 0FB6 in __tmp_reg__,__SREG__
307 0050 F894 cli
308 0052 DEBF out __SP_H__,r29
309 0054 0FBE out __SREG__,__tmp_reg__
310 0056 CDBF out __SP_L__,r28
311 /* prologue end (size=14) */
312 0058 2983 std Y+1,r18
313 005a 3A83 std Y+2,r19
314 005c 4B83 std Y+3,r20
315 005e 5C83 std Y+4,r21
316 0060 6D83 std Y+5,r22
317 0062 7E83 std Y+6,r23
318 0064 8F83 std Y+7,r24
319 0066 9887 std Y+8,r25
82:router.c **** uint8_t index;
83:router.c **** index=0;
321 .LM10:
322 0068 90E0 ldi r25,lo8(0)
323 006a 7BE0 ldi r23,lo8(11)
324 006c E72E mov r14,r23
325 006e F12C mov r15,__zero_reg__
326 0070 022F mov r16,r18
327 0072 132F mov r17,r19
328 0074 B42F mov r27,r20
329 0076 A52F mov r26,r21
330 0078 762F mov r23,r22
331 007a 6E81 ldd r22,Y+6
332 007c 582F mov r21,r24
333 007e 4885 ldd r20,Y+8
84:router.c **** while((!associate_tab[index].is_valid)||(associate_tab[index].ieee_addr.longaddr!=long_addres
335 .LM11:
336 0080 06C0 rjmp .L10
337 .L14:
85:router.c **** {
86:router.c **** index++;
339 .LM12:
340 0082 9F5F subi r25,lo8(-(1))
87:router.c **** if(index==MAX_ASSOCIATE_TABLE_NUM)
342 .LM13:
343 0084 9A30 cpi r25,lo8(10)
344 0086 19F4 brne .L10
88:router.c **** return MAX_ASSOCIATE_TABLE_NUM;
346 .LM14:
347 0088 8AE0 ldi r24,lo8(10)
348 008a 90E0 ldi r25,hi8(10)
349 008c 27C0 rjmp .L9
350 .L10:
351 008e 292F mov r18,r25
352 0090 3327 clr r19
353 0092 2E9D mul r18,r14
354 0094 F001 movw r30,r0
355 0096 2F9D mul r18,r15
356 0098 F00D add r31,r0
357 009a 3E9D mul r19,r14
358 009c F00D add r31,r0
359 009e 1124 clr r1
360 00a0 E050 subi r30,lo8(-(associate_tab))
361 00a2 F040 sbci r31,hi8(-(associate_tab))
362 00a4 8285 ldd r24,Z+10
363 00a6 8823 tst r24
364 00a8 61F3 breq .L14
365 00aa 8081 ld r24,Z
366 00ac 8017 cp r24,r16
367 00ae 49F7 brne .L14
368 00b0 8181 ldd r24,Z+1
369 00b2 8117 cp r24,r17
370 00b4 31F7 brne .L14
371 00b6 8281 ldd r24,Z+2
372 00b8 8B17 cp r24,r27
373 00ba 19F7 brne .L14
374 00bc 8381 ldd r24,Z+3
375 00be 8A17 cp r24,r26
376 00c0 01F7 brne .L14
377 00c2 8481 ldd r24,Z+4
378 00c4 8717 cp r24,r23
379 00c6 E9F6 brne .L14
380 00c8 8581 ldd r24,Z+5
381 00ca 8617 cp r24,r22
382 00cc D1F6 brne .L14
383 00ce 8681 ldd r24,Z+6
384 00d0 8517 cp r24,r21
385 00d2 B9F6 brne .L14
386 00d4 8781 ldd r24,Z+7
387 00d6 8417 cp r24,r20
388 00d8 A1F6 brne .L14
89:router.c **** }
90:router.c **** return index;
390 .LM15:
391 00da C901 movw r24,r18
392 .L9:
393 /* epilogue: frame size=8 */
394 00dc 2896 adiw r28,8
395 00de 0FB6 in __tmp_reg__,__SREG__
396 00e0 F894 cli
397 00e2 DEBF out __SP_H__,r29
398 00e4 0FBE out __SREG__,__tmp_reg__
399 00e6 CDBF out __SP_L__,r28
400 00e8 DF91 pop r29
401 00ea CF91 pop r28
402 00ec 1F91 pop r17
403 00ee 0F91 pop r16
404 00f0 FF90 pop r15
405 00f2 EF90 pop r14
406 00f4 0895 ret
407 /* epilogue end (size=13) */
408 /* function Is_associated size 93 (66) */
412 .global get_a_short_address
414 get_a_short_address:
91:router.c **** }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -