VirtualBox

source: vbox/trunk/src/VBox/Runtime/string/strcmp.asm@ 4071

Last change on this file since 4071 was 4071, checked in by vboxsync, 17 years ago

Biggest check-in ever. New source code headers for all (C) innotek files.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 2.0 KB
Line 
1; $Id: strcmp.asm 4071 2007-08-07 17:07:59Z vboxsync $
2;; @file
3; innotek Portable Runtime - No-CRT strcmp - AMD64 & X86.
4;
5
6;
7; Copyright (C) 2006-2007 innotek GmbH
8;
9; This file is part of VirtualBox Open Source Edition (OSE), as
10; available from http://www.virtualbox.org. This file is free software;
11; you can redistribute it and/or modify it under the terms of the GNU
12; General Public License as published by the Free Software Foundation,
13; in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
14; distribution. VirtualBox OSE is distributed in the hope that it will
15; be useful, but WITHOUT ANY WARRANTY of any kind.
16
17%include "iprt/asmdefs.mac"
18
19BEGINCODE
20
21;;
22; @param psz1 gcc: rdi msc: rcx x86:[esp+4]
23; @param psz2 gcc: rsi msc: rdx x86:[esp+8]
24BEGINPROC RT_NOCRT(strcmp)
25 ; input
26%ifdef RT_ARCH_AMD64
27 %ifdef ASM_CALL64_MSC
28 %define psz1 rcx
29 %define psz2 rdx
30 %else
31 %define psz1 rdi
32 %define psz2 rsi
33 %endif
34%else
35 mov ecx, [esp + 4]
36 mov edx, [esp + 8]
37 %define psz1 ecx
38 %define psz2 edx
39%endif
40
41 ;
42 ; The loop.
43 ;
44.next:
45 mov al, [psz1]
46 mov ah, [psz2]
47 cmp al, ah
48 jne .not_equal
49 test al, al
50 jz .equal
51
52 mov al, [psz1 + 1]
53 mov ah, [psz2 + 1]
54 cmp al, ah
55 jne .not_equal
56 test al, al
57 jz .equal
58 inc psz1
59 inc psz2
60
61 mov al, [psz1 + 2]
62 mov ah, [psz2 + 2]
63 cmp al, ah
64 jne .not_equal
65 test al, al
66 jz .equal
67 inc psz1
68 inc psz2
69
70 mov al, [psz1 + 3]
71 mov ah, [psz2 + 3]
72 cmp al, ah
73 jne .not_equal
74 test al, al
75 jz .equal
76
77 add psz1, 4
78 add psz2, 4
79 jmp .next
80
81.equal:
82 xor eax, eax
83 ret
84
85.not_equal:
86 movzx ecx, ah
87 and eax, 0ffh
88 sub eax, ecx
89 ret
90ENDPROC RT_NOCRT(strcmp)
91
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette