Gcc Inline Assembly

En esta secci�n intento adjuntar algunos comentarios que considero importantes.

.�Modificadores '\n' y '\t'

Probablemente si ven c�digo fuente que usa ensamblado en l�nea como Linux o Routix (�por qu� no?) encuentren entre instrucci�n e instrucci�n un modificador '\n' o '\t'. Estos no son m�s que los famosos modificadores de formato utilizados en C. El caracter '\t' tabula 8 espacios mientras que '\n' avanza hacia una nueva linea. Que funci�n cumplen aqu� ? Sencillamente ayudan a generar un c�digo m�s claro.

Pueden hacer la prueba de compilar

    __asm__ ("movl %0, %%cr3;nop" : : "r" (puerto) );

            o bien

    __asm__ ("movl %0, %%cr3\n\tnop" : : "r" (puerto) );

H�ganlo y comparen los resultados.

.��Qu� es volatile?

En muchos casos pueden haber encontrado luego de un __asm__ al modificador __volatile__ . Este tiene por objeto decirle al Gcc que sea cual fuera el modo de compilaci�n no debe alterar el c�digo escrito por ustedes en el inline assembly. Si no lo hacen, y s�lo escriben un __asm__ el Gcc intentar� optimizar todo el c�digo con el fin de lograr mayor eficiencia, lo cu�l puede llegar a ir contra nuestras intenciones. Miren un poco el c�digo fuente de Linux para ver que tanto Linus Torvalds utiliz� a ese modificador.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO