]> git.lizzy.rs Git - nyax.git/blob - stage3/memory.asm
Force make to use bash (#1)
[nyax.git] / stage3 / memory.asm
1 global memcpy, memmove
2
3 section .text
4
5 memcpy:
6 .bulk_copy:
7         cmp rdx, 8
8         jl .bytewise_copy
9         mov rax, qword[rsi]
10         mov qword[rdi], rax
11         sub rdx, 8
12         add rdi, 8
13         add rsi, 8
14 .bytewise_copy:
15         cmp rdx, 0
16         je .return
17         mov al, byte[rsi]
18         mov byte[rdi], al
19         dec rdx
20         inc rdi
21         inc rsi
22         jmp .bytewise_copy
23 .return:
24         ret
25
26 memmove:
27         mov rcx, rdx
28 .bulk_read:
29         cmp rdx, 8
30         jl .bytewise_read
31         push qword[rsi]
32         add rsi, 8
33         sub rdx, 8
34         jmp .bulk_read
35 .bytewise_read:
36         cmp rdx, 0
37         je .bulk_write
38         dec rsp
39         mov al, byte[rsi]
40         mov byte[rsp], al
41         inc rsi
42         dec rdx
43         jmp .bytewise_read
44 .bulk_write:
45         cmp rcx, 8
46         jl .bytewise_write
47         pop qword[rdi]
48         add rdi, 8
49         sub rcx, 8
50 .bytewise_write:
51         cmp rcx, 0
52         je .return
53         mov al, byte[rsp]
54         mov byte[rdi], al
55         inc rsp
56         inc rdi
57         dec rcx
58 .return:
59         ret