67 lines
819 B
Plaintext
67 lines
819 B
Plaintext
.section .text
|
|
|
|
.global memcpy
|
|
memcpy:
|
|
mov x3, x0
|
|
0:
|
|
cbz x2, 1f
|
|
ldrb w4, [x1], #1
|
|
strb w4, [x0], #1
|
|
sub x2, x2, #1
|
|
b 0b
|
|
1:
|
|
mov x0, x3
|
|
ret
|
|
|
|
.global memset
|
|
memset:
|
|
mov x3, x0
|
|
0:
|
|
cbz x2, 1f
|
|
strb w1, [x0], #1
|
|
sub x2, x2, #1
|
|
b 0b
|
|
1:
|
|
mov x0, x3
|
|
ret
|
|
|
|
.global memmove
|
|
memmove:
|
|
mov x3, x0
|
|
mov x5, x2
|
|
|
|
cmp x0, x1
|
|
b.gt 1f
|
|
0:
|
|
cbz x2, 2f
|
|
ldrb w4, [x1], #1
|
|
strb w4, [x0], #1
|
|
sub x2, x2, #1
|
|
b 0b
|
|
1:
|
|
sub x5, x5, #1
|
|
cbz x2, 2f
|
|
ldrb w4, [x1, x5]
|
|
strb w4, [x0, x5]
|
|
sub x2, x2, #1
|
|
b 1b
|
|
2:
|
|
mov x0, x3
|
|
ret
|
|
|
|
.global memcmp
|
|
memcmp:
|
|
mov x3, xzr
|
|
0:
|
|
cbz x2, 1f
|
|
ldrb w3, [x0], #1
|
|
ldrb w4, [x1], #1
|
|
sub w3, w3, w4
|
|
cbnz w3, 1f
|
|
sub x2, x2, #1
|
|
b 0b
|
|
1:
|
|
sxtw x0, w3
|
|
mov x0, x3
|
|
ret
|