Ensamblador As
Introducción al ensamblador as
Introducción
El GNU as es en realidad una familia de ensambladores para distintas arquitecturas. Cada versión tiene numerosas cosas en común con las restantes como son el formato de los ficheros objeto, la mayoría de las directivas de ensamblado y su sintaxis. El as está principalmente previsto para ensamblar la salida delcompilador de GNU (gcc) para ser usada por el linker ld. A diferencia de los primeros ensambladores, as está diseñado para ensamblar de una sola pasada, lo que impone ciertas diferencias en la directiva org. Aquí se expondrán las características más destacadas con las particularizaciones para las familias 68HC11 y 68HC12.
Sintaxis
Espacios Comentarios Se usan para separar símbolos. Salvodentro de cadenas de caracteres, varios espacios son equivalentes a 1. Se pueden utilizar los de C /* hasta */ ó el # hasta final de línea, siempre y cuando no sea indicación de dato inmediato. En nuestro caso también se puede utilizar ; para indicar comentario hasta final de línea. formados por letras, números y símbolos '_.$'. Las mayúsculas son significativas. No tienen límite en el tamaño y sondelimitados por caracteres no válidos en los símbolos. cada sentencia termina con el carácter de nueva línea (\n). La última sentencia debe tener también carácter de nueva línea. Las líneas vacías, que pueden contener espacios, son ignoradas. Las sentencias pueden empezar con cero o más etiquetas, seguida, opcionalmente, de un símbolo que determina el tipo de la sentencia. Si el símbolo comienza porun punto, la sentencia es una directiva del ensamblador. Si el símbolo comienza por una letra se trata de una instrucción en lenguaje ensamblador. las etiquetas son símbolos seguidos por dos puntos (:). Pueden existir espacios antes del símbolo o después de los dos puntos, pero no entre el símbolo y los dos puntos.
Símbolos
Sentencias
Etiquetas
Constantes stringse escriben entrecomillas dobles (“). Se pueden utilizar los caracteres de escape de C. Constantes carácter un sólo carácter se puede poner como una comilla simple seguida del carácter. También se pueden utilizar los caracteres de escape para ese único carácter. Constantes enteras Se puede especificar la base mediante los caracteres iniciales: 0b ó 0B (cero be) para la base binaria, 0 (cero) para la octal, 0x ó 0X (ceroAlberto Hamilton Castro 2006-12-20 17:37 Página 1 de 6
LEYFA: Introducción al ensamblador as
equis) para la hexadecimal y en otro caso se supone decimal.
Secciones y reubicación
Las secciones son rangos de direcciones continuas que son tratadas de una manera particular. Esos bloques de direcciones pueden ser reubicados por le linker a su dirección final pero su estructura interna, elorden de sus bytes, permanece constante. Los ficheros objetos generados por as constan de al menos tres secciones: text, data y bss (que pueden estar vacías). Además as puede generar otras secciones definidas mediante directivas .section. La sección text está destinada a contener el código del programa y las constantes. Se debe considerar una sección inalterable en tiempo de ejecución (puede sercompartida por varios procesos). La sección data contiene los valores iniciales de las variables inicializadas. Puede ser alterada en tiempo de ejecución (cada proceso debe tener su propia copia). La sección bss contiene todos sus bytes a cero al comenzar la ejecución. Se utiliza para almacenar las variables no inicializadas. Con esto se evita tener que almacenar en la sección data bytes a 0. Otrasección necesaria en el caso de la familia 68HC12 es la vectores de interrupción.
.vectors
donde se situará la tabla de
Símbolos locales
Facilitan a los programadores (y compiladores) el uso nombres temporales. Son etiquetas únicas en el fichero fuente con una notación sencilla. Se definen como N: donde N es un número entero positivo. Para hacer referencia al al etiqueta anterior más...
Regístrate para leer el documento completo.