main.lss
来自「ARP协议,含ARP」· LSS 代码 · 共 2,272 行 · 第 1/5 页
LSS
2,272 行
return true;
}
bool cfg_same_mac(uc * mac1, uc *mac2)
{
for(uc i=0;i<MAC_ADDR_LEN;i++)
55e: 26 30 cpi r18, 0x06 ; 6
560: 31 05 cpc r19, r1
562: 79 f7 brne .-34 ; 0x542 <cfg_same_mac+0x6>
564: 81 e0 ldi r24, 0x01 ; 1
{
return false;
}
}
return true;
}
566: 08 95 ret
00000568 <cfg_cmp_mac_addr>:
bool cfg_cmp_mac_addr (uc *addr) {
568: ac 01 movw r20, r24
56a: 20 e0 ldi r18, 0x00 ; 0
56c: 30 e0 ldi r19, 0x00 ; 0
uc i;
for (i=0; i<MAC_ADDR_LEN; i++) {
if (addr[i] != cfg_mac_addr[i]) {
56e: fa 01 movw r30, r20
570: e2 0f add r30, r18
572: f3 1f adc r31, r19
574: d9 01 movw r26, r18
576: a1 5a subi r26, 0xA1 ; 161
578: be 4f sbci r27, 0xFE ; 254
57a: 90 81 ld r25, Z
57c: 8c 91 ld r24, X
57e: 98 17 cp r25, r24
580: 11 f0 breq .+4 ; 0x586 <cfg_cmp_mac_addr+0x1e>
582: 80 e0 ldi r24, 0x00 ; 0
584: 08 95 ret
586: 2f 5f subi r18, 0xFF ; 255
588: 3f 4f sbci r19, 0xFF ; 255
}
bool cfg_cmp_mac_addr (uc *addr) {
uc i;
for (i=0; i<MAC_ADDR_LEN; i++) {
58a: 26 30 cpi r18, 0x06 ; 6
58c: 31 05 cpc r19, r1
58e: 79 f7 brne .-34 ; 0x56e <cfg_cmp_mac_addr+0x6>
590: 81 e0 ldi r24, 0x01 ; 1
return false;
}
}
return true;
592: 08 95 ret
00000594 <alloc_mem>:
//内存资源为临界共享资源
struct _mem_block mbs[MEM_BLK_NUM], *mb_head;
//应用中调用
void* alloc_mem (us len) {
594: 8d 52 subi r24, 0x2D ; 45
596: 91 40 sbci r25, 0x01 ; 1
598: a0 f4 brcc .+40 ; 0x5c2 <alloc_mem+0x2e>
if (len > MEM_BLK_SIZE) {
return NULL;
}
if (NULL == mb_head) {
59a: e0 91 5c 01 lds r30, 0x015C
59e: f0 91 5d 01 lds r31, 0x015D
5a2: 30 97 sbiw r30, 0x00 ; 0
5a4: 71 f0 breq .+28 ; 0x5c2 <alloc_mem+0x2e>
return NULL;
}
p = mb_head;
mb_head = p->pnext;
5a6: 80 81 ld r24, Z
5a8: 91 81 ldd r25, Z+1 ; 0x01
5aa: 90 93 5d 01 sts 0x015D, r25
5ae: 80 93 5c 01 sts 0x015C, r24
p->pnext = NULL;
5b2: 11 82 std Z+1, r1 ; 0x01
5b4: 10 82 st Z, r1
p->len = 0;
5b6: 13 82 std Z+3, r1 ; 0x03
5b8: 12 82 std Z+2, r1 ; 0x02
return &(p->content[0]);
5ba: 9f 01 movw r18, r30
5bc: 2c 5f subi r18, 0xFC ; 252
5be: 3f 4f sbci r19, 0xFF ; 255
5c0: 02 c0 rjmp .+4 ; 0x5c6 <alloc_mem+0x32>
5c2: 20 e0 ldi r18, 0x00 ; 0
5c4: 30 e0 ldi r19, 0x00 ; 0
}
5c6: c9 01 movw r24, r18
5c8: 08 95 ret
000005ca <free_mem>:
void free_mem (void *pf) {
5ca: fc 01 movw r30, r24
5cc: 34 97 sbiw r30, 0x04 ; 4
struct _mem_block *p;
p = PMEM_BLOCK (pf);
p->pnext = mb_head;
5ce: 80 91 5c 01 lds r24, 0x015C
5d2: 90 91 5d 01 lds r25, 0x015D
5d6: 91 83 std Z+1, r25 ; 0x01
5d8: 80 83 st Z, r24
p->len = 0;
5da: 13 82 std Z+3, r1 ; 0x03
5dc: 12 82 std Z+2, r1 ; 0x02
mb_head = p;
5de: f0 93 5d 01 sts 0x015D, r31
5e2: e0 93 5c 01 sts 0x015C, r30
}
5e6: 08 95 ret
000005e8 <alloc_mb>:
void* alloc_mb (void) {
5e8: e0 91 5c 01 lds r30, 0x015C
5ec: f0 91 5d 01 lds r31, 0x015D
5f0: 30 97 sbiw r30, 0x00 ; 0
5f2: 19 f4 brne .+6 ; 0x5fa <alloc_mb+0x12>
5f4: 20 e0 ldi r18, 0x00 ; 0
5f6: 30 e0 ldi r19, 0x00 ; 0
5f8: 0b c0 rjmp .+22 ; 0x610 <alloc_mb+0x28>
if (NULL == mb_head) {
return NULL;
}
p = mb_head;
mb_head = p->pnext;
5fa: 80 81 ld r24, Z
5fc: 91 81 ldd r25, Z+1 ; 0x01
5fe: 90 93 5d 01 sts 0x015D, r25
602: 80 93 5c 01 sts 0x015C, r24
p->pnext = NULL;
606: 11 82 std Z+1, r1 ; 0x01
608: 10 82 st Z, r1
p->len = 0;
60a: 13 82 std Z+3, r1 ; 0x03
60c: 12 82 std Z+2, r1 ; 0x02
return p;
60e: 9f 01 movw r18, r30
}
610: c9 01 movw r24, r18
612: 08 95 ret
00000614 <free_mb>:
void free_mb (struct _mem_block *p) {
614: fc 01 movw r30, r24
p->pnext = mb_head;
616: 80 91 5c 01 lds r24, 0x015C
61a: 90 91 5d 01 lds r25, 0x015D
61e: 91 83 std Z+1, r25 ; 0x01
620: 80 83 st Z, r24
p->len = 0;
622: 13 82 std Z+3, r1 ; 0x03
624: 12 82 std Z+2, r1 ; 0x02
mb_head = p;
626: f0 93 5d 01 sts 0x015D, r31
62a: e0 93 5c 01 sts 0x015C, r30
}
62e: 08 95 ret
00000630 <chk_mem>:
bool chk_mem (struct _mem_block *p) {
630: 2e e6 ldi r18, 0x6E ; 110
632: 31 e0 ldi r19, 0x01 ; 1
uc i;
for (i=0; i<MEM_BLK_NUM; i++) {
if (p == &(mbs[i])) {
634: 82 17 cp r24, r18
636: 93 07 cpc r25, r19
638: 11 f4 brne .+4 ; 0x63e <chk_mem+0xe>
63a: 81 e0 ldi r24, 0x01 ; 1
63c: 08 95 ret
63e: 20 5d subi r18, 0xD0 ; 208
640: 3e 4f sbci r19, 0xFE ; 254
}
bool chk_mem (struct _mem_block *p) {
uc i;
for (i=0; i<MEM_BLK_NUM; i++) {
642: 49 e0 ldi r20, 0x09 ; 9
644: 2e 3b cpi r18, 0xBE ; 190
646: 34 07 cpc r19, r20
648: a9 f7 brne .-22 ; 0x634 <chk_mem+0x4>
64a: 80 e0 ldi r24, 0x00 ; 0
return true;
}
}
return false;
}
64c: 08 95 ret
0000064e <free_msg>:
mbs[i].pnext = NULL;
mb_head = &(mbs[0]);
}
void free_msg (struct _mem_block *p) {
64e: fc 01 movw r30, r24
650: 40 91 5c 01 lds r20, 0x015C
654: 50 91 5d 01 lds r21, 0x015D
658: 08 c0 rjmp .+16 ; 0x66a <free_msg+0x1c>
struct _mem_block *pf;
while (NULL != p) {
pf = p;
p = p->pnext;
65a: 80 81 ld r24, Z
65c: 91 81 ldd r25, Z+1 ; 0x01
return p;
}
void free_mb (struct _mem_block *p) {
p->pnext = mb_head;
65e: 40 83 st Z, r20
660: 51 83 std Z+1, r21 ; 0x01
p->len = 0;
662: 13 82 std Z+3, r1 ; 0x03
664: 12 82 std Z+2, r1 ; 0x02
666: af 01 movw r20, r30
668: fc 01 movw r30, r24
}
void free_msg (struct _mem_block *p) {
struct _mem_block *pf;
while (NULL != p) {
66a: 30 97 sbiw r30, 0x00 ; 0
66c: b1 f7 brne .-20 ; 0x65a <free_msg+0xc>
66e: 40 93 5c 01 sts 0x015C, r20
672: 50 93 5d 01 sts 0x015D, r21
pf = p;
p = p->pnext;
free_mb (pf);
}
}
676: 08 95 ret
00000678 <get_msg_len>:
us get_msg_len (struct _mem_block *p) {
678: fc 01 movw r30, r24
67a: 20 e0 ldi r18, 0x00 ; 0
67c: 30 e0 ldi r19, 0x00 ; 0
67e: 07 c0 rjmp .+14 ; 0x68e <get_msg_len+0x16>
us len = 0;
while (NULL != p) {
len += p->len;
680: 82 81 ldd r24, Z+2 ; 0x02
682: 93 81 ldd r25, Z+3 ; 0x03
684: 28 0f add r18, r24
686: 39 1f adc r19, r25
p = p->pnext;
688: 01 90 ld r0, Z+
68a: f0 81 ld r31, Z
68c: e0 2d mov r30, r0
}
us get_msg_len (struct _mem_block *p) {
us len = 0;
while (NULL != p) {
68e: 30 97 sbiw r30, 0x00 ; 0
690: b9 f7 brne .-18 ; 0x680 <get_msg_len+0x8>
len += p->len;
p = p->pnext;
}
return len;
}
692: c9 01 movw r24, r18
694: 08 95 ret
00000696 <make_list_msg>:
memcpy (pm->content, buf, len);
} else ;
}
}
void *make_list_msg (us len) {
696: cf 92 push r12
698: df 92 push r13
69a: ef 92 push r14
69c: ff 92 push r15
69e: 0f 93 push r16
6a0: 1f 93 push r17
6a2: cf 93 push r28
6a4: df 93 push r29
6a6: 7c 01 movw r14, r24
struct _mem_block *ph, *p;
us n, i;
if (0 == len) {
6a8: 00 97 sbiw r24, 0x00 ; 0
6aa: a9 f1 breq .+106 ; 0x716 <make_list_msg+0x80>
return NULL;
}
ph = NULL;
n = 1 + ((len - 1) / MEM_BLK_SIZE);
6ac: 01 97 sbiw r24, 0x01 ; 1
6ae: 6c e2 ldi r22, 0x2C ; 44
6b0: 71 e0 ldi r23, 0x01 ; 1
6b2: 0e 94 db 0f call 0x1fb6 ; 0x1fb6 <__udivmodhi4>
6b6: 8b 01 movw r16, r22
6b8: 0f 5f subi r16, 0xFF ; 255
6ba: 1f 4f sbci r17, 0xFF ; 255
6bc: c0 91 5c 01 lds r28, 0x015C
6c0: d0 91 5d 01 lds r29, 0x015D
6c4: a0 e0 ldi r26, 0x00 ; 0
6c6: b0 e0 ldi r27, 0x00 ; 0
6c8: 60 e0 ldi r22, 0x00 ; 0
6ca: 70 e0 ldi r23, 0x00 ; 0
}
void* alloc_mb (void) {
struct _mem_block *p;
if (NULL == mb_head) {
6cc: 20 97 sbiw r28, 0x00 ; 0
6ce: 19 f4 brne .+6 ; 0x6d6 <make_list_msg+0x40>
6d0: 40 e0 ldi r20, 0x00 ; 0
6d2: 50 e0 ldi r21, 0x00 ; 0
6d4: 08 c0 rjmp .+16 ; 0x6e6 <make_list_msg+0x50>
return NULL;
}
p = mb_head;
mb_head = p->pnext;
6d6: 88 81 ld r24, Y
6d8: 99 81 ldd r25, Y+1 ; 0x01
p->pnext = NULL;
6da: 19 82 std Y+1, r1 ; 0x01
6dc: 18 82 st Y, r1
p->len = 0;
6de: 1b 82 std Y+3, r1 ; 0x03
6e0: 1a 82 std Y+2, r1 ; 0x02
return p;
6e2: ae 01 movw r20, r28
6e4: ec 01 movw r28, r24
ph = NULL;
n = 1 + ((len - 1) / MEM_BLK_SIZE);
for (i=0; i<n; i++) {
// p = alloc_mb ();
p=(struct _mem_block *) alloc_mb ();
6e6: 6a 01 movw r12, r20
if (NULL == p) {
6e8: 41 15 cp r20, r1
6ea: 51 05 cpc r21, r1
6ec: b9 f4 brne .+46 ; 0x71c <make_list_msg+0x86>
6ee: 0d c0 rjmp .+26 ; 0x70a <make_list_msg+0x74>
void free_msg (struct _mem_block *p) {
struct _mem_block *pf;
while (NULL != p) {
pf = p;
p = p->pnext;
6f0: 8c 91 ld r24, X
6f2: 11 96 adiw r26, 0x01 ; 1
6f4: 9c 91 ld r25, X
6f6: 11 97 sbiw r26, 0x01 ; 1
return p;
}
void free_mb (struct _mem_block *p) {
p->pnext = mb_head;
6f8: 11 96 adiw r26, 0x01 ; 1
6fa: dc 93 st X, r29
6fc: ce 93 st -X, r28
p->len = 0;
6fe: 13 96 adiw r26, 0x03 ; 3
700: 1c 92 st X, r1
702: 1e 92 st -X, r1
704: 12 97 sbiw r26, 0x02 ; 2
706: ed 01 movw r28, r26
708: dc 01 movw r26, r24
}
void free_msg (struct _mem_block *p) {
struct _mem_block *pf;
while (NULL != p) {
70a: 10 97 sbiw r26, 0x00 ; 0
70c: 89 f7 brne .-30 ; 0x6f0 <make_list_msg+0x5a>
70e: d0 93 5d 01 sts 0x015D, r29
712: c0 93 5c 01 sts 0x015C, r28
716: 20 e0 ldi r18, 0x00 ; 0
718: 30 e0 ldi r19, 0x00 ; 0
71a: 2d c0 rjmp .+90 ; 0x776 <make_list_msg+0xe0>
p=(struct _mem_block *) alloc_mb ();
if (NULL == p) {
free_msg (ph);
return NULL;
}
p->pnext = ph;
71c: fa 01 movw r30, r20
71e: b1 83 std Z+1, r27 ; 0x01
720: a0 83 st Z, r26
}
ph = NULL;
n = 1 + ((len - 1) / MEM_BLK_SIZE);
for (i=0; i<n; i++) {
722: 6f 5f subi r22, 0xFF ; 255
724: 7f 4f sbci r23, 0xFF ; 255
726: da 01 movw r26, r20
728: 60 17 cp r22, r16
72a: 71 07 cpc r23, r17
72c: 78 f2 brcs .-98 ; 0x6cc <make_list_msg+0x36>
72e: ba 01 movw r22, r20
730: d0 93 5d 01 sts 0x015D, r29
734: c0 93 5c 01 sts 0x015C, r28
for (p=ph; NULL!=p; p=p->pnext) {
p->len = MEM_BLK_SIZE;
if (NULL == p->pnext) {
p->len = len - (n - 1) * MEM_BLK_SIZE;
738: 81 e0 ldi r24, 0x01 ; 1
73a: 90 e0 ldi r25, 0x00 ; 0
73c: 80 1b sub r24, r16
73e: 91 0b sbc r25, r17
740: 2c e2 ldi r18, 0x2C ; 44
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?