📄 httpserv.s
字号:
std y+16,R8
std y+17,R9
.dbline 421
; fprintf_P(stream, tfmt, (uptr_t) tnp, ticks_left, tnp->tn_ticks, (uptr_t) tnp->tn_callback, (uptr_t) tnp->tn_arg);
movw R30,R12
ldd R2,z+14
ldd R3,z+15
std y+13,R3
std y+12,R2
ldd R2,z+12
ldd R3,z+13
std y+11,R3
std y+10,R2
adiw R30,4
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
std y+6,R2
std y+7,R3
std y+8,R4
std y+9,R5
ldd R2,y+14
ldd R3,y+15
ldd R4,y+16
ldd R5,y+17
std y+2,R2
std y+3,R3
std y+4,R4
std y+5,R5
std y+1,R13
std y+0,R12
ldi R18,<L65
ldi R19,>L65
movw R16,R10
xcall _fprintf_P
.dbline 422
; tnp = tnp->tn_next;
movw R30,R12
ldd R12,z+0
ldd R13,z+1
.dbline 423
; }
L70:
.dbline 419
tst R12
breq X17
xjmp L69
X17:
tst R13
breq X18
xjmp L69
X18:
X15:
.dbline 424
; }
L67:
.dbline 426
;
; fputs_P(foot, stream);
movw R18,R10
ldi R16,<L66
ldi R17,>L66
xcall _fputs_P
.dbline 427
; fflush(stream);
movw R16,R10
xcall _fflush
.dbline 429
;
; return 0;
clr R16
clr R17
.dbline -2
L62:
.dbline 0 ; func end
adiw R28,18
xjmp pop_xgsetF03C
.dbsym l ticks_left 14 l
.dbsym r tnp 12 pS[_NUTTIMERINFO]
.dbsym r req 12 pS[_REQUEST]
.dbsym r stream 10 pS[__iobuf]
.dbend
.area lit(rom, con, rel)
L73:
.byte 60,'H,'T,'M,'L,62,60,'H,'E,'A,'D,62,60,'T,'I,'T
.byte 'L,'E,62,'S,'o,'c,'k,'e,'t,'s,60,47,'T,'I,'T,'L
.byte 'E,62,60,47,'H,'E,'A,'D,62,60,'B,'O,'D,'Y,62,60
.byte 'H,49,62,'S,'o,'c,'k,'e,'t,'s,60,47,'H,49,62,13
.byte 10,60,'T,'A,'B,'L,'E,32,'B,'O,'R,'D,'E,'R,62,60
.byte 'T,'R,62,60,'T,'H,62,'H,'a,'n,'d,'l,'e,60,47,'T
.byte 'H,62,60,'T,'H,62,'T,'y,'p,'e,60,47,'T,'H,62,60
.byte 'T,'H,62,'L,'o,'c,'a,'l,60,47,'T,'H,62,60,'T,'H
.byte 62,'R,'e,'m,'o,'t,'e,60,47,'T,'H,62,60,'T,'H,62
.byte 'S,'t,'a,'t,'u,'s,60,47,'T,'H,62,60,47,'T,'R,62
.byte 13,10,0
L74:
.byte 60,'T,'R,62,60,'T,'D,62,37,48,52,'X,60,47,'T,'D
.byte 62,60,'T,'D,62,'T,'C,'P,60,47,'T,'D,62,60,'T,'D
.byte 62,37,'s,58,37,'u,60,47,'T,'D,62,0
L75:
.byte 60,'T,'D,62,37,'s,58,37,'u,60,47,'T,'D,62,60,'T
.byte 'D,62,0
L76:
.byte 60,47,'T,'A,'B,'L,'E,62,60,47,'B,'O,'D,'Y,62,60
.byte 47,'H,'T,'M,'L,62,0
L77:
.byte 'L,'I,'S,'T,'E,'N,0
L78:
.byte 'S,'Y,'N,'S,'E,'N,'T,0
L79:
.byte 'S,'Y,'N,'R,'C,'V,'D,0
L80:
.byte 60,'F,'O,'N,'T,32,'C,'O,'L,'O,'R,61,35,'C,'C,48
.byte 48,48,48,62,'E,'S,'T,'A,'B,'L,60,47,'F,'O,'N,'T
.byte 62,0
L81:
.byte 'F,'I,'N,'W,'A,'I,'T,49,0
L82:
.byte 'F,'I,'N,'W,'A,'I,'T,50,0
L83:
.byte 'C,'L,'O,'S,'E,'W,'A,'I,'T,0
L84:
.byte 'C,'L,'O,'S,'I,'N,'G,0
L85:
.byte 'L,'A,'S,'T,'A,'C,'K,0
L86:
.byte 'T,'I,'M,'E,'W,'A,'I,'T,0
L87:
.byte 'C,'L,'O,'S,'E,'D,0
L88:
.byte 'U,'N,'K,'N,'O,'W,'N,0
.area text(rom, con, rel)
.dbfile C:\ethernut-4.9.7\nutapp_13h\httpd\httpserv.c
.dbfunc s ShowSockets _ShowSockets fI
.dbstruct 0 4 _NBDATA
.dbfield 0 vp pV
.dbfield 2 sz I
.dbend
.dbstruct 0 19 _NETBUF
.dbfield 0 nb_next pS[_NETBUF]
.dbfield 2 nb_flags c
.dbfield 3 nb_dl S[_NBDATA]
.dbfield 7 nb_nw S[_NBDATA]
.dbfield 11 nb_tp S[_NBDATA]
.dbfield 15 nb_ap S[_NBDATA]
.dbend
.dbstruct 0 115 tcp_socket
.dbfield 0 so_next pS[tcp_socket]
.dbfield 2 so_device pV
.dbfield 4 so_devtype c
.dbfield 5 so_devread pfI
.dbfield 7 so_devwrite pfI
.dbfield 9 so_devwrite_P pfI
.dbfield 11 so_devioctl pfI
.dbfield 13 so_devocnt i
.dbfield 15 so_devobuf pc
.dbfield 17 so_devobsz i
.dbfield 19 so_state c
.dbfield 20 so_local_addr l
.dbfield 24 so_local_port i
.dbfield 26 so_remote_addr l
.dbfield 30 so_remote_port i
.dbfield 32 so_tx_flags c
.dbfield 33 so_tx_isn l
.dbfield 37 so_tx_una l
.dbfield 41 so_tx_nxt l
.dbfield 45 so_tx_wl1 l
.dbfield 49 so_tx_wl2 l
.dbfield 53 so_tx_win i
.dbfield 55 so_tx_dup c
.dbfield 56 so_tx_nbq pS[_NETBUF]
.dbfield 58 so_tx_tq pV
.dbfield 60 so_rx_isn l
.dbfield 64 so_rx_nxt l
.dbfield 68 so_rx_win i
.dbfield 70 so_rx_cnt I
.dbfield 72 so_rx_bsz I
.dbfield 74 so_rd_cnt I
.dbfield 76 so_rx_apc C
.dbfield 77 so_rx_buf pS[_NETBUF]
.dbfield 79 so_rx_tq pV
.dbfield 81 so_rx_nbq pS[_NETBUF]
.dbfield 83 so_mss i
.dbfield 85 so_rtt_seq l
.dbfield 89 so_rtto i
.dbfield 91 so_retransmits i
.dbfield 93 so_time_wait i
.dbfield 95 so_retran_time i
.dbfield 97 so_last_error i
.dbfield 99 so_pc_tq pV
.dbfield 101 so_ac_tq pV
.dbfield 103 so_read_to l
.dbfield 107 so_write_to l
.dbfield 111 so_oos_drop l
.dbend
.dbsym s st_unknown L88 A[8:8]kc
.dbsym s st_closed L87 A[7:7]kc
.dbsym s st_timewait L86 A[9:9]kc
.dbsym s st_lastack L85 A[8:8]kc
.dbsym s st_closing L84 A[8:8]kc
.dbsym s st_closewait L83 A[10:10]kc
.dbsym s st_finwait2 L82 A[9:9]kc
.dbsym s st_finwait1 L81 A[9:9]kc
.dbsym s st_estab L80 A[34:34]kc
.dbsym s st_synrcvd L79 A[8:8]kc
.dbsym s st_synsent L78 A[8:8]kc
.dbsym s st_listen L77 A[7:7]kc
.dbsym s foot L76 A[23:23]kc
.dbsym s tfmt2 L75 A[19:19]kc
.dbsym s tfmt1 L74 A[44:44]kc
.dbsym s head L73 A[163:163]kc
; st_P -> R22,R23
; ts -> R20,R21
; req -> R12,R13
; stream -> R10,R11
.even
_ShowSockets:
xcall push_xgsetF0FC
movw R12,R18
movw R10,R16
sbiw R28,6
.dbline -1
.dbline 440
; }
;
; /*
; * CGI Sample: Show list of sockets.
; *
; * This routine must have been registered by NutRegisterCgi() and is
; * automatically called by NutHttpProcessRequest() when the client
; * request the URL 'cgi-bin/sockets.cgi'.
; */
; static int ShowSockets(FILE * stream, REQUEST * req)
; {
.dbline 468
; /* String literals are kept in flash ROM. */
; static prog_char head[] = "<HTML><HEAD><TITLE>Sockets</TITLE></HEAD>"
; "<BODY><H1>Sockets</H1>\r\n"
; "<TABLE BORDER><TR><TH>Handle</TH><TH>Type</TH><TH>Local</TH><TH>Remote</TH><TH>Status</TH></TR>\r\n";
; #if defined(__AVR__)
; static prog_char tfmt1[] = "<TR><TD>%04X</TD><TD>TCP</TD><TD>%s:%u</TD>";
; #else
; static prog_char tfmt1[] = "<TR><TD>%08lX</TD><TD>TCP</TD><TD>%s:%u</TD>";
; #endif
; static prog_char tfmt2[] = "<TD>%s:%u</TD><TD>";
; static prog_char foot[] = "</TABLE></BODY></HTML>";
; static prog_char st_listen[] = "LISTEN";
; static prog_char st_synsent[] = "SYNSENT";
; static prog_char st_synrcvd[] = "SYNRCVD";
; static prog_char st_estab[] = "<FONT COLOR=#CC0000>ESTABL</FONT>";
; static prog_char st_finwait1[] = "FINWAIT1";
; static prog_char st_finwait2[] = "FINWAIT2";
; static prog_char st_closewait[] = "CLOSEWAIT";
; static prog_char st_closing[] = "CLOSING";
; static prog_char st_lastack[] = "LASTACK";
; static prog_char st_timewait[] = "TIMEWAIT";
; static prog_char st_closed[] = "CLOSED";
; static prog_char st_unknown[] = "UNKNOWN";
; prog_char *st_P;
; extern TCPSOCKET *tcpSocketList;
; TCPSOCKET *ts;
;
; NutHttpSendHeaderTop(stream, req, 200, "Ok");
ldi R24,<L22
ldi R25,>L22
std y+3,R25
std y+2,R24
ldi R24,200
ldi R25,0
std y+1,R25
std y+0,R24
movw R18,R12
movw R16,R10
xcall _NutHttpSendHeaderTop
.dbline 469
; NutHttpSendHeaderBottom(stream, req, html_mt, -1);
ldi R24,255
ldi R25,255
ldi R26,255
ldi R27,255
std y+2,R24
std y+3,R25
std y+4,R26
std y+5,R27
lds R2,_html_mt
lds R3,_html_mt+1
std y+1,R3
std y+0,R2
movw R18,R12
movw R16,R10
xcall _NutHttpSendHeaderBottom
.dbline 472
;
; /* Send HTML header. */
; fputs_P(head, stream);
movw R18,R10
ldi R16,<L73
ldi R17,>L73
xcall _fputs_P
.dbline 473
; for (ts = tcpSocketList; ts; ts = ts->so_next) {
lds R20,_tcpSocketList
lds R21,_tcpSocketList+1
xjmp L92
L89:
.dbline 473
.dbline 474
; switch (ts->so_state) {
movw R30,R20
ldd R22,z+19
clr R23
cpi R22,0
cpc R22,R23
brne X31
xjmp L106
X31:
X19:
cpi R22,1
ldi R30,0
cpc R23,R30
breq L96
X20:
cpi R22,2
ldi R30,0
cpc R23,R30
breq L97
X21:
cpi R22,3
ldi R30,0
cpc R23,R30
breq L98
X22:
cpi R22,4
ldi R30,0
cpc R23,R30
breq L99
X23:
cpi R22,5
ldi R30,0
cpc R23,R30
breq L102
X24:
cpi R22,6
ldi R30,0
cpc R23,R30
breq L100
X25:
cpi R22,7
ldi R30,0
cpc R23,R30
breq L103
X26:
cpi R22,8
ldi R30,0
cpc R23,R30
breq L104
X27:
cpi R22,9
ldi R30,0
cpc R23,R30
breq L101
X28:
cpi R22,10
ldi R30,0
cpc R23,R30
breq L105
X29:
xjmp L93
L96:
.dbline 476
; case TCPS_LISTEN:
; st_P = (prog_char *) st_listen;
ldi R22,<L77
ldi R23,>L77
.dbline 477
; break;
xjmp L94
L97:
.dbline 479
; case TCPS_SYN_SENT:
; st_P = (prog_char *) st_synsent;
ldi R22,<L78
ldi R23,>L78
.dbline 480
; break;
xjmp L94
L98:
.dbline 482
; case TCPS_SYN_RECEIVED:
; st_P = (prog_char *) st_synrcvd;
ldi R22,<L79
ldi R23,>L79
.dbline 483
; break;
xjmp L94
L99:
.dbline 485
; case TCPS_ESTABLISHED:
; st_P = (prog_char *) st_estab;
ldi R22,<L80
ldi R23,>L80
.dbline 486
; break;
xjmp L94
L100:
.dbline 488
; case TCPS_FIN_WAIT_1:
; st_P = (prog_char *) st_finwait1;
ldi R22,<L81
ldi R23,>L81
.dbline 489
; break;
xjmp L94
L101:
.dbline 491
; case TCPS_FIN_WAIT_2:
; st_P = (prog_char *) st_finwait2;
ldi R22,<L82
ldi R23,>L82
.dbline 492
; break;
xjmp L94
L102:
.dbline 494
; case TCPS_CLOSE_WAIT:
; st_P = (prog_char *) st_closewait;
ldi R22,<L83
ldi R23,>L83
.dbline 495
; break;
xjmp L94
L103:
.dbline 497
; case TCPS_CLOSING:
; st_P = (prog_char *) st_closing;
ldi R22,<L84
ldi R23,>L84
.dbline 498
; break;
xjmp L94
L104:
.dbline 500
; case TCPS_LAST_ACK:
; st_P = (prog_char *) st_lastack;
ldi R22,<L85
ldi R23,>L85
.dbline 501
; break;
xjmp L94
L105:
.dbline 503
; case TCPS_TIME_WAIT:
; st_P = (prog_char *) st_timewait;
ldi R22,<L86
ldi R23,>L86
.dbline 504
; break;
xjmp L94
L106:
.dbline 506
; case TCPS_CLOSED:
; st_P = (prog_char *) st_closed;
ldi R22,<L87
ldi R23,>L87
.dbline 507
; break;
xjmp L94
L93:
.dbline 509
; default:
; st_P = (prog_char *) st_unknown;
ldi R22,<L88
ldi R23,>L88
.dbline 510
; break;
L94:
.dbline 515
; }
; /*
; * Fixed a bug reported by Zhao Weigang.
; */
; fprintf_P(stream, tfmt1, (uptr_t) ts, inet_ntoa(ts->so_local_addr), ntohs(ts->so_local_port));
movw R30,R20
ldd R16,z+20
ldd R17,z+21
ldd R18,z+22
ldd R19,z+23
xcall _inet_ntoa
movw R30,R20
ldd R4,z+24
ldd R5,z+25
movw R24,R4
andi R24,0
movw R2,R24
mov R2,R3
clr R3
movw R24,R4
andi R25,0
mov R25,R24
clr R24
or R24,R2
or R25,R3
std y+5,R25
std y+4,R24
std y+3,R17
std y+2,R16
std y+1,R21
std y+0,R20
ldi R18,<L74
ldi R19,>L74
movw R16,R10
xcall _fprintf_P
.dbline 516
; fprintf_P(stream, tfmt2, inet_ntoa(ts->so_remote_addr), ntohs(ts->so_remote_port));
movw R30,R20
ldd R16,z+26
ldd R17,z+27
ldd R18,z+28
ldd R19,z+29
xcall _inet_ntoa
movw R12,R16
movw R30,R20
ldd R14,z+30
ldd R15,z+31
movw R24,R14
andi R24,0
movw R2,R24
mov R2,R3
clr R3
movw R24,R14
andi R25,0
mov R25,R24
clr R24
or R24,R2
or R25,R3
std y+3,R25
std y+2,R24
std y+1,R13
std y+0,R12
ldi R18,<L75
ldi R19,>L75
movw R16,R10
xcall _fprintf_P
.dbline 517
; fputs_P(st_P, stream);
movw R18,R10
movw R16,R22
xcall _fputs_P
.dbline 518
; fputs("</TD></TR>\r\n", stream);
movw R18,R10
ldi R16,<L107
ldi R17,>L107
xcall _fputs
.dbline 519
; fflush(stream);
movw R16,R10
xcall _fflush
.dbline 520
; }
L90:
.dbline 473
movw R30,R20
ldd R20,z+0
ldd R21,z+1
L92:
.dbline 473
cpi R20,0
cpc R20,R21
breq X32
xjmp L89
X32:
X30:
.dbline 522
;
; fputs_P(foot, stream);
movw R18,R10
ldi R16,<L76
ldi R17,>L76
xcall _fputs_P
.dbline 523
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -