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

📄 string.lst

📁 ENC28J60 System HTTP
💻 LST
📖 第 1 页 / 共 3 页
字号:
   1               		.file	"string.c"
   2               	__SREG__ = 0x3f
   3               	__SP_H__ = 0x3e
   4               	__SP_L__ = 0x3d
   5               	__CCP__  = 0x34
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  96               	.global	string_compare_progmem2
  98               	string_compare_progmem2:
   1:util/string.c **** /*
   2:util/string.c **** ,-----------------------------------------------------------------------------------------.
   3:util/string.c **** | util/string
   4:util/string.c **** |-----------------------------------------------------------------------------------------
   5:util/string.c **** | this file implements some string routines
   6:util/string.c **** | - replacing the huge printf/scanf routines
   7:util/string.c **** |
   8:util/string.c **** | Author   : Simon Schulz / avr{AT}auctionant.de
   9:util/string.c **** |
  10:util/string.c **** | 
  11:util/string.c **** |
  12:util/string.c **** |-----------------------------------------------------------------------------------------
  13:util/string.c **** | License:
  14:util/string.c **** | This program is free software; you can redistribute it and/or modify it under
  15:util/string.c **** | the terms of the GNU General Public License as published by the Free Software
  16:util/string.c **** | Foundation; either version 2 of the License, or (at your option) any later
  17:util/string.c **** | version.
  18:util/string.c **** | This program is distributed in the hope that it will be useful, but
  19:util/string.c **** |
  20:util/string.c **** | WITHOUT ANY WARRANTY;
  21:util/string.c **** |
  22:util/string.c **** | without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  23:util/string.c **** | PURPOSE. See the GNU General Public License for more details.
  24:util/string.c **** |
  25:util/string.c **** | You should have received a copy of the GNU General Public License along with
  26:util/string.c **** | this program; if not, write to the Free Software Foundation, Inc., 51
  27:util/string.c **** | Franklin St, Fifth Floor, Boston, MA 02110, USA
  28:util/string.c **** |
  29:util/string.c **** | http://www.gnu.de/gpl-ger.html
  30:util/string.c **** `-----------------------------------------------------------------------------------------*/
  31:util/string.c **** 
  32:util/string.c **** 
  33:util/string.c **** #include "string.h"
  34:util/string.c **** 
  35:util/string.c **** //find progmemstring in buffer (null-terminated!)
  36:util/string.c **** //return:
  37:util/string.c **** //  -1    -> not found
  38:util/string.c **** // <pos>  -> position of progmemstring in buffer
  39:util/string.c **** int string_search_progmem(PGM_P pointer, unsigned char *buffer){
  40:util/string.c **** 	//use strcmp_P(txt, PSTR("aAuthorization: Basic ")))
  41:util/string.c **** 	unsigned char c;	
  42:util/string.c **** 	int found;
  43:util/string.c **** 	int pos=0;
  44:util/string.c **** 	PGM_P pointer2;
  45:util/string.c **** 	
  46:util/string.c **** 	while(buffer[pos] != 0){
  47:util/string.c **** 		c = pgm_read_byte(pointer);
  48:util/string.c **** 		pointer2 = pointer;
  49:util/string.c **** 		found = pos;
  50:util/string.c **** 		//match of first char
  51:util/string.c **** 		if (buffer[pos] == c){
  52:util/string.c **** 			//continue:
  53:util/string.c **** 			pointer2++;
  54:util/string.c **** 			pos++;
  55:util/string.c **** 			c = pgm_read_byte(pointer2);
  56:util/string.c **** 			while((c != 0) && (buffer[pos] == c)){
  57:util/string.c **** 				softuart_putc(c); softuart_putc('=');softuart_putc(buffer[pos]); softuart_putnewline();
  58:util/string.c **** 				pointer2++;
  59:util/string.c **** 				pos++;
  60:util/string.c **** 				c = pgm_read_byte(pointer);
  61:util/string.c **** 			}
  62:util/string.c **** 
  63:util/string.c **** 			//if c == 0 -> we have a match
  64:util/string.c **** 			if (c==0){
  65:util/string.c **** 				//match !
  66:util/string.c **** 				return found;
  67:util/string.c **** 			}
  68:util/string.c **** 			pos=found;
  69:util/string.c **** 		}
  70:util/string.c **** 		pos++;
  71:util/string.c **** 		pointer++;
  72:util/string.c **** 	}
  73:util/string.c **** 	return -1;
  74:util/string.c **** }
  75:util/string.c **** 
  76:util/string.c **** ///WARNING: not tested!
  77:util/string.c **** //return 1 if both strings match
  78:util/string.c **** //return 0 otherwise
  79:util/string.c **** //string_compare_progmem is defined in string.h !
  80:util/string.c **** char string_compare_progmem2(PGM_P pointer, unsigned char *string, unsigned char check_eof){
  99               	8,0,80,.LM0-.LFBB1
 100               	.LM0:
 101               	.LFBB1:
 102               	/* prologue: function */
 103               	/* frame size = 0 */
 104 0000 582F      		mov r21,r24
 105 0002 DB01      		movw r26,r22
 107               	.LM1:
 108 0004 E82F      		mov r30,r24
 109 0006 F92F      		mov r31,r25
 110 0008 9F01      		movw r18,r30
 111 000a 00C0      		rjmp .L2
 112               	.L5:
  81:util/string.c **** ;
  82:util/string.c **** 		//softuart_putc('=');
  83:util/string.c **** 		//softuart_putc(pgm_read_byte(pointer));
  84:util/string.c **** 		//softuart_putnewline();
  85:util/string.c **** 		if (string[i] != pgm_read_byte(pointer))
  86:util/string.c **** 			return 0;
  87:util/string.c **** 		pointer++;
 113               	7,.LM2-.LFBB1
 114               	.LM2:
 115 000c FD01      		movw r30,r26
 116 000e E80F      		add r30,r24
 117 0010 F11D      		adc r31,__zero_reg__
 118 0012 8081      		ld r24,Z
 119 0014 8917      		cp r24,r25
 120 0016 01F0      		breq .L3
 121 0018 90E0      		ldi r25,lo8(0)
 122 001a 00C0      		rjmp .L4
 123               	.L3:
  88:util/string.c **** e(pointer));
  89:util/string.c **** 		//softuart_putnewline();
 124               	0,89,.LM3-.LFBB1
 125               	.LM3:
 126 001c 2F5F      		subi r18,lo8(-(1))
 127 001e 3F4F      		sbci r19,hi8(-(1))
 128               	.L2:
 129 0020 822F      		mov r24,r18
 130 0022 851B      		sub r24,r21
 131               	.LBB2:
 133               	.LM4:
 134 0024 F901      		movw r30,r18
 135               	/* #APP */
 136               	 ;  82 "util/string.c" 1
 137 0026 9491      		lpm r25, Z
 138               		
 139               	 ;  0 "" 2
 140               	/* #NOAPP */
 141               	.LBE2:
 142 0028 9923      		tst r25
 143 002a 01F4      		brne .L5
  90:util/string.c **** _putc(string[i]);
  91:util/string.c **** 		//softuart_putc('=');
  92:util/string.c **** 		//softuart_putc(pgm_read_byte(pointer));
  93:util/string.c **** 		//softuart_putnewline();
 144               	-.LFBB1
 145               	.LM5:
 146 002c 4423      		tst r20
 147 002e 01F0      		breq .L9
 148               	.L6:
 149 0030 90E0      		ldi r25,lo8(0)
 150 0032 A80F      		add r26,r24
 151 0034 B11D      		adc r27,__zero_reg__
 152 0036 8C91      		ld r24,X
 153 0038 8823      		tst r24
 154 003a 01F4      		brne .L4
 155               	.L9:
 156 003c 91E0      		ldi r25,lo8(1)
 157               	.L4:
  94:util/string.c **** _putc(string[i]);
  95:util/string.c **** 		//softuart_putc('=');
  96:util/string.c **** 		//softuart_putc(pgm_read_byte(pointer));
  97:util/string.c **** 		//softuart_putnewline();
 158               	7,.LM6-.LFBB1
 159               	.LM6:
 160 003e 892F      		mov r24,r25
 161               	/* epilogue start */
 162 0040 0895      		ret
 170               	.Lscope1:
 174               	.global	string_compare_progmem_plen2
 176               	string_compare_progmem_plen2:
  98:util/string.c **** _putc(string[i]);
  99:util/string.c **** 		//softuart_putc('=');
 177               	7-.LFBB2
 178               	.LM7:
 179               	.LFBB2:
 180               	/* prologue: function */
 181               	/* frame size = 0 */
 182 0042 A82F      		mov r26,r24
 184               	.LM8:
 185 0044 E82F      		mov r30,r24
 186 0046 F92F      		mov r31,r25
 187 0048 9F01      		movw r18,r30
 188 004a 00C0      		rjmp .L11
 189               	.L14:
 190               	.LBB3:
 100:util/string.c **** k_eof){
 101:util/string.c **** 	unsigned char i=0;
 102:util/string.c **** 	while(pgm_read_byte(pointer)){
 103:util/string.c **** 		//softuart_putc(string[i]);
 104:util/string.c **** 		//softuart_putc('=');
 105:util/string.c **** 		//softuart_putc(pgm_read_byte(pointer));
 106:util/string.c **** 		//softuart_putnewline();
 191               	06,.LM9-.LFBB2
 192               	.LM9:
 193 004c F901      		movw r30,r18
 194               	/* #APP */
 195               	 ;  106 "util/string.c" 1
 196 004e 8491      		lpm r24, Z
 197               		
 198               	 ;  0 "" 2
 199               	/* #NOAPP */
 200 0050 6150      		subi r22,lo8(-(-1))
 201 0052 7040      		sbci r23,hi8(-(-1))
 202               	.LBE3:
 203 0054 FA01      		movw r30,r20
 204 0056 E90F      		add r30,r25
 205 0058 F11D      		adc r31,__zero_reg__
 206 005a 9081      		ld r25,Z
 207 005c 9817      		cp r25,r24
 208 005e 01F0      		breq .L12
 209 0060 80E0      		ldi r24,lo8(0)
 210 0062 0895      		ret
 211               	.L12:
 107:util/string.c **** _putc(string[i]);
 108:util/string.c **** 		//softuart_putc('=');
 109:util/string.c **** 		//softuart_putc(pgm_read_byte(pointer));
 110:util/string.c **** 		//softuart_putnewline();
 111:util/string.c **** 		if (string[i] != pgm_read_byte(pointer))
 112:util/string.c **** 			return 0;
 212               	0-.LFBB2
 213               	.LM10:
 214 0064 2F5F      		subi r18,lo8(-(1))
 215 0066 3F4F      		sbci r19,hi8(-(1))
 216               	.L11:
 217 0068 922F      		mov r25,r18
 218 006a 9A1B      		sub r25,r26
 220               	.LM11:
 221 006c 6115      		cp r22,__zero_reg__
 222 006e 7105      		cpc r23,__zero_reg__
 223 0070 01F4      		brne .L14
 224 0072 81E0      		ldi r24,lo8(1)
 113:util/string.c **** c(pgm_read_byte(pointer));
 114:util/string.c **** 		//softuart_putnewline();
 115:util/string.c **** 		if (string[i] != pgm_read_byte(pointer))
 116:util/string.c **** 			return 0;
 225               	116,.LM12-.LFBB2
 226               	.LM12:
 227 0074 0895      		ret
 235               	.Lscope2:
 239               	.global	string_uint16_to_buffer
 241               	string_uint16_to_buffer:
 117:util/string.c **** c(pgm_read_byte(pointer));
 118:util/string.c **** 		//softuart_putnewline();
 242               	.LM13-.LFBB3
 243               	.LM13:
 244               	.LFBB3:
 245 0076 FF92      		push r15
 246 0078 0F93      		push r16
 247 007a 1F93      		push r17
 248 007c CF93      		push r28
 249 007e DF93      		push r29
 250               	/* prologue: function */
 251               	/* frame size = 0 */
 252 0080 8C01      		movw r16,r24
 253 0082 EB01      		movw r28,r22
 255               	.LM14:
 256 0084 20E1      		ldi r18,lo8(10000)
 257 0086 37E2      		ldi r19,hi8(10000)
 258 0088 40E0      		ldi r20,lo8(0)
 119:util/string.c **** _putc(string[i]);
 120:util/string.c **** 		//softuart_putc('=');
 121:util/string.c **** 		//softuart_putc(pgm_read_byte(pointer));
 122:util/string.c **** 		//softuart_putnewline();
 259               	.LM15-.LFBB3
 260               	.LM15:

⌨️ 快捷键说明

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