Subversion Repositories Kolibri OS

Rev

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

Rev 3081 Rev 3107
Line 1... Line 1...
1
//------------------------------------------------------------------------------
1
//------------------------------------------------------------------------------
2
// strcmp( ESI, EDI)
2
// strcmp( ESI, EDI)
3
// strlen( EDI)
3
// strlen( EDI)
4
// strcpy( EDI, ESI)
4
// strcpy( EDI, ESI) --- 0 if ==
5
// strcat( EDI, ESI)
5
// strcat( EDI, ESI)
6
// strchr( ESI,BL)
6
// strchr( ESI,BL)
7
// strrchr( ESI,BL)
7
// strrchr( ESI,BL)
8
// strstr( EBX, EDX)
8
// strstr( EBX, EDX)
9
// itoa( ESI)
9
// itoa( ESI)
10
// atoi( EAX)
10
// atoi( EAX)
11
// strupr( ESI)
11
// strupr( ESI)
12
// strlwr( ESI) ----- âîçìîæíî íå ïîääåðæèâàåò êèðèëëèöó
12
// strlwr( ESI) --- kyrillic symbols may not work
13
// strttl( EDX)
13
// strttl( EDX)
14
// strtok( ESI)
14
// strtok( ESI)
-
 
15
// strcpyb(dword searchin, copyin, startstr, endstr) --- copy string between strings
-
 
16
//chrnum(dword searchin, char symbol) --- count of symbol in string
15
//------------------------------------------------------------------------------
17
//------------------------------------------------------------------------------
Line 16... Line 18...
16
 
18
 
17
inline fastcall signed int strcmp( ESI, EDI)
19
inline fastcall signed int strcmp( ESI, EDI)
18
{
20
{
Line 47... Line 49...
47
L1:
49
L1:
48
  }
50
  }
49
}
51
}
Line 50... Line -...
50
 
-
 
51
 
-
 
52
 
-
 
53
/*
-
 
54
 
-
 
55
inline fastcall signed int strcmpi( ESI,EDI)
-
 
56
uses EBX
-
 
57
{
-
 
58
	do{
-
 
59
		$lodsb
-
 
60
		IF(AL>='a')&&(AL<='z')AL-=0x20;
-
 
61
		BL=DSBYTE[(E)DI];
-
 
62
		IF(BL>='a')&&(BL<='z')BL-=0x20;
-
 
63
		AL-=BL;
-
 
64
		IF(!ZEROFLAG)BREAK;
-
 
65
		(E)DI++;
-
 
66
	}while(BL!=0);
-
 
67
}
-
 
68
 
-
 
69
inline char STRNCMPI((E)SI,(E)DI,(E)CX)
-
 
70
{
-
 
71
	(E)AX=0;
-
 
72
	LOOPNZ((E)CX){
-
 
73
		$lodsb
-
 
74
		IF(AL>='a')&&(AL<='z')AL-=0x20;
-
 
75
		AH=DSBYTE[EDI];
-
 
76
		IF(AH>='a')&&(AH<='z')AH-=0x20;
-
 
77
		EDI++;
-
 
78
		IF(AL==0)||(AH==0)||(AL!=AH)BREAK;
-
 
79
	}
-
 
80
	AL=AL-AH;
-
 
81
}*/
-
 
82
 
-
 
83
 
52
 
84
 
53
 
85
inline fastcall unsigned int strlen( EDI)
54
inline fastcall unsigned int strlen( EDI)
86
{
55
{
87
	$xor eax, eax
56
	$xor eax, eax
Line 92... Line 61...
92
 
61
 
93
 
62
 
94
inline fastcall strcpy( EDI, ESI)
63
inline fastcall strcpy( EDI, ESI)
95
{
64
{
96
	$cld
65
	$cld
97
l2:
66
L2:
98
	$lodsb
67
	$lodsb
99
	$stosb
68
	$stosb
100
	$test al,al
69
	$test al,al
Line 101... Line 70...
101
	$jnz l2
70
	$jnz L2
102
}
71
}
Line 154... Line 123...
154
		 $neg     esi
123
		 $neg     esi
155
	}
124
	}
Line 156... Line 125...
156
 
125
 
157
	$mov     eax, esi
126
	$mov     eax, esi
158
	$push    -'0'
127
	$push    -'0'
159
f2:
128
F2:
160
	$xor     edx, edx
129
	$xor     edx, edx
161
	$div     ecx
130
	$div     ecx
162
	$push    edx
131
	$push    edx
163
	$test    eax, eax
132
	$test    eax, eax
164
	$jnz     f2
133
	$jnz     F2
165
f3:
134
F3:
166
	$pop     eax
135
	$pop     eax
167
	$add     al, '0'
136
	$add     al, '0'
168
	$stosb
137
	$stosb
Line 169... Line 138...
169
	$jnz     f3
138
	$jnz     F3
170
	
139
	
Line 171... Line 140...
171
	$mov     al, '\0'
140
	$mov     al, '\0'
Line 184... Line 153...
184
	BH=AL;
153
	BH=AL;
185
	do{
154
	do{
186
		BL=DSBYTE[ESI]-'0';
155
		BL=DSBYTE[ESI]-'0';
187
		EAX=EAX*10+EBX;
156
		EAX=EAX*10+EBX;
188
		ESI++;
157
		ESI++;
189
	}while(DSBYTE[ESI]>0);
158
	}while(DSBYTE[ESI]>='0');
190
	IF(DSBYTE[EDI]=='-') -EAX;
159
	IF(DSBYTE[EDI]=='-') -EAX;
191
}
160
}
Line 192... Line 161...
192
 
161
 
Line 292... Line 261...
292
LS2: XOR EAX, EAX
261
LS2: XOR EAX, EAX
293
LS3:
262
LS3:
294
  }
263
  }
295
}
264
}
Line -... Line 265...
-
 
265
 
-
 
266
//
-
 
267
void strcpyb(dword searchin, copyin, startstr, endstr)
-
 
268
{
-
 
269
	dword startp, endp;
-
 
270
	startp = strstr(searchin, startstr) + strlen(startstr);
-
 
271
	endp = strstr(startp, endstr);
-
 
272
	if (startp==endp) return;
-
 
273
	do
-
 
274
	{ 
-
 
275
		DSBYTE[copyin] = DSBYTE[startp];
-
 
276
		copyin++;
-
 
277
		startp++;
-
 
278
	}
-
 
279
	while (startp
-
 
280
	DSBYTE[copyin] = '\0';
-
 
281
}
-
 
282
 
-
 
283
int chrnum(dword searchin, char symbol)
-
 
284
{
-
 
285
	int num = 0;
-
 
286
	while(DSBYTE[searchin])
-
 
287
	{ 
-
 
288
		if (DSBYTE[searchin] == symbol)	num++;
-
 
289
		searchin++;
-
 
290
	}
-
 
291
	return num;
-
 
292
}
Line 296... Line 293...
296
 
293
 
297
 
294