OpenCores
URL https://opencores.org/ocsvn/1664/1664/trunk

Subversion Repositories 1664

[/] [1664/] [trunk/] [arci/] [amd64/] [fonte/] [memoria/] [memoria_copia.asm] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 mrdmkg
;void memoria_copia(n1 *dst,n1 *fnt,nN cuantia)
2
;{
3
; nN conta;
4
; for(conta = 0;conta
5
; {
6
;  dst[conta]=fnt[conta];
7
; }
8
;}
9
%include "../../macro/macro.inc"
10
 
11
bits 64
12
;==============================================================================
13
codigi_global memoria_copia
14
;==============================================================================
15
cmp rdx,0x20
16
jae .prefasa
17
mov ecx,edx
18
rep movsb
19
ret
20
 
21
.prefasa
22
mov eax,esi
23
mov ecx,0x10
24
and eax,0x0f
25
jz .fonte_aliniada
26
sub ecx,eax
27
sub rdx,rcx
28
rep movsb
29
 
30
.fonte_aliniada
31
cmp rdx,0x100
32
hwnt jae .copia_0x100_prefasa
33
 
34
.copia_0x10_prefasa
35
mov ecx,edx
36
and ecx,0x0f
37
sub rdx,rcx
38
mov eax,edi
39
and eax,0x0f
40
jz .copia_0x10_aliniada
41
 
42
.copia_0x10
43
movaps xmm0,[rsi]
44
movups [rdi],xmm0
45
add rsi,0x10
46
add rdi,0x10
47
sub rdx,0x10
48
hst jnz .copia_0x10
49
rep movsb
50
ret
51
 
52
.copia_0x10_aliniada
53
movaps xmm0,[rsi]
54
movaps [rdi],xmm0
55
add rsi,0x10
56
add rdi,0x10
57
sub rdx,0x10
58
hst jnz .copia_0x10_aliniada
59
rep movsb
60
ret
61
 
62
.copia_0x100_prefasa
63
mov ecx,edx
64
and ecx,0xff
65
mov eax,edi
66
sub rdx,rcx
67
and eax,0x0f
68
jz .copia_0x100_aliniada
69
 
70
.copia_0x100
71
movaps xmm0,[rsi+0x00]
72
movaps xmm1,[rsi+0x10]
73
movaps xmm2,[rsi+0x20]
74
movaps xmm3,[rsi+0x30]
75
movaps xmm4,[rsi+0x40]
76
movaps xmm5,[rsi+0x50]
77
movaps xmm6,[rsi+0x60]
78
movaps xmm7,[rsi+0x70]
79
movaps xmm8,[rsi+0x80]
80
movaps xmm9,[rsi+0x90]
81
movaps xmm10,[rsi+0xa0]
82
movaps xmm11,[rsi+0xb0]
83
movaps xmm12,[rsi+0xc0]
84
movaps xmm13,[rsi+0xd0]
85
movaps xmm14,[rsi+0xe0]
86
movaps xmm15,[rsi+0xf0]
87
movups [rdi+0x00],xmm0
88
movups [rdi+0x10],xmm1
89
movups [rdi+0x20],xmm2
90
movups [rdi+0x30],xmm3
91
movups [rdi+0x40],xmm4
92
movups [rdi+0x50],xmm5
93
movups [rdi+0x60],xmm6
94
movups [rdi+0x70],xmm7
95
movups [rdi+0x80],xmm8
96
movups [rdi+0x90],xmm9
97
movups [rdi+0xa0],xmm10
98
movups [rdi+0xb0],xmm11
99
movups [rdi+0xc0],xmm12
100
movups [rdi+0xd0],xmm13
101
movups [rdi+0xe0],xmm14
102
movups [rdi+0xf0],xmm15
103
add rsi,0x100
104
add rdi,0x100
105
sub rdx,0x100
106
hst jnz .copia_0x100
107
mov edx,ecx
108
jmp memoria_copia
109
 
110
.copia_0x100_aliniada
111
movaps xmm0,[rsi+0x00]
112
movaps xmm1,[rsi+0x10]
113
movaps xmm2,[rsi+0x20]
114
movaps xmm3,[rsi+0x30]
115
movaps xmm4,[rsi+0x40]
116
movaps xmm5,[rsi+0x50]
117
movaps xmm6,[rsi+0x60]
118
movaps xmm7,[rsi+0x70]
119
movaps xmm8,[rsi+0x80]
120
movaps xmm9,[rsi+0x90]
121
movaps xmm10,[rsi+0xa0]
122
movaps xmm11,[rsi+0xb0]
123
movaps xmm12,[rsi+0xc0]
124
movaps xmm13,[rsi+0xd0]
125
movaps xmm14,[rsi+0xe0]
126
movaps xmm15,[rsi+0xf0]
127
movaps [rdi+0x00],xmm0
128
movaps [rdi+0x10],xmm1
129
movaps [rdi+0x20],xmm2
130
movaps [rdi+0x30],xmm3
131
movaps [rdi+0x40],xmm4
132
movaps [rdi+0x50],xmm5
133
movaps [rdi+0x60],xmm6
134
movaps [rdi+0x70],xmm7
135
movaps [rdi+0x80],xmm8
136
movaps [rdi+0x90],xmm9
137
movaps [rdi+0xa0],xmm10
138
movaps [rdi+0xb0],xmm11
139
movaps [rdi+0xc0],xmm12
140
movaps [rdi+0xd0],xmm13
141
movaps [rdi+0xe0],xmm14
142
movaps [rdi+0xf0],xmm15
143
add rsi,0x100
144
add rdi,0x100
145
sub rdx,0x100
146
hst jnz .copia_0x100_aliniada
147
mov edx,ecx
148
jmp memoria_copia

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.