mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 10:01:43 +00:00
[CRT]
- Make all x86assembly ML compatible - Remove memcpy, it was duplicated from memmove, copy the label instead - Guard some code against compilation on msvc, as these functions are intrinsics on MSVC and cannot be implemented - Fix some x64 assembly (don't modify stack below rsp) svn path=/branches/cmake-bringup/; revision=49421
This commit is contained in:
parent
0d7a1c46a0
commit
a3623f23de
49 changed files with 912 additions and 918 deletions
|
@ -2,39 +2,42 @@
|
|||
*/
|
||||
|
||||
#include "tchar.h"
|
||||
#include <reactos/asm.h>
|
||||
|
||||
.globl _tcsncmp
|
||||
PUBLIC _tcsncmp
|
||||
.code
|
||||
|
||||
_tcsncmp:
|
||||
push %esi
|
||||
push %edi
|
||||
mov 0x0C(%esp), %esi /* s1 */
|
||||
mov 0x10(%esp), %edi /* s2 */
|
||||
mov 0x14(%esp), %ecx /* n */
|
||||
push esi
|
||||
push edi
|
||||
mov esi, [esp + 12] /* s1 */
|
||||
mov edi, [esp + 16] /* s2 */
|
||||
mov ecx, [esp + 20] /* n */
|
||||
|
||||
xor %eax,%eax
|
||||
cld
|
||||
xor eax, eax
|
||||
cld
|
||||
|
||||
.L1:
|
||||
dec %ecx
|
||||
js .L2
|
||||
_tlods
|
||||
_tscas
|
||||
jne .L3
|
||||
test %eax, %eax
|
||||
jne .L1
|
||||
dec ecx
|
||||
js .L2
|
||||
_tlods
|
||||
_tscas
|
||||
jne .L3
|
||||
test eax, eax
|
||||
jne .L1
|
||||
|
||||
.L2:
|
||||
xor %eax, %eax
|
||||
jmp .L4
|
||||
xor eax, eax
|
||||
jmp .L4
|
||||
|
||||
.L3:
|
||||
sbb %eax, %eax
|
||||
or $1, %al
|
||||
sbb eax, eax
|
||||
or al, 1
|
||||
|
||||
.L4:
|
||||
pop %edi
|
||||
pop %esi
|
||||
ret
|
||||
pop edi
|
||||
pop esi
|
||||
ret
|
||||
|
||||
END
|
||||
/* EOF */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue