Gcc Inline Assembly

Existen muchos casos donde debemos utilizar en nuestro cdigo (en lenguaje C) un poco de assembly debido a que queremos optimizar algunas lineas un poco ms "a mano", o sencillamente necesitamos usar instrucciones las cuales no poseen ningn tipo de funcin 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 slo es muy til, si no que despus de acostumbrarse a su utilizacin termina siendo realmente cmoda

.Por qu otro texto de Inline Assembly?

Por la simple razn que cuando necesite aprender inline assembly considero me costo ms 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 ms inforcin de la queda el manual de Gcc, si no que intentar ser lo mas claro posible, utilizando ejemplos sencillos, que cualquier novato entendera. Al igual que a varios conocidos que tengo, me costo bastante entender ese tpico ejemplo de la multiplicacin de nmeros 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 mquina. (Para los que no sepan de que estoy hablando, no tienen ms que ir a otro how to de inline assembly para entenderme :-). Tengan en cuenta que la informacin que aqui se brinda es bsica es decir, en caso de necesitar algo mas avanzado, debern recurrir al manual de Stallman.

.Requisitos bsicos

Para que este documento puede serle til usted necesitar

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

.Aclaracin

Tanto en el manual de GCC como en otros documentos van a encontrar una diferenciacin entre el Inline Assembly y lo denominado "Extended" Inline Assembly. El primero es utilizado para insertar cdigo assembly sin que este utilice variables o macros del cdigo 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 mayora de nosotros nos chocamos un poco al comenzar. Vale tambin aclarar que todos los ejemplos aqu mostrados son aptos slo para la arquitectura IA32 (386 o superior).

.Copyright y reproduccin

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 utilizacin, 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

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.