📄 httpd.lis
字号:
0514 30920100 sts _uip_slen+1,R3
0518 20920000 sts _uip_slen,R2
051C .dbline 387
051C .dbline 387
051C .dbline 388
051C ; }
051C .dbline 393
051C ;
051C ;
051C ; /* Finally, return to uIP. Our outgoing packet will soon be on its
051C ; way... */
051C ; return;
051C 03C0 xjmp L8
051E L9:
051E .dbline 397
051E 80E2 ldi R24,32
0520 80930000 sts _uip_flags,R24
0524 .dbline 398
0524 L10:
0524 .dbline -2
0524 L8:
0524 2C96 adiw R28,12
0526 0E940000 xcall pop_gset4x
052A .dbline 0 ; func end
052A 0895 ret
052C .dbsym l fsfile 8 S[fs_file]
052C .dbsym l opfn 0 A[8:8]c
052C .dbsym r i 10 s
052C .dbsym r j 10 I
052C .dbsym r post_data 12 c
052C .dbend
052C .dbfunc s next_scriptline _next_scriptline fV
.even
052C _next_scriptline:
052C .dbline -1
052C .dbline 407
052C ;
052C ; default:
052C ; /* Should never happen. */
052C ; uip_abort();
052C ; break;
052C ; }
052C ; }
052C ; /*-----------------------------------------------------------------------------------*/
052C ; /* next_scriptline():
052C ; *
052C ; * Reads the script until it finds a newline. */
052C ; static void
052C ; next_scriptline(void)
052C ; {
052C L83:
052C .dbline 409
052C ; /* Loop until we find a newline character. */
052C ; do {
052C .dbline 410
052C ; ++(hs->script);
052C 80910000 lds R24,_hs
0530 90910100 lds R25,_hs+1
0534 0596 adiw R24,5
0536 FC01 movw R30,R24
0538 8081 ldd R24,z+0
053A 9181 ldd R25,z+1
053C 0196 adiw R24,1
053E 9183 std z+1,R25
0540 8083 std z+0,R24
0542 .dbline 411
0542 L84:
0542 .dbline 411
0542 ; } while(hs->script[0] != ISO_nl);
0542 E0910000 lds R30,_hs
0546 F0910100 lds R31,_hs+1
054A A581 ldd R26,z+5
054C B681 ldd R27,z+6
054E 8C91 ld R24,x
0550 8A30 cpi R24,10
0552 61F7 brne L83
0554 .dbline 414
0554 ;
0554 ; /* Eat up the newline as well. */
0554 ; ++(hs->script);
0554 3596 adiw R30,5
0556 8081 ldd R24,z+0
0558 9181 ldd R25,z+1
055A 0196 adiw R24,1
055C 9183 std z+1,R25
055E 8083 std z+0,R24
0560 .dbline -2
0560 L82:
0560 .dbline 0 ; func end
0560 0895 ret
0562 .dbend
0562 .dbfunc s next_scriptstate _next_scriptstate fV
0562 ; fsfile -> y+0
0562 ; i -> R12
.even
0562 _next_scriptstate:
0562 0E940000 xcall push_gset4x
0566 2497 sbiw R28,4
0568 .dbline -1
0568 .dbline 423
0568 ; }
0568 ; /*-----------------------------------------------------------------------------------*/
0568 ; /* next_sciptstate:
0568 ; *
0568 ; * Reads one line of script and decides what to do next.
0568 ; */
0568 ; static void
0568 ; next_scriptstate(void)
0568 ; {
0568 L87:
0568 .dbline 428
0568 ; struct fs_file fsfile;
0568 ; u8_t i;
0568 ;
0568 ; again:
0568 ; switch(hs->script[0]) {
0568 E0910000 lds R30,_hs
056C F0910100 lds R31,_hs+1
0570 A581 ldd R26,z+5
0572 B681 ldd R27,z+6
0574 AC90 ld R10,x
0576 BB24 clr R11
0578 C501 movw R24,R10
057A 8336 cpi R24,99
057C E0E0 ldi R30,0
057E 9E07 cpc R25,R30
0580 09F4 brne X22
0582 4FC0 xjmp L96
0584 X22:
0584 83E6 ldi R24,99
0586 8A15 cp R24,R10
0588 9B05 cpc R25,R11
058A 94F0 brlt L105
058C L104:
058C C501 movw R24,R10
058E 8332 cpi R24,35
0590 E0E0 ldi R30,0
0592 9E07 cpc R25,R30
0594 09F4 brne X23
0596 8FC0 xjmp L102
0598 X23:
0598 8332 cpi R24,35
059A E0E0 ldi R30,0
059C 9E07 cpc R25,R30
059E 0CF4 brge X24
05A0 96C0 xjmp L88
05A2 X24:
05A2 L106:
05A2 C501 movw R24,R10
05A4 8E32 cpi R24,46
05A6 E0E0 ldi R30,0
05A8 9E07 cpc R25,R30
05AA 09F4 brne X25
05AC 86C0 xjmp L103
05AE X25:
05AE 8FC0 xjmp L88
05B0 L105:
05B0 C501 movw R24,R10
05B2 8936 cpi R24,105
05B4 E0E0 ldi R30,0
05B6 9E07 cpc R25,R30
05B8 09F4 brne X26
05BA 59C0 xjmp L98
05BC X26:
05BC 8936 cpi R24,105
05BE E0E0 ldi R30,0
05C0 9E07 cpc R25,R30
05C2 0CF4 brge X27
05C4 84C0 xjmp L88
05C6 X27:
05C6 L107:
05C6 C501 movw R24,R10
05C8 8437 cpi R24,116
05CA E0E0 ldi R30,0
05CC 9E07 cpc R25,R30
05CE 09F0 breq L91
05D0 7EC0 xjmp L88
05D2 X19:
05D2 .dbline 428
05D2 L91:
05D2 .dbline 431
05D2 ; case ISO_t:
05D2 ; /* Send a text string. */
05D2 ; hs->state = HTTP_TEXT;
05D2 82E0 ldi R24,2
05D4 E0910000 lds R30,_hs
05D8 F0910100 lds R31,_hs+1
05DC 8083 std z+0,R24
05DE .dbline 432
05DE ; hs->dataptr = &hs->script[2];
05DE E0910000 lds R30,_hs
05E2 F0910100 lds R31,_hs+1
05E6 8581 ldd R24,z+5
05E8 9681 ldd R25,z+6
05EA 0296 adiw R24,2
05EC 9483 std z+4,R25
05EE 8383 std z+3,R24
05F0 .dbline 435
05F0 CC24 clr R12
05F2 01C0 xjmp L95
05F4 L92:
05F4 .dbline 435
05F4 L93:
05F4 .dbline 435
05F4 C394 inc R12
05F6 L95:
05F6 .dbline 435
05F6 ;
05F6 ; /* Calculate length of string. */
05F6 ; for(i = 0; hs->dataptr[i] != ISO_nl; ++i);
05F6 E0910000 lds R30,_hs
05FA F0910100 lds R31,_hs+1
05FE 2380 ldd R2,z+3
0600 3480 ldd R3,z+4
0602 EC2D mov R30,R12
0604 FF27 clr R31
0606 E20D add R30,R2
0608 F31D adc R31,R3
060A 8081 ldd R24,z+0
060C 8A30 cpi R24,10
060E 91F7 brne L92
0610 .dbline 436
0610 ; hs->count = i;
0610 2C2C mov R2,R12
0612 3324 clr R3
0614 E0910000 lds R30,_hs
0618 F0910100 lds R31,_hs+1
061C 3282 std z+2,R3
061E 2182 std z+1,R2
0620 .dbline 437
0620 ; break;
0620 59C0 xjmp L89
0622 L96:
0622 .dbline 440
0622 ; case ISO_c:
0622 ; /* Call a function. */
0622 ; hs->state = HTTP_FUNC;
0622 83E0 ldi R24,3
0624 E0910000 lds R30,_hs
0628 F0910100 lds R31,_hs+1
062C 8083 std z+0,R24
062E .dbline 441
062E ; hs->dataptr = NULL;
062E 2224 clr R2
0630 3324 clr R3
0632 E0910000 lds R30,_hs
0636 F0910100 lds R31,_hs+1
063A 3482 std z+4,R3
063C 2382 std z+3,R2
063E .dbline 442
063E ; hs->count = 0;
063E 3282 std z+2,R3
0640 2182 std z+1,R2
0642 .dbline 443
0642 ; cgitab[hs->script[2] - ISO_a](0);
0642 0027 clr R16
0644 AF93 push R26
0646 BF93 push R27
0648 A581 ldd R26,z+5
064A B681 ldd R27,z+6
064C FD01 movw R30,R26
064E BF91 pop R27
0650 AF91 pop R26
0652 2280 ldd R2,z+2
0654 82E0 ldi R24,2
0656 829D mul R24,R2
0658 F001 movw R30,R0
065A 80E0 ldi R24,<_cgitab-194
065C 90E0 ldi R25,>_cgitab-194
065E E80F add R30,R24
0660 F91F adc R31,R25
0662 A081 ldd R26,z+0
0664 B181 ldd R27,z+1
0666 FD01 movw R30,R26
0668 0E940000 xcall xicall
066C .dbline 444
066C ; break;
066C 33C0 xjmp L89
066E L98:
066E .dbline 447
066E ; case ISO_i:
066E ; /* Include a file. */
066E ; hs->state = HTTP_FILE;
066E 81E0 ldi R24,1
0670 E0910000 lds R30,_hs
0674 F0910100 lds R31,_hs+1
0678 8083 std z+0,R24
067A .dbline 448
067A ; if(!fs_open(&hs->script[2], &fsfile)) {
067A 9E01 movw R18,R28
067C E0910000 lds R30,_hs
0680 F0910100 lds R31,_hs+1
0684 0581 ldd R16,z+5
0686 1681 ldd R17,z+6
0688 0E5F subi R16,254 ; offset = 2
068A 1F4F sbci R17,255
068C 0E940000 xcall _fs_open
0690 0030 cpi R16,0
0692 0107 cpc R16,R17
0694 19F4 brne L99
0696 X20:
0696 .dbline 448
0696 .dbline 449
0696 ; uip_abort();
0696 80E2 ldi R24,32
0698 80930000 sts _uip_flags,R24
069C .dbline 450
069C ; }
069C L99:
069C .dbline 451
069C ; hs->dataptr = fsfile.data;
069C 2880 ldd R2,y+0
069E 3980 ldd R3,y+1
06A0 E0910000 lds R30,_hs
06A4 F0910100 lds R31,_hs+1
06A8 3482 std z+4,R3
06AA 2382 std z+3,R2
06AC .dbline 452
06AC ; hs->count = fsfile.len;
06AC 2A80 ldd R2,y+2
06AE 3B80 ldd R3,y+3
06B0 3282 std z+2,R3
06B2 2182 std z+1,R2
06B4 .dbline 453
06B4 ; break;
06B4 0FC0 xjmp L89
06B6 L102:
06B6 .dbline 456
06B6 ; case ISO_hash:
06B6 ; /* Comment line. */
06B6 ; next_scriptline();
06B6 3ADF xcall _next_scriptline
06B8 .dbline 457
06B8 ; goto again;
06B8 57CF xjmp L87
06BA X21:
06BA .dbline 458
06BA ; break;
06BA L103:
06BA .dbline 461
06BA ; case ISO_period:
06BA ; /* End of script. */
06BA ; hs->state = HTTP_END;
06BA 84E0 ldi R24,4
06BC E0910000 lds R30,_hs
06C0 F0910100 lds R31,_hs+1
06C4 8083 std z+0,R24
06C6 .dbline 462
06C6 ; uip_close();
06C6 80E1 ldi R24,16
06C8 80930000 sts _uip_flags,R24
06CC .dbline 463
06CC ; break;
06CC 03C0 xjmp L89
06CE L88:
06CE .dbline 465
06CE 80E2 ldi R24,32
06D0 80930000 sts _uip_flags,R24
06D4 .dbline 466
06D4 L89:
06D4 .dbline -2
06D4 L86:
06D4 2496 adiw R28,4
06D6 0E940000 xcall pop_gset4x
06DA .dbline 0 ; func end
06DA 0895 ret
06DC .dbsym l fsfile 0 S[fs_file]
06DC .dbsym r i 12 c
06DC .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\AVRuIP\httpd.c
0000 _hs::
0000 .blkb 2
0002 .dbstruct 0 7 httpd_state
0002 .dbfield 0 state c
0002 .dbfield 1 count s
0002 .dbfield 3 dataptr pc
0002 .dbfield 5 script pc
0002 .dbend
0002 .dbsym e hs _hs pS[httpd_state]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -