1.5 Procedimiento Ensamble Enlace y Ejecución

Anuncio
Cruz García Karen Ilzette
González Mendoza María del Rosario
Hernández Castañeda Alan Eliseo
Sánchez Quiroz Sheila Mariana
Varela García Tania Violeta


Un ensamblador es el programa que
convierte un listado de código fuente en
código objeto, es decir, lenguaje máquina
(el que finalmente interpretará el
procesador) .
El código fuente es un fichero que contiene
la secuencia de instrucciones en lenguaje
ensamblador que forma el programa, así
como ciertas directivas o comandos para
el propio ensamblador, que ha sido creado
utilizando un editor de texto.

El código objeto consta del código en
lenguaje máquina y de la información
necesaria para enlazarlo con otros
módulos objeto.
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.
 Si se ensamblan por separado, el módulo
principal, que contiene la primera instrucción
que se va a ejecutar, debe acabar con una
sentencia END que indique el punto de
entrada al programa, y cada uno de los otros
módulos deben terminar con una sentencia
END sin ningún operando.



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.
Además de dar como salida el módulo de
carga, el linker o enlazador imprime un
mapa de memoria que indica donde serán
cargados los módulos objeto en la
memoria.
Después de crearse el módulo de carga,
éste es cargado por el cargador en la
memoria del ordenador y comienza la
ejecución.
 Independientemente del sistema, la
combinación linker/cargador debe
crear todos los segmentos y
asignaciones de dirección necesarios
para permitirle al programa funcionar
correctamente.






Encontrar los módulos que van a ser
enlazados
Construir el módulo de carga asignando las
posiciones de todos los segmentos de
todos los módulos objeto que se están
enlazando.
Rellenar todos los desplazamientos de
segmento que no pudieron ser
determinados por el ensamblador.
Rellenar todas las direcciones de los
segmentos.
Cargar el programa para su ejecución.
1.6 ENTORNO DE PROGRAMACIÓN DE LENGUAJE
ENSAMBLADOR
A partir de los fuentes obtenidos de un editor, los fuentes
se envían al Ensamblador el cual,
traduce los nemotécnicos del lenguaje ensamblador al
código objeto de la maquina.
Y crea un fichero especial de listado de
variables y procedimientos, el Linker1 toma
todos los ficheros objeto y con la información
sobre las direcciones de memoria para las
variables y procedimientos que contiene el
fichero Listado, crea el fichero ejecutable final.
 El proceso de ensamblado bastan con 2 pasos
para determinar todas las direcciones,
ejemplo:
Jmp2 etiq
…
etiq:

El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un
archivo objeto ejecutable consta de varias etapas. A continuación se describen las
etapas correspondientes al conjunto de herramientas de compilación gcc 3 que permite
traducir programas escritos en el lenguaje de programación C.
Usaremos un programa fuente denominado ejemplo escrito en lenguaje de
programación C, creado en un editor de texto y guardado como ejemplo.c:
#include <stdio.h>
int main()
{
printf("programa de ejemplo\n");
return 0;
}
La traducción de este programa fuente a un archivo objeto ejecutable se
realiza de la siguiente manera:
ejemplo.c
El compilador lee el archivo ejemplo.c y lo traduce al archivo objeto
ejecutable ejemplo. Esto se realiza a través de las cuatro etapas
mencionadas.
En la primera etapa el pre-procesador (cpp) modifica el programa
original de acuerdo a lo indicado por las directivas que comienzan
con el caracter #. En este caso la línea #include <stdio.h> le indica al
pre-procesador que debe leer el archivo de encabezado stdio.h e
insertar su contenido en el texto del programa. La salida de esta
etapa es el archivo intermedio ejemplo.i
Luego, ejemplo.i entra en la siguiente etapa, el compilador (ccl) el cual traduce el
programa a lenguaje ensamblador. La salida de esta etapa es el archivo ejemplo.s
En la siguiente etapa, el ensamblador (as) lee el archivo ejemplo.s y lo traduce en
instrucciones de lenguaje de máquina generando un archivo objeto relocalizable el cual
se guarda como ejemplo.o
Luego el enlazador (ld) enlaza ese archivo objeto con otros archivos asociados a él, en
este caso ya que el programa llama una biblioteca (la función printf forma parte de la
biblioteca estándar de entrada/salida) el enlazador se encarga de enlazar el programa
con esta biblioteca en particular. Su salida es un archivo objeto ejecutable llamado
ejemplo
BIBLIOGRAFIA
Lenguaje ensamblador y programación para IBM PC y compatibles
Peter Abel Pearson Educación, 1996 - 594 páginas
http://learnassembler.com/entorno.html
http://www.jmpingenieros.es/articulo.asp?notid=20
http://translate.google.com.mx/translate?hl=es&sl=en&u=http://gcc.gnu.o
rg/&ei=fn1
TYD3BYTC0QHEvP3LAw&sa=X&oi=translate&ct=result&resnum=4&ved=0CE
EQ7gEwAw&prev=/search%3Fq%3Dgcc%26hl%3Des%26biw%3D1149%26bi
h%3D530%26prmd%3Divns

1 linker un programa de computadora que toma uno o
más objetos generados por un compilador y los combina
en un único archivo ejecutable del programa.

2 JMP Esta instrucción se utiliza para desviar el flujo de un
programa sin tomar en cuenta las condiciones actuales
de las banderas ni de los datos.

3 GCC compilador SO
Descargar