Changeset 75129 in vbox for trunk/src/VBox/Runtime/common/string/watcom/strchr.asm
- Timestamp:
- Oct 28, 2018 5:00:27 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 126206
- Location:
- trunk/src/VBox/Runtime/common/string/watcom
- Files:
-
- 1 added
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/string/watcom/strchr.asm
r75123 r75129 1 1 ; $Id$ 2 2 ;; @file 3 ; IPRT - No-CRT strchr - AMD64 & X86.3 ; IPRT - No-CRT strchr - Watcom register calling convention. 4 4 ; 5 5 … … 27 27 %include "iprt/asmdefs.mac" 28 28 29 BEGINCODE 29 %define ASM_CALL32_WATCOM 30 %define NAME(name) name %+ _ 31 %include "common/string/strchr.asm" 30 32 31 ;;32 ; @param psz gcc: rdi msc: rcx x86:[esp+4]33 ; @param ch gcc: esi msc: edx x86:[esp+8]34 RT_NOCRT_BEGINPROC strchr35 cld36 37 ; check for ch == 0 and setup normal strchr.38 %ifdef RT_ARCH_AMD6439 %ifdef ASM_CALL64_MSC40 or dl, dl41 jz near .strlen42 mov r9, rsi ; save rsi43 mov rsi, rcx44 %else45 or sil, sil46 jz near .strlen47 mov edx, esi48 mov rsi, rdi49 %endif50 %else51 mov edx, [esp + 8]52 or dl, dl53 jz near .strlen54 mov ecx, esi ; save esi55 mov esi, [esp + 4]56 %endif57 58 ; do the search59 .next:60 lodsb61 cmp al, dl62 je .found63 test al, al64 jz .not_found65 66 lodsb67 cmp al, dl68 je .found69 test al, al70 jz .not_found71 72 lodsb73 cmp al, dl74 je .found75 test al, al76 jz .not_found77 78 lodsb79 cmp al, dl80 je .found81 test al, al82 jz .not_found83 jmp .next84 85 .found:86 lea xAX, [xSI - 1]87 %ifdef ASM_CALL64_MSC88 mov rsi, r989 %endif90 %ifdef RT_ARCH_X8691 mov esi, ecx92 %endif93 ret94 95 .not_found:96 %ifdef ASM_CALL64_MSC97 mov rsi, r998 %endif99 %ifdef RT_ARCH_X86100 mov esi, ecx101 %endif102 xor eax, eax103 ret104 105 ;106 ; Special case: strchr(str, '\0');107 ;108 align 16109 .strlen:110 %ifdef RT_ARCH_AMD64111 %ifdef ASM_CALL64_MSC112 mov r9, rdi ; save rdi113 mov rdi, rcx114 %endif115 %else116 mov edx, edi ; save edi117 mov edi, [esp + 4]118 %endif119 mov xCX, -1120 xor eax, eax121 repne scasb122 123 lea xAX, [xDI - 1]124 %ifdef ASM_CALL64_MSC125 mov rdi, r9126 %endif127 %ifdef RT_ARCH_X86128 mov edi, edx129 %endif130 ret131 ENDPROC RT_NOCRT(strchr)132
Note:
See TracChangeset
for help on using the changeset viewer.