4 - Varios


Tutorial creado por Martin Candurra . Extraido de: http://es.tldp.org/Manuales-LuCAS/doc-gcc-inline/doc-gcc-inline-html/
24 Febrero 2006
En esta sección intento adjuntar algunos cometarios que considero importantes.

===== Modificadores '\n' y '\t' =====

Probablemente si ven código fuente que usa ensamblado en línea como Linux o ##http://routix.sourceforge.net/ 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.

Autor y licencia de 'Inline Assembly - How to'

Puede ser copiado o reproducido en forma total o parcial, lo único que pido es que se mantenga el copyright del autor, y que se me informe de la utilización, con el fin de que pueda ver el contexto en el que es usado y la utilidad que le encontraron.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.