Articulo íntimamente relacionado con el curso de ensamblador
Este artículo proviene de una mejora del memcmp en ensamblador
Hola a todos,
Hay bastantes ocasiones en que usamos el memcmp solamente para saber si dos trozos de memoria son iguales o diferentes , sin importarnos demasiado en que bit se diferencian ni ningún tipo de información adicional.
Es por ello que he desarrollado esta nueva funcionalidad memDif basándome en mi implementación en asm del memcmp.
Probadlo a ver como os va, la filosofia es la misma que la del memcmp: 0- los dos trozos de memoria son iguales, otro valor- son diferentes.
A nivel de rendimiento va el doble de rápido que el memcmp de C estándar (que no es poco) y espero que os pueda servir en vuestras aplicaciones cuyo rendimiento dependa de la comparación de zonas de memoria.
Aquí os dejo el código:
char LP_memDif( const void * ptr1, const void * ptr2, size_t num )
{
__asm
{
mov ecx,num
mov esi,ptr1
mov edi,ptr2
test ecx,3
jz multiplo4
xor eax,eax
xor ebx,ebx
no_multiplo:
dec ecx
mov al,[esi]
mov bl,[edi]
xor eax,ebx
jnz fin
inc esi
inc edi
and ecx,ecx
jz fin
test ecx,3
jnz no_multiplo
multiplo4:
shr ecx,2
bucle:
mov eax,[esi]
mov ebx,[edi]
add esi,4
add edi,4
xor eax,ebx
jnz fin
loop bucle
fin:
leave
ret
}
}
Espero que os haya gustado.
Nos vemos
Blog de programación enfocado a estudiantes principiantes de C/C++ en español. Dispone de cursos de todos los niveles y para multitud de usos.
Entradas populares
-
Una pregunta que me hacen en muchas ocasiones es ¿¿qué significa %2?? La respuesta tiene dos acepciones en función de si lo estamos u...
-
<< Ejemplo anterior Artículos Relacionados Ejemplo siguiente >> Hola a todos, ASCII Art es el hecho de hacer di...
-
Articulo perteneciente a : Referencias de programación Hola a todos Os pongo una aportación que a más de uno le irá bien, un resumen de ...
-
Capítulo perteneciente al tutorial de opengl desde cero Hola a todos, Este capítulo tal vez es de lo más complicados de la teoría necesa...
-
<< Ejemplo anterior Artículos Relacionados Ejemplo siguiente >> Hola a todos, El ejercicio de hoy se basa en c...
-
<< Capítulo anterior Artículos Relacionados Capítulo siguiente >> Hola a todos, Este tutorial intenta ser e...
-
<< Capítulo anterior Artículos Relacionados Capítulo siguiente >> Hola a todos... Un compañero vuestro ha...
-
Hola a todos... He aquí la primera entrega "Como crear tu propio motor de videojuegos y no morir en el intento". Antes que nada ...
-
Hola a todos Ya que he recibido un par de mails pidiéndome información sobre SEO, os adjunto unos cuantos trucos que he ido aprendiendo du...
-
<< Capítulo anterior Artículos Relacionados Capítulo siguiente >> El c apitulo de hoy trata sobre las instrucc...
0 comentarios :
Publicar un comentario