next up previous
Siguiente: El lenguaje de ensamblado Superior: GNU as como ensamblador Anterior: GNU as como ensamblador


Introducción: ¿por qué lenguaje de ensamble?

Antes que nada, seamos correctos: ensamble y no ensamblador. El ensamblador es el programa que se encarga de traducir el lenguaje de ensamble a código binario, que puede ya ser ejecutado por el microprocesador. El lenguaje en sí se denomina lenguaje de ensamble o de ensamblado. En el resto del seminario se asumirá Linux cuando se hable de Sistema Operativo (SO) y de i386 cuando nos refiramos a la arquitectura o a la plataforma de desarrollo, así que el término i386 identificará tanto al 80386 como al 80486, el Pentium en todas sus variedades, la familia AMD K5/K6/Athlon, los Cyrix, etc...

Sigamos ahora con la cuestión más importante en este asunto del ensamble: ¿por qué usar lenguaje de ensamble en Linux si tenemos tal variedad de lenguajes de alto nivel?. Pues bien, a este respecto siempre he defendido la postura de no programar jamás en ensamble en Linux. Ni en ningún otro Sistema Operativo, y menos aún con los microprocesadores actuales, que con sus arquitecturas superescalares, sus penalizaciones por el vaciado de sus pipelines y demás lindezas hacen que ese código que con tanto primor intentábamos optimizar en ensamble corre más lento que el generado por el compilador. En micros con arquitectura load-store el ensamble resulta incluso contraproducente.

Ciertamente no es fácil para una persona que acaba de introducirse en el mundo del lenguaje de ensamblado escribir código para un 8086, aunque tras un tiempo no presente absolutamente ninguna dificultad. Otro asunto bien distinto es escribir código en 32 bits, dónde los direccionamientos de memoria son mucho más flexibles y dónde nos encontramos ya con los modos de funcionamiento del i386: el modo real, el modo protegido y el modo V86. En mi opinión, sólo se debería programar en ensamble en Linux en los siguientes casos:

Así y todo, teniendo en cuenta que el GNU cc soporta lenguaje de ensamble empotrado, no es realmente necesario desarrollar directamente en ensamble la mayoría de las veces, sino que se puede usar, por ejemplo, C.

Por fin, cuando uno ya domina las idiosincrasias de cada modo, el funcionamiento del endiablado microprocesador, la confusa sintaxis de códigos de operación y otras lindezas inherentes a la programación en ensamble, entonces surge la gran pregunta: ¿qué hago ahora en Linux?


next up previous
Siguiente: El lenguaje de ensamblado Superior: GNU as como ensamblador Anterior: GNU as como ensamblador

Download this document: [src.tar.gz][ps.gz][html.tar.gz][dvi.gz]

Congreso HispaLinux 2000