repo.or.cz
/
neatlibc.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
merge the experimental x86_64 branch
[neatlibc.git]
/
x86_64
/
string.s
blob
9793df138ae82214c672a3adad09767c1b150ca1
1
format ELF64
2
3
public memcpy
4
memcpy
:
5
mov rax
,
rdi
6
mov rcx
,
rdx
7
cld
8
rep movsb
9
ret
10
11
public memmove
12
memmove
:
13
mov rcx
,
rdx
14
cmp
rdi
,
rsi
15
jng
.usual
16
mov rax
,
rsi
17
add
rax
,
rcx
18
cmp
rdi
,
rax
19
jg
.usual
20
21
mov rax
,
rdi
22
std
23
add
rsi
,
rcx
24
add
rdi
,
rcx
25
dec
rsi
26
dec
rdi
27
rep movsb
28
ret
29
.usual:
30
mov rax
,
rdi
31
cld
32
rep movsb
33
ret
34
35
public memset
36
memset
:
37
mov rcx
,
rdx
38
mov rax
,
rsi
39
mov rdx
,
rdi
40
cld
41
rep stosb
42
mov rax
,
rdx
43
ret
44
45
public memchr
46
memchr
:
47
mov rax
,
rsi
48
mov rcx
,
rdx
49
cld
50
repnz scasb
51
jne
.failed
52
mov rax
,
rdi
53
dec
rax
54
ret
55
.failed:
56
xor
eax
,
eax
57
ret
58
59
public memcmp
60
memcmp
:
61
xor
eax
,
eax
62
mov rcx
,
rdx
63
jecxz
.ret
64
65
cld
66
rep cmpsb
67
jz
.ret
68
xor
eax
,
eax
69
mov al
, [
rdi
-
1
]
70
xor
ecx
,
ecx
71
mov cl
, [
rsi
-
1
]
72
sub
eax
,
ecx
73
.ret:
74
ret
75
76
public strlen
77
strlen
:
78
xor
eax
,
eax
79
mov rcx
, -
1
80
cld
81
repnz scasb
82
mov rax
,
rcx
83
not
rax
84
dec
rax
85
ret
86
87
public memrchr
88
memrchr
:
89
mov eax
,
esi
90
mov rcx
,
rdx
91
add
rdi
,
rcx
92
dec
rdi
93
std
94
repnz scasb
95
jne
.failed
96
mov rax
,
rdi
97
inc rax
98
ret
99
.failed:
100
xor
eax
,
eax
101
ret
102
103
public strchr
104
strchr
:
105
.loop:
106
mov al
, [
rdi
]
107
cmp
al
,
sil
108
jz
.done
109
inc rdi
110
test al
,
al
111
jnz
.loop
112
xor
edi
,
edi
113
.done:
114
mov rax
,
rdi
115
ret
116
117
public strcmp
118
strcmp
:
119
xor
eax
,
eax
120
.loop:
121
mov al
, [
rdi
]
122
cmp
al
, [
rsi
]
123
jnz
.ret
124
inc rdi
125
inc rsi
126
test al
,
al
127
jnz
.loop
128
ret
129
.ret:
130
movzx rcx
,
byte
[
rsi
]
131
sub
rax
,
rcx
132
ret
133
134
public strcpy
135
strcpy
:
136
mov rdx
,
rdi
137
cld
138
.loop:
139
lodsb
140
stosb
141
or
al
,
al
142
jnz
.loop
143
mov rax
,
rdx
144
ret
145
146
public strrchr
147
strrchr
:
148
xor
edx
,
edx
149
dec
rdi
150
.loop:
151
inc rdi
152
mov al
, [
rdi
]
153
test al
,
al
154
jz
.done
155
cmp
al
,
sil
156
jnz
.loop
157
mov rdx
,
rdi
158
jmp
.loop
159
.done:
160
mov rax
,
rdx
161
ret
162
163
public strncmp
164
strncmp
:
165
xor
eax
,
eax
166
.loop:
167
test rdx
,
rdx
168
jz
.failed
169
mov al
, [
rdi
]
170
cmp
al
, [
rsi
]
171
jnz
.ret
172
inc rsi
173
inc rdi
174
dec
rdx
175
test al
,
al
176
jnz
.loop
177
.failed:
178
xor
eax
,
eax
179
ret
180
.ret:
181
movzx ecx
,
byte
[
rsi
]
182
sub
eax
,
ecx
183
ret