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
stdio.h: add fopen() and fclose()
[neatlibc.git]
/
string.s
blob
8be7458632954bc34c40a744baf9f2d8c0de3a9a
1
format ELF
2
3
public memcpy
4
memcpy
:
5
push esi
6
push edi
7
mov edi
, [
esp+
12
]
8
mov esi
, [
esp+
16
]
9
mov ecx
, [
esp+
20
]
10
mov eax
,
edi
11
cld
12
rep movsb
13
pop edi
14
pop esi
15
ret
16
17
public memmove
18
memmove
:
19
push esi
20
push edi
21
mov edi
, [
esp+
12
]
22
mov esi
, [
esp+
16
]
23
mov ecx
, [
esp+
20
]
24
cmp
edi
,
esi
25
jng
.usual
26
mov eax
,
esi
27
add
eax
,
ecx
28
cmp
edi
,
eax
29
jg
.usual
30
31
mov eax
,
edi
32
std
33
add
esi
,
ecx
34
add
edi
,
ecx
35
dec
esi
36
dec
edi
37
rep movsb
38
jmp
.ret
39
.usual:
40
mov eax
,
edi
41
cld
42
rep movsb
43
.ret:
44
pop edi
45
pop esi
46
ret
47
48
public memset
49
memset
:
50
push edi
51
mov edi
, [
esp+
8
]
52
mov eax
, [
esp+
12
]
53
mov ecx
, [
esp+
16
]
54
mov edx
,
edi
55
cld
56
rep stosb
57
pop edi
58
mov eax
,
edx
59
ret
60
61
public memchr
62
memchr
:
63
mov eax
, [
esp+
8
]
64
mov ecx
, [
esp+
12
]
65
push edi
66
mov edi
, [
esp+
8
]
67
cld
68
repnz scasb
69
jne
.failed
70
mov eax
,
edi
71
dec
eax
72
jmp
.ret
73
.failed:
74
xor
eax
,
eax
75
.ret:
76
pop edi
77
ret
78
79
public memcmp
80
memcmp
:
81
push esi
82
push edi
83
xor
eax
,
eax
84
mov esi
, [
esp+
12
]
85
mov edi
, [
esp+
16
]
86
mov ecx
, [
esp+
20
]
87
jecxz
.ret
88
89
cld
90
rep cmpsb
91
jz
.ret
92
sbb eax
,
eax
93
or
eax
,
1
94
.ret:
95
pop edi
96
pop esi
97
ret
98
99
public strlen
100
strlen
:
101
push edi
102
mov edi
, [
esp+
8
]
103
xor
eax
,
eax
104
mov ecx
, -
1
105
cld
106
repnz scasb
107
mov eax
,
ecx
108
not
eax
109
dec
eax
110
pop edi
111
ret
112
113
public memrchr
114
memrchr
:
115
mov eax
, [
esp+
8
]
116
mov ecx
, [
esp+
12
]
117
push edi
118
mov edi
, [
esp+
8
]
119
add
edi
,
ecx
120
dec
edi
121
std
122
repnz scasb
123
jne
.failed
124
mov eax
,
edi
125
inc eax
126
jmp
.ret
127
.failed:
128
xor
eax
,
eax
129
.ret:
130
pop edi
131
ret
132
133
public strchr
134
strchr
:
135
mov ecx
, [
esp+
4
]
136
mov edx
, [
esp+
8
]
137
.loop:
138
mov al
, [
ecx
]
139
cmp
al
,
dl
140
jz
.done
141
inc ecx
142
test al
,
al
143
jnz
.loop
144
xor
ecx
,
ecx
145
.done:
146
mov eax
,
ecx
147
ret
148
149
public strcmp
150
strcmp
:
151
mov ecx
, [
esp+
4
]
152
mov edx
, [
esp+
8
]
153
xor
eax
,
eax
154
.loop:
155
mov al
, [
ecx
]
156
cmp
al
, [
edx
]
157
jnz
.ret
158
inc edx
159
inc ecx
160
test al
,
al
161
jnz
.loop
162
ret
163
.ret:
164
movzx ecx
,
byte
[
edx
]
165
sub
eax
,
ecx
166
ret
167
168
public strcpy
169
strcpy
:
170
push edi
171
push esi
172
mov edx
, [
esp+
12
]
173
mov esi
, [
esp+
16
]
174
mov edi
,
edx
175
cld
176
.loop:
177
lodsb
178
stosb
179
or
al
,
al
180
jnz
.loop
181
pop esi
182
pop edi
183
mov eax
,
edx
184
ret
185
186
public strrchr
187
strrchr
:
188
push edi
189
mov edi
, [
esp+
8
]
190
mov ecx
, [
esp+
12
]
191
xor
edx
,
edx
192
dec
edi
193
.loop:
194
inc edi
195
test al
,
al
196
jz
.done
197
mov al
, [
edi
]
198
cmp
al
,
cl
199
jnz
.loop
200
mov edx
,
edi
201
jz
.loop
202
.done:
203
mov eax
,
edx
204
pop edi
205
ret
206
207
public strncmp
208
strncmp
:
209
mov ecx
, [
esp+
4
]
210
mov edx
, [
esp+
8
]
211
xor
eax
,
eax
212
push edi
213
mov edi
, [
esp+
16
]
214
.loop:
215
test edi
,
edi
216
jz
.failed
217
mov al
, [
ecx
]
218
cmp
al
, [
edx
]
219
jnz
.ret
220
inc edx
221
inc ecx
222
dec
edi
223
test al
,
al
224
jnz
.loop
225
.failed:
226
xor
eax
,
eax
227
pop edi
228
ret
229
.ret:
230
movzx ecx
,
byte
[
edx
]
231
sub
eax
,
ecx
232
pop edi
233
ret