Gcc Inline Assembly

Existen muchos casos donde debemos utilizar en nuestro c�digo (en lenguaje C) un poco de assembly debido a que queremos optimizar algunas lineas un poco m�s "a mano", o sencillamente necesitamos usar instrucciones las cuales no poseen ning�n tipo de funci�n o macro asociada en C (por ejemplo LGDT, LTR, IRET, etc). Es en estos casos en los cuales es necesario recurrir al inline assembly (o ensamblado en linea). Esta herramienta que nos brinda el Gcc no s�lo es muy �til, si no que despu�s de acostumbrarse a su utilizaci�n termina siendo realmente c�moda

.��Por qu� otro texto de Inline Assembly?

Por la simple raz�n que cuando necesite aprender inline assembly considero me costo m�s de lo que hubiera querido. No encontre la cantidad de ejemplos que me hubiera gustado, y sent� que esos textos estaban a otro nivel.

Desde ya que con este humilde texto no pretendo brindar m�s inforci�n de la queda el manual de Gcc, si no que intentar� ser lo mas claro posible, utilizando ejemplos sencillos, que cualquier novato entender�a. Al igual que a varios conocidos que tengo, me costo bastante entender ese t�pico ejemplo de la multiplicaci�n de n�meros via Inline Assembly que aprovecha la arquitectura super-escalar del microprocesador Pentium. Imaginense, mientras buscaba la palabra clobber en el diccionario, intentaba interpretar porque ese "leal" con todos sus agregados tomaba solo 1 ciclo de m�quina. (Para los que no sepan de que estoy hablando, no tienen m�s que ir a otro how to de inline assembly para entenderme :-). Tengan en cuenta que la informaci�n que aqui se brinda es b�sica es decir, en caso de necesitar algo mas avanzado, deber�n recurrir al manual de Stallman.

.�Requisitos b�sicos

Para que este documento puede serle �til usted necesitar�

  • Contar con el Gnu Compiler Collection (gcc)
  • Experiencia programando en Lenguaje C y Assembly
  • Conocimientos b�sicos de sintaxis AT&T

.�Aclaraci�n

Tanto en el manual de GCC como en otros documentos van a encontrar una diferenciaci�n entre el Inline Assembly y lo denominado "Extended" Inline Assembly. El primero es utilizado para insertar c�digo assembly sin que este utilice variables o macros del c�digo escrito en C. En cambio, el "extended" nos brinda la posibilidad de poner en registros, o utilizar en instrucciones del microprocesador valores que se encuentran en variables, o viceversa. Este texto se concentra en el "extended inline assembly" ya que es donde la mayor�a de nosotros nos chocamos un poco al comenzar. Vale tambi�n aclarar que todos los ejemplos aqu� mostrados son aptos s�lo para la arquitectura IA32 (386 o superior).

.�Copyright y reproducci�n

Este documento pertenece a Martin Candurra (astor) . 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. (A fin de motivar mi Ego y la escritura de otro How to).

COMPARTE ESTE ARTÍCULO

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