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 | }='Z'){ |
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='Z'){ |
|
245 | >='z')DSBYTE[ESI]=AL&0x5f; |
323 | >='z')DSBYTE[ESI]=AL&0x5f; |