He intentado obtener un buen control del lenguaje de ensamblaje x86 y me preguntaba si había un equivalente rápido y corto de movl $1, %eax
. Fue entonces cuando pensé que una lista de modismos utilizados con frecuencia en el idioma tal vez sería una buena idea.x86 modismos de ensamblaje
Esto podría incluir el uso preferido de xorl %eax, %eax
en contraposición a movl $0, %eax
, o testl %eax, %eax
contra cmpl $0, %eax
.
¡Oh, y amablemente publica un ejemplo por publicación!
'movl $ 1,% eax' es bastante rápido y corto. En algunos procesadores, 'xorl% eax,% eax' es realmente más lento que' movl $ 0,% eax'. En otros, 'incl% eax' es más lento que' addl $ 1,% eax'. Si se toma la molestia de escribir una asamblea en 2010, debe saber para qué arquitectura está escribiendo y seleccionar su "dialecto" (para mantener la metáfora lingüística) en consecuencia. –
@Pascal Cuoq, ¿podría explicar qué factores afectan este tipo de diferencia en el rendimiento? Estoy especialmente desconcertado por 'incl% eax' que es más lento que' addl $ 1,% eax'. Además, si pudiera indicarme algún enlace que detalle este tipo de comportamiento, ¡le estaré agradecido! – susmits
Para todas las arquitecturas x86 en 2010 xor eax, eax es más rápido o equivalente, en cualquier caso es más corto. Eche un vistazo a http://stackoverflow.com/questions/1396527/any-reason-to-do-a-xor-eax-eax/1396552#1396552. Esto es más o menos desde los días de 486. – hirschhornsalz