⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uip_arch.lis

📁 uIP是免费的TCP/IP协议栈,我们将它移植到我们的AVR以太网开发板中
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -