ce code est memcpy() sur les plates-formes x86. mais j'ai besoin de memcpy() sur la plate-forme x64.convertir le code memcpy() de la plate-forme x86 en x64
_asm {
mov esi, src
mov edi, dest
mov ecx, nbytes
shr ecx, 6 // 64 bytes per iteration
loop1:
movq mm1, 0[ESI] // Read in source data
movq mm2, 8[ESI]
movq mm3, 16[ESI]
movq mm4, 24[ESI]
movq mm5, 32[ESI]
movq mm6, 40[ESI]
movq mm7, 48[ESI]
movq mm0, 56[ESI]
movq 0[EDI], mm1 // Write to destination
movq 8[EDI], mm2
movq 16[EDI], mm3
movq 24[EDI], mm4
movq 32[EDI], mm5
movq 40[EDI], mm6
movq 48[EDI], mm7
movq 56[EDI], mm0
add esi, 64
add edi, 64
dec ecx
jnz loop1
emms
}
Je n'ai aucune connaissance du langage d'assemblage x64. comment convertir ce code de x86 en x64?
Avez-vous des raisons de penser que vous feriez mieux que l'implémentation dans 'libc'? N'hésitez pas à regarder [ce que les autres ont fait] (https://android.googlesource.com/platform/bionic/+/master/libc/arch-x86_64/string/sse2-memcpy-slm.S). – Michael
J'ai de bonnes raisons de penser que c'est beaucoup plus lent qu'une bonne implémentation, car elle utilise des registres MMX. – gnasher729
Je soupçonne fortement que si vous comprenez l'assemblage x86 vous pouvez très facilement traduire cela en X64 en faisant peut-être une recherche google. –