Subversion Repositories Kolibri OS

Rev

Rev 2844 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2844 Rev 2874
Line 11... Line 11...
11
// strupr( ESI)
11
// strupr( ESI)
12
// strlwr( ESI)
12
// strlwr( ESI)
13
// strtok( ESI)
13
// strtok( ESI)
14
//------------------------------------------------------------------------------
14
//------------------------------------------------------------------------------
Line -... Line 15...
-
 
15
 
-
 
16
inline fastcall signed int strcmp( ESI, EDI)
-
 
17
{
-
 
18
	loop()
-
 
19
	{
-
 
20
		IF (DSBYTE[ESI]
-
 
21
		IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1;
-
 
22
		IF (DSBYTE[ESI]=='\0') RETURN 0;
-
 
23
		ESI++;
-
 
24
		EDI++;
-
 
25
	}
-
 
26
}
-
 
27
 
-
 
28
 
-
 
29
inline fastcall signed int strncmp( ESI, EDI, ECX)
-
 
30
{
-
 
31
  asm {
-
 
32
    MOV EBX, EDI
-
 
33
    XOR EAX, EAX
-
 
34
    MOV EDX, ECX
-
 
35
    OR ECX, ECX
-
 
36
    JE L1
-
 
37
    REPNE SCASB
-
 
38
    SUB EDX, ECX
-
 
39
    MOV ECX, EDX
-
 
40
    MOV EDI, EBX
-
 
41
    XOR EBX, EBX
-
 
42
    REPE CMPSB
-
 
43
    MOV AL, DSBYTE[ ESI-1]
-
 
44
    MOV BL, DSBYTE[ EDI-1]
-
 
45
    SUB EAX, EBX
-
 
46
L1:
-
 
47
  }
-
 
48
}
-
 
49
 
-
 
50
/*
-
 
51
 
-
 
52
inline fastcall signed int strcmpi( ESI,EDI)
-
 
53
uses EBX
-
 
54
{
-
 
55
	do{
-
 
56
		$lodsb
-
 
57
		IF(AL>='a')&&(AL<='z')AL-=0x20;
-
 
58
		BL=DSBYTE[(E)DI];
-
 
59
		IF(BL>='a')&&(BL<='z')BL-=0x20;
-
 
60
		AL-=BL;
-
 
61
		IF(!ZEROFLAG)BREAK;
-
 
62
		(E)DI++;
-
 
63
	}while(BL!=0);
-
 
64
}
-
 
65
 
-
 
66
inline char STRNCMPI((E)SI,(E)DI,(E)CX)
-
 
67
{
-
 
68
	(E)AX=0;
-
 
69
	LOOPNZ((E)CX){
-
 
70
		$lodsb
-
 
71
		IF(AL>='a')&&(AL<='z')AL-=0x20;
-
 
72
		AH=DSBYTE[EDI];
-
 
73
		IF(AH>='a')&&(AH<='z')AH-=0x20;
-
 
74
		EDI++;
-
 
75
		IF(AL==0)||(AH==0)||(AL!=AH)BREAK;
-
 
76
	}
-
 
77
	AL=AL-AH;
-
 
78
}*/
-
 
79
 
Line 15... Line 80...
15
 
80
 
16
 
81
 
17
inline fastcall unsigned int strlen( EDI)
82
inline fastcall unsigned int strlen( EDI)
18
{
83
{
Line 105... Line 170...
105
	}while(DSBYTE[ESI]>0);
170
	}while(DSBYTE[ESI]>0);
106
	IF(DSBYTE[EDI]=='-') -EAX;
171
	IF(DSBYTE[EDI]=='-') -EAX;
107
}
172
}
Line 108... Line -...
108
 
-
 
109
 
-
 
110
inline fastcall signed int strcmp( ESI, EDI)
-
 
111
{
-
 
112
	loop()
-
 
113
	{
-
 
114
		IF (DSBYTE[ESI]
-
 
115
		IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1;
-
 
116
		IF (DSBYTE[ESI]=='\0') RETURN 0;
-
 
117
		ESI++;
-
 
118
		EDI++;
-
 
119
	}
-
 
120
}
173
 
121
 
174
 
122
inline fastcall unsigned int strchr( ESI,BL)
175
inline fastcall unsigned int strchr( ESI,BL)
123
{
176
{
124
	int jj=0;
177
	int jj=0;
Line 201... Line 254...
201
ls2: xor eax, eax
254
ls2: xor eax, eax
202
ls3:
255
ls3:
203
  }
256
  }
204
}
257
}
Line -... Line 258...
-
 
258
 
-
 
259
 
-
 
260
 
-
 
261
 
-
 
262
 
-
 
263
 
-
 
264
 
-
 
265
 
-
 
266
 
-
 
267
 
-
 
268
 
-
 
269
 
-
 
270
 
-
 
271
 
-
 
272
 
205
 
273
 
206
/* strtok( LPSTR dest, src, divs);
274
/* strtok( LPSTR dest, src, divs);
207
src - óêàçàòåëü íà èñõîäíóþ ñòðîêó èëè ðåçóëüòàò ïðåäûäóùåãî âûçîâà
275
src - óêàçàòåëü íà èñõîäíóþ ñòðîêó èëè ðåçóëüòàò ïðåäûäóùåãî âûçîâà
208
dest - óêàçàòåëü íà áóôåð, êóäà áóäåò ñêîïèðîâàíî ñëîâî
276
dest - óêàçàòåëü íà áóôåð, êóäà áóäåò ñêîïèðîâàíî ñëîâî
209
divs - óêàçàòåëü íà ñòðîêó, ñîäåðæàùóþ ñèìâîëû-ðàçäåëèòåëè
277
divs - óêàçàòåëü íà ñòðîêó, ñîäåðæàùóþ ñèìâîëû-ðàçäåëèòåëè
Line 240... Line 308...
240
    JMP SHORT L2
308
    JMP SHORT L2
241
L3: MOV EAX, ESI
309
L3: MOV EAX, ESI
242
L4: POP ECX
310
L4: POP ECX
243
  } DSBYTE[ EDX] = 0;
311
  } DSBYTE[ EDX] = 0;
244
}
312
}
-
 
313
 
-
 
314
#define strncpy strcpyn
-
 
315
#define strnmov strmovn
-
 
316
#define stricmp strcmpi
-
 
317
#define strcmpn strncmp
-
 
318
#define strncmpi strcmpni
-
 
319
#define stricmpn strcmpni
-
 
320
#define strnicmp strcmpni
-
 
321
#define strincmp strcmpni
-
 
322
#define strcmpin strcmpni
245
>
323
>