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