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 + -
显示快捷键?