📄 uip_arch.lis
字号:
00FE 1127 clr R17
0100 102F mov R17,R16
0102 0027 clr R16
0104 0E940000 xcall _htons
0108 A016 cp R10,R16
010A B106 cpc R11,R17
010C 18F4 brsh L38
010E .dbline 88
010E .dbline 89
010E ; ++acc;
010E C501 movw R24,R10
0110 0196 adiw R24,1
0112 5C01 movw R10,R24
0114 .dbline 90
0114 ; }
0114 L38:
0114 .dbline 91
0114 ; }
0114 L36:
0114 .dbline 93
0114 ;
0114 ; return acc;
0114 8501 movw R16,R10
0116 .dbline -2
0116 L29:
0116 0E940000 xcall pop_gset5x
011A .dbline 0 ; func end
011A 0895 ret
011C .dbsym r acc 10 s
011C .dbsym r len 12 s
011C .dbsym r sdata 14 ps
011C .dbend
011C .dbfunc e uip_ipchksum _uip_ipchksum fs
.even
011C _uip_ipchksum::
011C .dbline -1
011C .dbline 98
011C ; }
011C ; /*-----------------------------------------------------------------------------------*/
011C ; u16_t
011C ; uip_ipchksum(void)
011C ; {
011C .dbline 99
011C ; return uip_chksum((u16_t *)&uip_buf[UIP_LLH_LEN], 20);
011C 24E1 ldi R18,20
011E 30E0 ldi R19,0
0120 00E0 ldi R16,<_uip_buf+14
0122 10E0 ldi R17,>_uip_buf+14
0124 BFDF xcall _uip_chksum
0126 .dbline -2
0126 L40:
0126 .dbline 0 ; func end
0126 0895 ret
0128 .dbend
0128 .dbfunc e uip_tcpchksum _uip_tcpchksum fs
0128 ; hsum -> R12,R13
0128 ; sum -> R10,R11
.even
0128 _uip_tcpchksum::
0128 0E940000 xcall push_gset4x
012C .dbline -1
012C .dbline 104
012C ; }
012C ; /*-----------------------------------------------------------------------------------*/
012C ; u16_t
012C ; uip_tcpchksum(void)
012C ; {
012C .dbline 109
012C ; u16_t hsum, sum;
012C ;
012C ;
012C ; /* Compute the checksum of the TCP header. */
012C ; hsum = uip_chksum((u16_t *)&uip_buf[20 + UIP_LLH_LEN], 20);
012C 24E1 ldi R18,20
012E 30E0 ldi R19,0
0130 00E0 ldi R16,<_uip_buf+34
0132 10E0 ldi R17,>_uip_buf+34
0134 B7DF xcall _uip_chksum
0136 6801 movw R12,R16
0138 .dbline 113
0138 ;
0138 ; /* Compute the checksum of the data in the TCP packet and add it to
0138 ; the TCP header checksum. */
0138 ; sum = uip_chksum((u16_t *)uip_appdata,
0138 20901100 lds R2,_uip_buf+14+2+1
013C 30901000 lds R3,_uip_buf+14+2
0140 332D mov R19,R3
0142 222D mov R18,R2
0144 2852 subi R18,40
0146 3040 sbci R19,0
0148 00910000 lds R16,_uip_appdata
014C 10910100 lds R17,_uip_appdata+1
0150 A9DF xcall _uip_chksum
0152 5801 movw R10,R16
0154 .dbline 116
0154 ; (u16_t)(((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - 40)));
0154 ;
0154 ; if((sum += hsum) < hsum) {
0154 1501 movw R2,R10
0156 2C0C add R2,R12
0158 3D1C adc R3,R13
015A 5101 movw R10,R2
015C AC14 cp R10,R12
015E BD04 cpc R11,R13
0160 18F4 brsh L49
0162 .dbline 116
0162 .dbline 117
0162 ; ++sum;
0162 C101 movw R24,R2
0164 0196 adiw R24,1
0166 5C01 movw R10,R24
0168 .dbline 118
0168 ; }
0168 L49:
0168 .dbline 120
0168 ;
0168 ; if((sum += BUF->srcipaddr[0]) < BUF->srcipaddr[0]) {
0168 20901A00 lds R2,_uip_buf+14+12
016C 30901B00 lds R3,_uip_buf+14+12+1
0170 2501 movw R4,R10
0172 420C add R4,R2
0174 531C adc R5,R3
0176 5201 movw R10,R4
0178 A214 cp R10,R2
017A B304 cpc R11,R3
017C 18F4 brsh L51
017E .dbline 120
017E .dbline 121
017E ; ++sum;
017E C201 movw R24,R4
0180 0196 adiw R24,1
0182 5C01 movw R10,R24
0184 .dbline 122
0184 ; }
0184 L51:
0184 .dbline 123
0184 ; if((sum += BUF->srcipaddr[1]) < BUF->srcipaddr[1]) {
0184 20901C00 lds R2,_uip_buf+14+12+2
0188 30901D00 lds R3,_uip_buf+14+12+2+1
018C 2501 movw R4,R10
018E 420C add R4,R2
0190 531C adc R5,R3
0192 5201 movw R10,R4
0194 A214 cp R10,R2
0196 B304 cpc R11,R3
0198 18F4 brsh L57
019A .dbline 123
019A .dbline 124
019A ; ++sum;
019A C201 movw R24,R4
019C 0196 adiw R24,1
019E 5C01 movw R10,R24
01A0 .dbline 125
01A0 ; }
01A0 L57:
01A0 .dbline 126
01A0 ; if((sum += BUF->destipaddr[0]) < BUF->destipaddr[0]) {
01A0 20901E00 lds R2,_uip_buf+14+16
01A4 30901F00 lds R3,_uip_buf+14+16+1
01A8 2501 movw R4,R10
01AA 420C add R4,R2
01AC 531C adc R5,R3
01AE 5201 movw R10,R4
01B0 A214 cp R10,R2
01B2 B304 cpc R11,R3
01B4 18F4 brsh L65
01B6 .dbline 126
01B6 .dbline 127
01B6 ; ++sum;
01B6 C201 movw R24,R4
01B8 0196 adiw R24,1
01BA 5C01 movw R10,R24
01BC .dbline 128
01BC ; }
01BC L65:
01BC .dbline 129
01BC ; if((sum += BUF->destipaddr[1]) < BUF->destipaddr[1]) {
01BC 20902000 lds R2,_uip_buf+14+16+2
01C0 30902100 lds R3,_uip_buf+14+16+2+1
01C4 2501 movw R4,R10
01C6 420C add R4,R2
01C8 531C adc R5,R3
01CA 5201 movw R10,R4
01CC A214 cp R10,R2
01CE B304 cpc R11,R3
01D0 18F4 brsh L71
01D2 .dbline 129
01D2 .dbline 130
01D2 ; ++sum;
01D2 C201 movw R24,R4
01D4 0196 adiw R24,1
01D6 5C01 movw R10,R24
01D8 .dbline 131
01D8 ; }
01D8 L71:
01D8 .dbline 132
01D8 ; if((sum += (u16_t)htons((u16_t)IP_PROTO_TCP)) < (u16_t)htons((u16_t)IP_PROTO_TCP)) {
01D8 06E0 ldi R16,6
01DA 10E0 ldi R17,0
01DC 0E940000 xcall _htons
01E0 1501 movw R2,R10
01E2 200E add R2,R16
01E4 311E adc R3,R17
01E6 5101 movw R10,R2
01E8 06E0 ldi R16,6
01EA 10E0 ldi R17,0
01EC AF92 push R10
01EE BF92 push R11
01F0 0E940000 xcall _htons
01F4 3F90 pop R3
01F6 2F90 pop R2
01F8 2016 cp R2,R16
01FA 3106 cpc R3,R17
01FC 18F4 brsh L79
01FE .dbline 132
01FE .dbline 133
01FE ; ++sum;
01FE C501 movw R24,R10
0200 0196 adiw R24,1
0202 5C01 movw R10,R24
0204 .dbline 134
0204 ; }
0204 L79:
0204 .dbline 136
0204 ;
0204 ; hsum = (u16_t)htons((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - 20);
0204 20901100 lds R2,_uip_buf+14+2+1
0208 30901000 lds R3,_uip_buf+14+2
020C 132D mov R17,R3
020E 022D mov R16,R2
0210 0451 subi R16,20
0212 1040 sbci R17,0
0214 0E940000 xcall _htons
0218 6801 movw R12,R16
021A .dbline 138
021A ;
021A ; if((sum += hsum) < hsum) {
021A 1501 movw R2,R10
021C 200E add R2,R16
021E 311E adc R3,R17
0220 5101 movw R10,R2
0222 AC14 cp R10,R12
0224 BD04 cpc R11,R13
0226 18F4 brsh L86
0228 .dbline 138
0228 .dbline 139
0228 ; ++sum;
0228 C101 movw R24,R2
022A 0196 adiw R24,1
022C 5C01 movw R10,R24
022E .dbline 140
022E ; }
022E L86:
022E .dbline 142
022E ;
022E ; return sum;
022E 8501 movw R16,R10
0230 .dbline -2
0230 L42:
0230 0E940000 xcall pop_gset4x
0234 .dbline 0 ; func end
0234 0895 ret
0236 .dbsym r hsum 12 s
0236 .dbsym r sum 10 s
0236 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -