El documento describe las etapas de compilación, ensamblado y enlace de un programa. El ensamblador genera módulos objeto que deben ser enlazados por el enlazador para resolver referencias externas y formar un módulo de carga ejecutable. El enlazador también genera un mapa de memoria que indica dónde se cargarán los módulos en la memoria.
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Ensamblado, enlazado y carga de módulos
1.
2.
3. Al construir un programa algunos de sus módulos
pueden colocarse en el mismo módulo fuente y
ensamblarse juntos, otros pueden estar en
módulos diferentes y ser ensamblados
separadamente.
La tarea principal del enlazador es resolverLa tarea principal del enlazador es resolver
referencias externas llevadas a cabo la etapa del
proceso de traducción, enlazando los módulos
ensamblados para formar un programa completo.
4. En cualquier caso, los módulos objeto
resultantes, algunos de los cuales pueden
estar agrupados en librerías, deben ser
enlazados para formar el módulo de carga,
antes de que se pueda ejecutar el programa.antes de que se pueda ejecutar el programa.
Además de dar como salida el módulo de
carga, el linker o enlazador o ligador imprime
un mapa de memoria que indica donde serán
cargados los módulos objeto en la memoria.
5. El ensamblador no puede generar completa la TablaEl ensamblador no puede generar completa la TablaEl ensamblador no puede generar completa la TablaEl ensamblador no puede generar completa la Tabla
de Símbolos y se produce un error de programación.de Símbolos y se produce un error de programación.de Símbolos y se produce un error de programación.de Símbolos y se produce un error de programación.
Para evitarlo hay que usar lasPara evitarlo hay que usar lasPara evitarlo hay que usar lasPara evitarlo hay que usar las pseudopseudopseudopseudo----instruccionesinstruccionesinstruccionesinstrucciones
EXPORTEXPORTEXPORTEXPORT eeee IMPORTIMPORTIMPORTIMPORT ....
EXPORTEXPORTEXPORTEXPORTEXPORTEXPORTEXPORTEXPORT ....---- Se especifican todos los nombres
simbólicos de un módulo que serán referenciados porsimbólicos de un módulo que serán referenciados por
otros módulos.
IMPORTIMPORTIMPORTIMPORTIMPORTIMPORTIMPORTIMPORT ....- Se identifican todas las referencias
externas de un módulo:
Permite reconocer una referencia externa
No se puede completar la Tabla de Símbolos
El enlazador resolverá las referencias externas.
6. Tabla de Símbolos ImportadosTabla de Símbolos ImportadosTabla de Símbolos ImportadosTabla de Símbolos Importados (TSI)(TSI)(TSI)(TSI)
◦ Una anotación por cada aparición de un símbolo
importado
◦ Nombre simbólico
◦ Dirección relativa dentro del módulo
◦ Tipo
Tabla de Símbolos ExportadosTabla de Símbolos ExportadosTabla de Símbolos ExportadosTabla de Símbolos Exportados (TSE)(TSE)(TSE)(TSE)
◦ Nombre simbólico
◦ Valor de la dirección
◦ Tipo
7. GenerarGenerarGenerarGenerar todas las direcciones absolutastodas las direcciones absolutastodas las direcciones absolutastodas las direcciones absolutas
ProcederProcederProcederProceder a la reubicación del módulo,a la reubicación del módulo,a la reubicación del módulo,a la reubicación del módulo,
conocida la dirección inicialconocida la dirección inicialconocida la dirección inicialconocida la dirección inicial
CopiarCopiarCopiarCopiar todos los módulos en un solo bloquetodos los módulos en un solo bloquetodos los módulos en un solo bloquetodos los módulos en un solo bloque
ejecutableejecutableejecutableejecutableejecutableejecutableejecutableejecutable
8. GenerarGenerarGenerarGenerar todas las direcciones absolutas:todas las direcciones absolutas:todas las direcciones absolutas:todas las direcciones absolutas:
◦ Para determinar la dirección de comienzo del
módulo:
Existe una sentencia ORG y es un módulo absolutoExiste una sentencia ORG y es un módulo absoluto
Indicación explícita del usuario al enlazador
Dirección final del módulo anterior
9. ProcederProcederProcederProceder a la reubicación del módulo,a la reubicación del módulo,a la reubicación del módulo,a la reubicación del módulo,
conocida la dirección inicial:conocida la dirección inicial:conocida la dirección inicial:conocida la dirección inicial:
◦ Una vez realizada la reubicación de todos los módulos, se
conoce la dirección absoluta de todos los símbolos
exportados. Para resolver las referencias externas se genera
una TTTTTTTTabla GGGGGGGGlobal de Símbolos EEEEEEEExportados (TTTTTTTTGGGGGGGGSSSSSSSSEEEEEEEE):
◦ Uniendo todas las TSE◦ Uniendo todas las TSE
La TTTTTTTTGGGGGGGGSSSSSSSSEEEEEEEE debe estar bien estructurada pues se realizarán numerosas
búsquedas sobre ella
Hay que comprobar que no existen referencias externas no resueltas
Para resolver las referencias externas de cada módulo se toman las
entradas de su TSI y se busca su dirección absoluta en la TTTTTTTTGGGGGGGGSSSSSSSSEEEEEEEE; si no
existe se da un error.
10. CopiarCopiarCopiarCopiar todos los módulos en un solo bloquetodos los módulos en un solo bloquetodos los módulos en un solo bloquetodos los módulos en un solo bloque
ejecutable.ejecutable.ejecutable.ejecutable.
◦ Debe ser manejable por el cargador para proceder a
su ejecución; generalmente, se crea un nuevo
fichero con extensión de ejecutable (.EXE, .COM,
etc.).etc.).
◦ .EXE, viene de la palabra executable
◦ .COM, viene de la palabra COMMAND
11. Es un programa especial, parte del sistema
operativo que tiene como propósito colocar
en la memoria las instrucciones y datos de un
programa o información codificada en
lenguaje máquina, para que entonces lalenguaje máquina, para que entonces la
computadora pueda procesarla. Un cargador
es un programa que realiza la función de
carga, pero muchos cargadores también
incluyen relocalización y ligado.
12. Su objetivo es leer un fichero ejecutable almacenado
en memoria auxiliar (DD, Cinta, etc.) y traspasarlo a
la memoria principal para su ejecución. Debe ser
compatible con el formato de salida generado por el
enlazador.
Para poder cargar los programas en diferentes zonasPara poder cargar los programas en diferentes zonas
de memoria, el cargador reubicador necesita de una
Tabla General de Direcciones Absoluta generada por
el enlazador combinando la TDA y la TSI de los
módulos.
Para que un programa se ejecute, se necesita que el
contador de programa apunte a la primera
instrucción ejecutable.
13. Ingresa al foro de la Unidad. Descargar e instalar
TASM.
Crear un programa que imprima por pantalla Hola
Mundo.
Ensamblar el programa Hola Mundo. Obteniendo el
archivo OBJ.archivo OBJ.
Enlazar el archivo OBJ, para obtener el archivo
Ejecutable .EXE
Ejecutar el Archivo .EXE