Ensamblador

Es importante conocer como funciona la construcción de los programas en sus niveles más bajos. La forma en que se hace el ensamblaje, como funciona el enlazador y como el cargador ejecuta finalmente un programa. Esta vez, el tema está centrado en como el ensamblador hace el trabajo en sus dos indispensables procesos. 

El lenguaje máquina es un lenguaje numérico que es entendido específicamente por el procesador de una computadora. Este consiste de únicamente de números. El lenguaje ensamblador es un componente del sistema y es el conjunto de reglas que se le dan a los diferentes símbolos que se escriben en el código fuente para poder comunicarnos con el ensamblador. Este es el primero que toma nuestras instrucciones para enviarlas a otras fases: manejo de etiquetas y traducción de instrucciones. El ensamblador tiene una relación de uno a uno con el lenguaje máquina: una instrucción de lenguaje ensamblador corresponde a una instrucción de lenguaje máquina. 

El lenguaje ensamblador trabaja en dos fases muy importantes para ensamblar el código fuente con éxito. Primero, se trata del manejo de etiquetas. Son palabras a las que se le asigna un nombre y se convierten en una dirección en memoria que está ligada a un conjunto de  datos o instrucciones que son ejecutadas. Se pueden encontrar en el segmento de datos o segmento de código. 

Al encontrar una etiqueta, el ensamblador toma nota y guarda la dirección donde se encuentra. Por esta razón, no pueden existir dos etiquetas con el mismo nombre ya que el ensamblador no sabría a cuál referirse. 

Las etiquetas pueden ser declaradas globales para que estas puedan ser llamadas desde afuera del archivo de código fuente. 

Ejemplo de la declaración de una etiqueta que suma dos números asignados en código: 

Ejemplo: 

MOV R0, #5 // Mueve a R0 un 5. 

MOV R1, #14 // Mueve a R1 un 14. 

ADD R0, R1 // Suma R0 con R1 y lo almacena en R0

MOV R7, #1 // Llamada de salida al sistema. 

SVC #0 

En caso de querer hacer la función global, se agrega un .global seguido del nombre de la etiqueta. 

El segundo paso, es la traducción de las instrucciones.  

Se convierten las secuencias de instrucciones en ensamblador a bits cercanos a lo que realmente es ejecutado por la máquina. 

Las direcciones de memoria a las que se apuntan son direcciones locales o relativas. Solo válidas dentro del archivo de código objeto que todavía no es ejecutable. Estas sirven únicamente como referencia interna en el archivo que se está generando. 

Luego del ensamble del archivo código objeto intermedio, se pasa al proceso de enlazado que es el encargado de unir los diferentes archivos que componen a un programa. 

En resumidas cuentas, traduce un archivo con sentencias de lenguaje ensamblador a un archivo de instrucciones y datos binarios. Claramente pasa por un proceso de verificación de instrucciones para evitar errores en el ensamblado y crear un archivo código objeto intermedio que pueda ser entendido por el procesador. 

Referencias 

Irvine, K. R. (2002). Assembly Language for Intel-Based Computers (4 Har/Cdr ed.). New Jersey, United States: Prentice Hall. 

EcuRed. (s. f.). Lenguaje ensamblador - EcuRed. Recuperado 8 de noviembre de 2020, de https://www.ecured.cu/Lenguaje_ensamblador 

Lenguaje ensamblador - Algorítmica y Programación. (s. f.). Recuperado 8 de noviembre de 2020, de https://sites.google.com/site/portafoliocarlosmacallums/unidad-i/lenguajeensamblador 

No comments

Comentarios en artículos

No comments

Nobody has submitted a comment yet.