En esta secci�n intento adjuntar algunos cometarios que considero importantes.
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.
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.