cgi.lis

来自「uIP是免费的TCP/IP协议栈,我们将它移植到我们的AVR以太网开发板中」· LIS 代码 · 共 899 行 · 第 1/3 页

LIS
899
字号
 0036                   .dbline 133
 0036           ;       /* We have printed out all statistics, so we return 1 to
 0036           ;        indicate that we are done. */
 0036           ;       return 1;
 0036 01E0              ldi R16,1
 0038 51C0              xjmp L7
 003A           L10:
 003A                   .dbline 135
 003A           ;     }
 003A           ;   }
 003A           L8:
 003A                   .dbline 138
 003A           ; 
 003A           ;   /* Write part of the statistics into the uip_appdata buffer. */
 003A           ;   databytes = (u16_t *)&uip_stat + hs->count;
 003A E0910000          lds R30,_hs
 003E F0910100          lds R31,_hs+1
 0042 2181              ldd R18,z+1
 0044 3281              ldd R19,z+2
 0046 02E0              ldi R16,2
 0048 10E0              ldi R17,0
 004A 0E940000          xcall empy16s
 004E 80E0              ldi R24,<_uip_stat
 0050 90E0              ldi R25,>_uip_stat
 0052 1801              movw R2,R16
 0054 280E              add R2,R24
 0056 391E              adc R3,R25
 0058 3B82              std y+3,R3
 005A 2A82              std y+2,R2
 005C                   .dbline 139
 005C           ;   buf       = (u8_t *)uip_appdata;
 005C A0900000          lds R10,_uip_appdata
 0060 B0900100          lds R11,_uip_appdata+1
 0064                   .dbline 141
 0064           ; 
 0064           ;   j = 4 + 1;
 0064 85E0              ldi R24,5
 0066 90E0              ldi R25,0
 0068 6C01              movw R12,R24
 006A                   .dbline 142
 006A           ;   i = hs->count;
 006A E0910000          lds R30,_hs
 006E F0910100          lds R31,_hs+1
 0072 E180              ldd R14,z+1
 0074 F280              ldd R15,z+2
 0076 16C0              xjmp L13
 0078           L12:
 0078                   .dbline 143
 0078                   .dbline 144
 0078 EA81              ldd R30,y+2
 007A FB81              ldd R31,y+3
 007C 2080              ldd R2,z+0
 007E 3180              ldd R3,z+1
 0080 3982              std y+1,R3
 0082 2882              std y+0,R2
 0084 20E0              ldi R18,<L15
 0086 30E0              ldi R19,>L15
 0088 8501              movw R16,R10
 008A 0E940000          xcall _sprintf
 008E                   .dbline 145
 008E 8A81              ldd R24,y+2
 0090 9B81              ldd R25,y+3
 0092 0296              adiw R24,2
 0094 9B83              std y+3,R25
 0096 8A83              std y+2,R24
 0098                   .dbline 146
 0098 C501              movw R24,R10
 009A 0696              adiw R24,6
 009C 5C01              movw R10,R24
 009E                   .dbline 147
 009E C701              movw R24,R14
 00A0 0196              adiw R24,1
 00A2 7C01              movw R14,R24
 00A4                   .dbline 148
 00A4           L13:
 00A4                   .dbline 143
 00A4           ;   while (i < sizeof(struct uip_stats)/sizeof(u16_t) && --j > 0) {
 00A4 C701              movw R24,R14
 00A6 8631              cpi R24,22
 00A8 E0E0              ldi R30,0
 00AA 9E07              cpc R25,R30
 00AC 38F4              brsh L16
 00AE C601              movw R24,R12
 00B0 0197              sbiw R24,1
 00B2 6C01              movw R12,R24
 00B4 CC20              tst R12
 00B6 01F7              brne L12
 00B8 DD20              tst R13
 00BA F1F6              brne L12
 00BC           X0:
 00BC           L16:
 00BC           L17:
 00BC                   .dbline 151
 00BC                   .dbline 151
 00BC 20900000          lds R2,_uip_appdata
 00C0 30900100          lds R3,_uip_appdata+1
 00C4 30920100          sts _uip_sappdata+1,R3
 00C8 20920000          sts _uip_sappdata,R2
 00CC                   .dbline 151
 00CC 2501              movw R4,R10
 00CE 4218              sub R4,R2
 00D0 5308              sbc R5,R3
 00D2 50920100          sts _uip_slen+1,R5
 00D6 40920000          sts _uip_slen,R4
 00DA                   .dbline 151
 00DA           L18:
 00DA                   .dbline 151
 00DA           ;     sprintf((char *)buf, "%5u\r\n", *databytes);
 00DA           ;     ++databytes;
 00DA           ;     buf += 6;
 00DA           ;     ++i;
 00DA           ;   }
 00DA           ; 
 00DA           ;   /* Send the data. */
 00DA           ;   uip_send(uip_appdata, buf - uip_appdata);
 00DA                   .dbline 153
 00DA           ;   
 00DA           ;   return 0;
 00DA 0027              clr R16
 00DC                   .dbline -2
 00DC           L7:
 00DC 2496              adiw R28,4
 00DE 0E940000          xcall pop_gset5x
 00E2                   .dbline 0 ; func end
 00E2 0895              ret
 00E4                   .dbsym r j 12 s
 00E4                   .dbsym l databytes 2 ps
 00E4                   .dbsym r i 14 s
 00E4                   .dbsym r buf 10 pc
 00E4                   .dbsym r next 10 c
 00E4                   .dbend
 00E4                   .dbfunc s file_stats _file_stats fc
 00E4           ;           next -> R10
                        .even
 00E4           _file_stats:
 00E4 0E940000          xcall push_gset3x
 00E8 A02E              mov R10,R16
 00EA 2297              sbiw R28,2
 00EC                   .dbline -1
 00EC                   .dbline 161
 00EC           ; #else
 00EC           ;   return 1;
 00EC           ; #endif /* UIP_STATISTICS */
 00EC           ; }
 00EC           ; /*-----------------------------------------------------------------------------------*/
 00EC           ; static u8_t
 00EC           ; file_stats(u8_t next)
 00EC           ; {
 00EC                   .dbline 165
 00EC           ;   /* We use sprintf() to print the number of file accesses to a
 00EC           ;      particular file (given as an argument to the function in the
 00EC           ;      script). We then use uip_send() to actually send the data. */
 00EC           ;   if(next) {
 00EC AA20              tst R10
 00EE 11F0              breq L21
 00F0                   .dbline 165
 00F0                   .dbline 166
 00F0           ;     return 1;
 00F0 01E0              ldi R16,1
 00F2 21C0              xjmp L20
 00F4           L21:
 00F4           L23:
 00F4                   .dbline 168
 00F4                   .dbline 168
 00F4 20900000          lds R2,_uip_appdata
 00F8 30900100          lds R3,_uip_appdata+1
 00FC 30920100          sts _uip_sappdata+1,R3
 0100 20920000          sts _uip_sappdata,R2
 0104                   .dbline 168
 0104 E0910000          lds R30,_hs
 0108 F0910100          lds R31,_hs+1
 010C 0581              ldd R16,z+5
 010E 1681              ldd R17,z+6
 0110 0C5F              subi R16,252  ; offset = 4
 0112 1F4F              sbci R17,255
 0114 0E940000          xcall _fs_count
 0118 1983              std y+1,R17
 011A 0883              std y+0,R16
 011C 20E0              ldi R18,<L26
 011E 30E0              ldi R19,>L26
 0120 00910000          lds R16,_uip_appdata
 0124 10910100          lds R17,_uip_appdata+1
 0128 0E940000          xcall _sprintf
 012C 10930100          sts _uip_slen+1,R17
 0130 00930000          sts _uip_slen,R16
 0134                   .dbline 168
 0134           L24:
 0134                   .dbline 168
 0134           ;   }
 0134           ;   uip_send(uip_appdata, sprintf((char *)uip_appdata, "%5u", fs_count(&hs->script[4])));  
 0134                   .dbline 169
 0134           ;   return 0;
 0134 0027              clr R16
 0136                   .dbline -2
 0136           L20:
 0136 2296              adiw R28,2
 0138 0E940000          xcall pop_gset3x
 013C                   .dbline 0 ; func end
 013C 0895              ret
 013E                   .dbsym r next 10 c
 013E                   .dbend
 013E                   .dbfunc s tcp_stats _tcp_stats fc
 013E                   .dbstruct 0 35 uip_conn
 013E                   .dbfield 0 ripaddr A[4:2]s
 013E                   .dbfield 4 lport s
 013E                   .dbfield 6 rport s
 013E                   .dbfield 8 rcv_nxt A[4:4]c
 013E                   .dbfield 12 snd_nxt A[4:4]c
 013E                   .dbfield 16 len s
 013E                   .dbfield 18 mss s
 013E                   .dbfield 20 initialmss s
 013E                   .dbfield 22 sa c
 013E                   .dbfield 23 sv c
 013E                   .dbfield 24 rto c
 013E                   .dbfield 25 tcpstateflags c
 013E                   .dbfield 26 timer c
 013E                   .dbfield 27 nrtx c
 013E                   .dbfield 28 appstate A[7:7]c
 013E                   .dbend
 013E           ;           conn -> R10,R11
 013E           ;           next -> R10
                        .even
 013E           _tcp_stats:
 013E 0E940000          xcall push_gset4x
 0142 A02E              mov R10,R16
 0144 6497              sbiw R28,20
 0146                   .dbline -1
 0146                   .dbline 174
 0146           ; }
 0146           ; /*-----------------------------------------------------------------------------------*/
 0146           ; static u8_t
 0146           ; tcp_stats(u8_t next)
 0146           ; {
 0146                   .dbline 177
 0146           ;   struct uip_conn *conn;  
 0146           ; 
 0146           ;   if(next) {
 0146 AA20              tst R10
 0148 91F0              breq L28
 014A                   .dbline 177
 014A                   .dbline 180
 014A           ;     /* If the previously sent data has been acknowledged, we move
 014A           ;        forward one connection. */
 014A           ;     if(++hs->count == UIP_CONNS) {
 014A 80910000          lds R24,_hs
 014E 90910100          lds R25,_hs+1
 0152 0196              adiw R24,1
 0154 FC01              movw R30,R24
 0156 8081              ldd R24,z+0
 0158 9181              ldd R25,z+1
 015A 0196              adiw R24,1
 015C 2C01              movw R4,R24
 015E 5182              std z+1,R5
 0160 4082              std z+0,R4
 0162 8A30              cpi R24,10
 0164 E0E0              ldi R30,0
 0166 9E07              cpc R25,R30
 0168 11F4              brne L30
 016A                   .dbline 180
 016A                   .dbline 183
 016A           ;       /* If all connections has been printed out, we are done and
 016A           ;        return 1. */
 016A           ;       return 1;
 016A 01E0              ldi R16,1
 016C F7C0              xjmp L27
 016E           L30:
 016E                   .dbline 185
 016E           ;     }
 016E           ;   }
 016E           L28:
 016E                   .dbline 187
 016E           ;   
 016E           ;   conn = &uip_conns[hs->count];
 016E E0910000          lds R30,_hs
 0172 F0910100          lds R31,_hs+1
 0176 2181              ldd R18,z+1
 0178 3281              ldd R19,z+2
 017A 03E2              ldi R16,35
 017C 10E0              ldi R17,0
 017E 0E940000          xcall empy16s
 0182 5801              movw R10,R16
 0184 80E0              ldi R24,<_uip_conns
 0186 90E0              ldi R25,>_uip_conns
 0188 A80E              add R10,R24
 018A B91E              adc R11,R25
 018C                   .dbline 188
 018C           ;   if((conn->tcpstateflags & TS_MASK) == CLOSED) {
 018C F501              movw R30,R10
 018E 818D              ldd R24,z+25
 0190 8F70              andi R24,15
 0192 09F0              breq X3
 0194 3CC0              xjmp L32
 0196           X3:
 0196                   .dbline 188
 0196           L34:
 0196                   .dbline 189
 0196           ;     uip_send(uip_appdata, sprintf((char *)uip_appdata,
 0196                   .dbline 189
 0196 20900000          lds R2,_uip_appdata
 019A 30900100          lds R3,_uip_appdata+1

⌨️ 快捷键说明

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