Gcc Inline Assembly

En esta seccin intento adjuntar algunos comentarios que considero importantes.

.Modificadores '\n' y '\t'

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

Pueden hacer la prueba de compilar

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

            o bien

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

Hganlo 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 compilacin no debe alterar el cdigo escrito por ustedes en el inline assembly. Si no lo hacen, y slo escriben un __asm__ el Gcc intentar optimizar todo el cdigo con el fin de lograr mayor eficiencia, lo cul puede llegar a ir contra nuestras intenciones. Miren un poco el cdigo fuente de Linux para ver que tanto Linus Torvalds utiliz a ese modificador.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
SIGUIENTE ARTÍCULO

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.