González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un...

15
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

Transcript of González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un...

Page 1: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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

Page 2: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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.

Page 3: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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.

Page 4: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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.

Page 5: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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.

Page 6: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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.

Page 7: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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.

Page 8: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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.

Page 9: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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:

Page 10: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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 gcc3 que permite

traducir programas escritos en el lenguaje de programación C.

Page 11: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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.

Page 12: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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

Page 13: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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

Page 14: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

http://learnassembler.com/entorno.html

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

http://www.jmpingenieros.es/articulo.asp?notid=20

Lenguaje ensamblador y programación para IBM PC y compatibles Peter Abel Pearson Educación, 1996 - 594 páginas

BIBLIOGRAFIA

Page 15: González Mendoza María del Rosario Hernández Castañeda ... · El proceso de traducción de un programa escrito en un lenguaje de alto nivel a un archivo objeto ejecutable consta

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