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

📄 uip.lis

📁 uIP是免费的TCP/IP协议栈,我们将它移植到我们的AVR以太网开发板中
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 007C           ;     uip_udp_conns[c].lport = 0;
 007C           ;   }
 007C           ; #endif /* UIP_UDP */
 007C           ;   
 007C           ; 
 007C           ;   /* IPv4 initialization. */
 007C           ; #if UIP_FIXEDADDR == 0
 007C           ;   uip_hostaddr[0] = uip_hostaddr[1] = 0;
 007C           ; #endif /* UIP_FIXEDADDR */
 007C           ; 
 007C           ; }
 007C           ; /*-----------------------------------------------------------------------------------*/
 007C           ; #if UIP_ACTIVE_OPEN
 007C           ; struct uip_conn *
 007C           ; uip_connect(u16_t *ripaddr, u16_t rport)
 007C           ; {
 007C           L18:
 007C                   .dbline 212
 007C           ;   register struct uip_conn *conn, *cconn;
 007C           ;   
 007C           ;   /* Find an unused local port. */
 007C           ;  again:
 007C           ;   ++lastport;
 007C 80910400          lds R24,_lastport
 0080 90910500          lds R25,_lastport+1
 0084 0196              adiw R24,1
 0086 90930500          sts _lastport+1,R25
 008A 80930400          sts _lastport,R24
 008E                   .dbline 214
 008E           ; 
 008E           ;   if(lastport >= 32000) {
 008E 8030              cpi R24,0
 0090 EDE7              ldi R30,125
 0092 9E07              cpc R25,R30
 0094 30F0              brlo L19
 0096                   .dbline 214
 0096                   .dbline 215
 0096           ;     lastport = 4096;
 0096 80E0              ldi R24,4096
 0098 90E1              ldi R25,16
 009A 90930500          sts _lastport+1,R25
 009E 80930400          sts _lastport,R24
 00A2                   .dbline 216
 00A2           ;   }
 00A2           L19:
 00A2                   .dbline 220
 00A2 2224              clr R2
 00A4 20920300          sts _c,R2
 00A8 1FC0              xjmp L24
 00AA           L21:
 00AA                   .dbline 220
 00AA           ; 
 00AA           ;   /* Check if this port is already in use, and if so try to find
 00AA           ;      another one. */
 00AA           ;   for(c = 0; c < UIP_CONNS; ++c) {
 00AA                   .dbline 221
 00AA           ;     conn = &uip_conns[c];
 00AA 20900300          lds R2,_c
 00AE 83E2              ldi R24,35
 00B0 829D              mul R24,R2
 00B2 5001              movw R10,R0
 00B4 80E0              ldi R24,<_uip_conns
 00B6 90E0              ldi R25,>_uip_conns
 00B8 A80E              add R10,R24
 00BA B91E              adc R11,R25
 00BC                   .dbline 222
 00BC           ;     if(conn->tcpstateflags != CLOSED &&
 00BC F501              movw R30,R10
 00BE 218C              ldd R2,z+25
 00C0 2220              tst R2
 00C2 69F0              breq L25
 00C4 00910400          lds R16,_lastport
 00C8 10910500          lds R17,_lastport+1
 00CC 0E94540B          xcall _htons
 00D0 F501              movw R30,R10
 00D2 2480              ldd R2,z+4
 00D4 3580              ldd R3,z+5
 00D6 2016              cp R2,R16
 00D8 3106              cpc R3,R17
 00DA 09F4              brne L25
 00DC                   .dbline 223
 00DC           ;        conn->lport == htons(lastport)) {
 00DC                   .dbline 224
 00DC           ;       goto again;
 00DC CFCF              xjmp L18
 00DE           L25:
 00DE                   .dbline 226
 00DE           L22:
 00DE                   .dbline 220
 00DE 80910300          lds R24,_c
 00E2 8F5F              subi R24,255    ; addi 1
 00E4 80930300          sts _c,R24
 00E8           L24:
 00E8                   .dbline 220
 00E8 80910300          lds R24,_c
 00EC 8A30              cpi R24,10
 00EE E8F2              brlo L21
 00F0                   .dbline 229
 00F0           ;     }
 00F0           ;   }
 00F0           ; 
 00F0           ; 
 00F0           ;   conn = 0;
 00F0 AA24              clr R10
 00F2 BB24              clr R11
 00F4                   .dbline 230
 00F4 2224              clr R2
 00F6 20920300          sts _c,R2
 00FA 26C0              xjmp L30
 00FC           L27:
 00FC                   .dbline 230
 00FC           ;   for(c = 0; c < UIP_CONNS; ++c) {
 00FC                   .dbline 231
 00FC           ;     cconn = &uip_conns[c]; 
 00FC 20900300          lds R2,_c
 0100 83E2              ldi R24,35
 0102 829D              mul R24,R2
 0104 6001              movw R12,R0
 0106 80E0              ldi R24,<_uip_conns
 0108 90E0              ldi R25,>_uip_conns
 010A C80E              add R12,R24
 010C D91E              adc R13,R25
 010E                   .dbline 232
 010E           ;     if(cconn->tcpstateflags == CLOSED) {
 010E F601              movw R30,R12
 0110 218C              ldd R2,z+25
 0112 2220              tst R2
 0114 11F4              brne L31
 0116                   .dbline 232
 0116                   .dbline 233
 0116           ;       conn = cconn;
 0116 5601              movw R10,R12
 0118                   .dbline 234
 0118           ;       break;
 0118 1CC0              xjmp L29
 011A           L31:
 011A                   .dbline 236
 011A           ;     }
 011A           ;     if(cconn->tcpstateflags == TIME_WAIT) {
 011A F601              movw R30,R12
 011C 818D              ldd R24,z+25
 011E 8730              cpi R24,7
 0120 71F4              brne L33
 0122                   .dbline 236
 0122                   .dbline 237
 0122           ;       if(conn == 0 ||
 0122 AA20              tst R10
 0124 11F4              brne X0
 0126 BB20              tst R11
 0128 49F0              breq L37
 012A           X0:
 012A E091AF01          lds R30,_uip_conn
 012E F091B001          lds R31,_uip_conn+1
 0132 228C              ldd R2,z+26
 0134 F601              movw R30,R12
 0136 328C              ldd R3,z+26
 0138 2314              cp R2,R3
 013A 08F4              brsh L35
 013C           L37:
 013C                   .dbline 238
 013C           ;        cconn->timer > uip_conn->timer) {
 013C                   .dbline 239
 013C           ;       conn = cconn;
 013C 5601              movw R10,R12
 013E                   .dbline 240
 013E           ;       }
 013E           L35:
 013E                   .dbline 241
 013E           ;     }
 013E           L33:
 013E                   .dbline 242
 013E           L28:
 013E                   .dbline 230
 013E 80910300          lds R24,_c
 0142 8F5F              subi R24,255    ; addi 1
 0144 80930300          sts _c,R24
 0148           L30:
 0148                   .dbline 230
 0148 80910300          lds R24,_c
 014C 8A30              cpi R24,10
 014E 08F4              brsh X2
 0150 D5CF              xjmp L27
 0152           X2:
 0152           L29:
 0152                   .dbline 244
 0152           ;   }
 0152           ; 
 0152           ;   if(conn == 0) {
 0152 AA20              tst R10
 0154 29F4              brne L38
 0156 BB20              tst R11
 0158 19F4              brne L38
 015A           X1:
 015A                   .dbline 244
 015A                   .dbline 245
 015A           ;     return 0;
 015A 0027              clr R16
 015C 1127              clr R17
 015E 48C0              xjmp L17
 0160           L38:
 0160                   .dbline 248
 0160           ;   }
 0160           ;   
 0160           ;   conn->tcpstateflags = SYN_SENT;
 0160 82E0              ldi R24,2
 0162 F501              movw R30,R10
 0164 818F              std z+25,R24
 0166                   .dbline 250
 0166           ; 
 0166           ;   conn->snd_nxt[0] = iss[0];
 0166 20900600          lds R2,_iss
 016A F501              movw R30,R10
 016C 2486              std z+12,R2
 016E                   .dbline 251
 016E           ;   conn->snd_nxt[1] = iss[1];
 016E 20900700          lds R2,_iss+1
 0172 F501              movw R30,R10
 0174 2586              std z+13,R2
 0176                   .dbline 252
 0176           ;   conn->snd_nxt[2] = iss[2];
 0176 20900800          lds R2,_iss+2
 017A F501              movw R30,R10
 017C 2686              std z+14,R2
 017E                   .dbline 253
 017E           ;   conn->snd_nxt[3] = iss[3];
 017E 20900900          lds R2,_iss+3
 0182 F501              movw R30,R10
 0184 2786              std z+15,R2
 0186                   .dbline 255
 0186           ; 
 0186           ;   conn->initialmss = conn->mss = UIP_TCP_MSS;
 0186 86EA              ldi R24,1446
 0188 95E0              ldi R25,5
 018A F501              movw R30,R10
 018C 938B              std z+19,R25
 018E 828B              std z+18,R24
 0190 F501              movw R30,R10
 0192 958B              std z+21,R25
 0194 848B              std z+20,R24
 0196                   .dbline 257
 0196           ;   
 0196           ;   conn->len = 1;   /* TCP length of the SYN is one. */
 0196 81E0              ldi R24,1
 0198 90E0              ldi R25,0
 019A F501              movw R30,R10
 019C 918B              std z+17,R25
 019E 808B              std z+16,R24
 01A0                   .dbline 258
 01A0           ;   conn->nrtx = 0;
 01A0 2224              clr R2
 01A2 F501              movw R30,R10
 01A4 238E              std z+27,R2
 01A6                   .dbline 259
 01A6           ;   conn->timer = 1; /* Send the SYN next time around. */
 01A6 F501              movw R30,R10
 01A8 828F              std z+26,R24
 01AA                   .dbline 260
 01AA           ;   conn->rto = UIP_RTO;
 01AA 83E0              ldi R24,3
 01AC F501              movw R30,R10
 01AE 808F              std z+24,R24
 01B0                   .dbline 261
 01B0           ;   conn->sa = 0;
 01B0 F501              movw R30,R10
 01B2 268A              std z+22,R2
 01B4                   .dbline 262
 01B4           ;   conn->sv = 16;
 01B4 80E1              ldi R24,16
 01B6 F501              movw R30,R10
 01B8 878B              std z+23,R24
 01BA                   .dbline 263
 01BA           ;   conn->lport = htons(lastport);
 01BA 00910400          lds R16,_lastport
 01BE 10910500          lds R17,_lastport+1
 01C2 0E94540B          xcall _htons
 01C6 F501              movw R30,R10
 01C8 1583              std z+5,R17
 01CA 0483              std z+4,R16
 01CC                   .dbline 264
 01CC           ;   conn->rport = rport;
 01CC F501              movw R30,R10
 01CE F782              std z+7,R15
 01D0 E682              std z+6,R14
 01D2                   .dbline 265
 01D2           ;   conn->ripaddr[0] = ripaddr[0];
 01D2 EE81              ldd R30,y+6
 01D4 FF81              ldd R31,y+7
 01D6 2080              ldd R2,z+0
 01D8 3180              ldd R3,z+1
 01DA F501              movw R30,R10
 01DC 3182              std z+1,R3
 01DE 2082              std z+0,R2
 01E0                   .dbline 266
 01E0           ;   conn->ripaddr[1] = ripaddr[1];
 01E0 EE81              ldd R30,y+6
 01E2 FF81              ldd R31,y+7
 01E4 2280              ldd R2,z+2
 01E6 3380              ldd R3,z+3
 01E8 F501              movw R30,R10
 01EA 3382              std z+3,R3
 01EC 2282              std z+2,R2
 01EE                   .dbline 268
 01EE           ;   
 01EE           ;   return conn;
 01EE 8501              movw R16,R10
 01F0                   .dbline -2
 01F0           L17:
 01F0 0E940000          xcall pop_gset5x
 01F4 2496              adiw R28,4
 01F6                   .dbline 0 ; func end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -