Linkers


Introducción
Los linkers o enlazadores también reciben el nombre de link editor. Su nombre se da ya que la función es editar el archivo de objetos, dado que compila y ensambla (assemble) cada procedimiento independientemente, resuelve las etiquetas indefinidas y genera un archivo ejecutable que puede entender nuestro computador. El linker es realmente útil ya que es más rápido el parchar código que recompilar y reensamblar cada vez que sea necesario. El linker también asigna la posición de memoria que ocupará cada módulo del archivo ejecutable.



                                                                            ¿Qué hacen?
Un enlazador vincula un grupo de archivos de objetos (archivos .o) en un programa en binario, en otras palabras traduce un lenguaje de programación de alto nivel en un lenguaje de máquina que entiende nuestro sistema.



¿Como funcionan?

Para entender un poco más, si tenemos un archivo en .c al ejecutar hay distintos factores que se involucran, primero está el reprocesador de C (cpp) el cual genera un archivo inmediato, cuando el compilador de C lee este programa se genera un archivo .s, el cual es un código de ensamblador.
Assembler lee este archivo .s y luego genera un archivo de objetos transladable .o (relocated object file) donde finalmente es procesado por el linker para crear un ejecutable que puede ser cargado en memoria.

Proceso de ensamblaje

El proceso de ensamble o de enlace cuenta con 4 pasos: 

1. Utiliza un editor de texto para crear un archivo de código fuente.
2. El ensamblador lee el código fuente y lo traduce a lenguaje de máquina. Si hay un error, se devuelve al paso anterior, lo corrige y continúa.
3. El enlazador lee el código fuente y verifica si el programa tiene alguna llamada de procedimientos en la biblioteca de enlace. Si lo encuentra, copia el procedimiento requerido y lo combina en el código fuente, produciendo el archivo ejecutable. 
4. El loader del sistema operativo lee el archivo ejecutable producido, lo carga a la memoria y lo envia a la CPU hacia la dirección inicial del programa, para que se ejecute. 


¿Por qué el rendimiento del enlazador y del proceso de enlace es importante?

Un computador no lee de la misma manera un código realizado en un lenguaje de alto nivel, la función del enlazador que se basa en editar este código a un lenguaje de máquina y sea ejecutado de manera exitosa es la razón de su importancia, además de eso es mucho más rápido parchear código que recompilar y volver a armar.

¿Cual es su relación con la memoria?

El linker determina el lugar que ocupará cada módulo del archivo ejecutable en la memoria, una vez hace esto todas las referencias se reubican para mostrar su verdadera posición.El linker y el loader van de la mano para poder llegar a la memoria y ejecutar el archivo del linker.


Proceso de compilación

Un programa de lenguaje de alto nivel se compila primero en un programa en lenguaje ensamblador y luego ensamblado (assembler) en un módulo de objeto en lenguaje máquina. El enlazador (linker) combina múltiples módulos con rutinas de librerias para resolver todas las referencias. El cargador (loader) coloca la máquina código en las ubicaciones de memoria adecuadas para su ejecución por el procesador.
Las librerías de enlazador dinámicas se convierten en parte del código ejecutable. Si una nueva versión se lanza, la librería corrige errores o admite nuevos dispositivos de hardware, el programa vinculado estáticamente sigue usando la versión anterior.


¿Quieres profundizar más?

A continuación hay unos enlaces que te pueden interesar, haz click en el que te interese:










Referencias

[1] Patterson, D. A., & Hennessy, J. L. (2016). Computer Organization and Design ARM Edition: The Hardware Software Interface. Morgan kaufmann.

[2] Diaz, I. (2017, 11 julio). ¿Cómo funciona un linker? .Recuperado de https://s3lab.deusto.es/como-funciona-linker-1/

[3] ENLAZADORES - INFORMÁTICA ACTUAL Y SENCILLA. (s. f.). Recuperado de https://sites.google.com/site/informaticaactualysencilla/software/enlazadores

[4] C Language - El enlazador | c Tutorial. (s. f.). Recuperado de https://riptutorial.com/es/c/example/4360/el-enlazador

Comentarios

  1. La información presentada es clara y completa para entender el tema. Además, la presentación, diseño y organización del blog son llamativos.

    ResponderEliminar
  2. El diseño y distribución del blog resulta agradable; en cuanto al contenido, la información es precisa lo que facilita el entendimiento del tema

    ResponderEliminar
  3. Considero que tiene un diseño bastante limpio, se nota el manejo de un buen lenguaje, utiliza notación bastante precisa al hablar del tema, excelente trabajo.

    ResponderEliminar

Publicar un comentario