Enlazador

El enlazador es un programa que se encarga de tomar los objetos generados en los primeros pasos del proceso de compilación, la información de todos los recursos necesarios es decir bibliotecas además de quitar aquellos recursos que no se necesitan y enlaza el código objeto (generado en el ensamblador) con su o sus bibliotecas con lo que finalmente se producirá un fichero o archivo ejecutable que pasara con la siguiente herramienta que es el cargador. En el caso de los programas que son enlazados dinámicamente el enlace entre el programa ejecutable y las bibliotecas se realiza en el tiempo de carga o en el tiempo de ejecución del programa.

En otras palabras, el enlazador es la herramienta que se encarga de combinar los diferentes archivos que componen a un programa.

Anteriormente el proceso de enlazamiento se realizaba de manera manual por los programadores ahora en la actualidad los sistemas modernos realizan el enlazamiento de manera automática por los enlazadores.

 

 

El enlazador realiza tres tareas principales las cuales son:

·         Busca en las librerías de programas las rutinas usadas por el programa: Estas vienen incluidas dentro del ambiente de compilación que se utiliza. El lenguaje ensamblador que se utiliza viene con librerías que desarrollan funciones o métodos que son usuales de utilizar: leer información del teclado. Se hacen referencia a las librerías (import, include). Si no existe la librería, se busca en otros archivos que se encuentran dentro del mismo directorio o ruta específica para librerías.

 

·         Determina las ubicaciones de memoria de los componentes y los ajusta como referencias absolutas: Son creadas en el momento del enlazamiento porque se toman la tabla de etiquetas del programa1, luego del programa2 ( o librería ). Si ambas tienen varias etiquetas en las mismas direcciones, se mantienen las del primer programa y las del segundo se corren n bytes, n siendo el tamaño del programa1.

 

·         Resuelve referencias entre archivos: La unión de la llamada a componentes externos.

 

Otra función del enlazador es crear el archivo ejecutable. No todo código fuente es ejecutable. O no todo código fuente por sí solo se convierte en elemento ejecutable. Necesita un segundo archivo que lo incluya o importe como librería y este llame algunas funciones del primero y haga que se ejecute.

Errores comunes de enlazamiento

·         Al enlazar programas se puede existir el error de que alguna de las etiquetas tenga el mismo nombre y esto ocasiona que el enlazador no pueda determinar si se usa la del archivo local o la del archivo externo que se incluye.

·         Al hacer el llamado a una etiqueta que no se encuentre en ningún archivo de código fuente que se esta uniendo esto debido a que en el momento de ensamblaje de los archivos todas las etiquetas ya deben de haberse definido este error ocurre por lo general ya que en el proceso de ensamblaje se puede dejar etiquetas sin definir.

·         El enlazador genera un error si no encuentra el punto de inicio del programa, por ejemplo: en ensamblador ARM el enlazador buscara la etiqueta que da inicio al programa la cual en esta ocasión es _start si esta etiqueta no se encuentra dará un error de enlazamiento.

 

Estructura de un enlazador

·         Enlazador de una pasada: Durante el procedimiento de enlace almacenan todo o parte del contenido de los archivos de entrada, en memoria o en el disco y luego en la ejecución lee ese material.

 

·         Enlazador de dos posadas: En la primera pasada el enlazador toma todos los códigos objetos creados en el proceso de compilación y todas las librerías necesarias para crear el ejecutable. En esta primera etapa todos los códigos objetos que van a formar parte del ejecutable cuentan una serie de segmentos y una tabla de símbolos.

A todos estos datos de entrada el enlazador busca el tamaño de sus segmentos, las definiciones y referencias de todos los símbolos y con esta información crear una única tabla en la que se listan todos los segmentos definidos en los archivos de entrada. También crea una tabla única de símbolos que contiene tanto los símbolos importados como los exportados.

Tipos de enlazador

·         Enlazador Dinámico: Son aquellos enlazadores que le permiten a un programa en ejecución agregar, quitar, reemplazar o realojar los módulos de objeto dentro de la dirección de memoria durante su ejecución.

·         Enlazador estático: Son aquellos enlazadores donde el proceso de enlazamiento solo se lleva a cabo una vez cuando se produce el archivo ejecutable el cual es cargado directamente en memoria cuando es ejecutado. Este enlazador es incapaz de cambiar su estructura durante su ejecución.

Referencias

·         Zheng, R., & Díaz, J. (2018, 14 julio). Ensamblador y enlazador. Slideshare. Obtenido de: https://es.slideshare.net/RickyZhengHu/ensamblador-y-enlazador .

·         Colaboradores de Wikipedia. (2020g, noviembre 10). Enlazador. Wikipedia, la enciclopedia libre. Obtenido de:  https://es.wikipedia.org/wiki/Enlazador#:%7E:text=Un%20enlazador%20(en%20ingl%C3%A9s%2C%20linker,lo%20que%20finalmente%20produce%20un

·         I. (2007). Lenguaje Ensamblador Para Computadoras Basadas En Intel (5.a ed.). Pearson Educación.

No comments

Comentarios en artículos

No comments

Nobody has submitted a comment yet.