jin unidad6

35
[ARQUITECTURA DE COMPUTADORES ] Nivel de Lenguaje Ensamblador Febrero 2008 Ing. Jorge Irey Universidad Nacional del Callao Escuela de Post Grado Maestría en Ingeniería de Sistemas

Upload: jingroup

Post on 24-Jul-2015

230 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Jin Unidad6

[ARQUITECTURA DE COMPUTADORES ]Nivel de Lenguaje Ensamblador

Febrero 2008

Ing. Jorge Irey

Universidad Nacional del CallaoEscuela de Post GradoMaestría en Ingeniería de Sistemas

Page 2: Jin Unidad6

INTRODUCCIÓN

Page 3: Jin Unidad6

• Niveles de máquina• Traductores traducción implica 2 pasos

• Intérpretes interpretación implica 1 paso

Introducción

Lenguaje Fuente

Lenguaje Objetivo

Ejecución

Lenguaje Fuente

Ejecución

Page 4: Jin Unidad6

¿ Qué es el lenguaje Ensamblador ?

Traductor

Lenguaje Fuente :

Representación simbólica de un lenguaje de máquina numérico

Traductor : EnsambladorLenguajeEnsamblador

Lenguaje Fuente :

Lenguaje de Alto NivelTraductor : COMPILADORLenguaje

De Alto Nivel

Lenguaje Ensamblador es aquel en el cual cada enunciado del programa produce exactamente una instrucción de máquina

Page 5: Jin Unidad6

• Es más fácil programar en ensamblador : el uso de nombres y direcciones simbólicas es una gran ventaja frente a direcciones binarias

• El programador en lenguaje ensamblador tiene acceso a las características e instrucciones disponibles en la máquina objetivo.

• Restricción : un programa en lenguaje ensamblador sólo puede ejecutarse en una familia de máquinas.

¿ Usar Ensamblador y no lenguaje de máquina ?

Page 6: Jin Unidad6

• La programación en lenguaje ensamblador es DIFÍCIL !!!

• A pesar de ello se usa por razones de:– DesempeñoDesempeño : El lenguaje ensablador produce código

más rápido y pequeño– Acceso a la máquinaAcceso a la máquina : a veces se requiere acceso

total al hardware manejo de interrupciones

… PERO …

Page 7: Jin Unidad6

• La estructura de un enunciado en ensamblador refleja la estructura de la instrucción de máquina que representa.

• La sintaxis es muy parecida por lo que puede hablarse de un lenguaje ensamblador genérico.

Formato de un enunciado en Ensamblador

Page 8: Jin Unidad6

Formato de un enunciado en Ensamblador (2)

Cálculo

Comandospara reservade memoria

Page 9: Jin Unidad6

• CAMPO 1 : Etiqueta• CAMPO 2 : Código de Operación• CAMPO 3 : Operandos• CAMPO 4 : Comentarios

Formato de un enunciado en Ensamblador (3)

Page 10: Jin Unidad6

• Registros – Intel EAX, EBX, ECX – Motorola D0, D1, D2 – SPARC %R1, %R2

• Instrucción: Cargar un registro con el contenido de la memoria y almacenar el registro en memoria – Intel MOV– Motorola MOVE – SPARC LD y ST

Algunas diferencias …

Page 11: Jin Unidad6

• Operandos : byte, palabra y largos – Intel usa registros : EAX (32 bits), AX (16 bits), AL

y AH (8 bits)– Motorola usa SUFIJOS al códigos de operación ( L=

long, B = byte , W = word )– SPARC usa diferentes códigos de operación para

diferentes longitudes ( LDSB, LDSH LDSW)

• Reserva para espacio de datos: – Intel DW (Define Word)– Motorola DC (Define constant) – SPARC .WORD

Algunas diferencias …

Page 12: Jin Unidad6

• Además de especificar qué instrucciones de máquina deben ejecutarse, un programa en lenguaje ensamblador puede contener comandos para el ensamblador mismo. Ejemplo: asignar espacio en la memoria

• Estos comandos se llaman “seudoinstruccionesseudoinstrucciones” o tambien “directrices de ensambladordirectrices de ensamblador”

Seudoinstrucciones

Page 13: Jin Unidad6

Seudoinstrucciones ( 2)

Page 14: Jin Unidad6

MACROS

Page 15: Jin Unidad6

• Es una forma de asignar un nombre a un fragmento de texto.

Definición

Sin macrosCon macros

Page 16: Jin Unidad6

• Una cabecera de macro que da el nombre a la macro que se está definiendo

• El texto que conforma el cuerpo de la macro• Una seudoinstrucción que marca el final de la definición

de la macro.

• El ensamblador guarda una tabla de denifición de macros.

• Concepto : Llamada a macro• Concepto: Expansión de Macro se realiza durante el

ensambladoensamblado ( no durante la ejecución)• Al final del ensamblado, la tabla de definición de macros

se desecha.

Partes básicas

Page 17: Jin Unidad6

Macro vs. Procedimiento

Page 18: Jin Unidad6

Macros con parámetros

Parámetros Formales

Parámetros Reales

Page 19: Jin Unidad6

EL PROCESO DE ENSAMBLADO

Page 20: Jin Unidad6

• El problema de la referencia hacia delante : se referencia a un símbolo que aún no ha sido definido.

• Estrategias:– Leer el fuente 2 veces :

• 1era pasada guarda una tabla de símbolos y etiquetas• 2da pasada ya se conocen todas las direcciones de las

etiquetas.

– Leer el fuente 1 vez: (ahorra E/S)• 1era pasada se convierte a una forma intermedia y se

almacena en una tabla• 2da pasada se lee la tabla y se ensambla

Ensamblador de 2 pasadas

Page 21: Jin Unidad6

• Función : construir la tabla de símbolos• Variable ILC ( Instruction Location Counter)

Primera pasada

Page 22: Jin Unidad6

• Se emplean 3 tablas:– Tabla de Símbolos– Tabla de seudoinstrucciones– Tabla de Códigos de Operación

• Probablemente se use usa tabla de literales

… Primera pasada…

Page 23: Jin Unidad6

• Una entrada para cada símbolo.• Otra información:

– Longitud del campo de datos asociado al símbolo.– Bits de reubicación– Indicador de si el símbolo es accesible fuera del

procedimiento.

Primera pasada : Tabla de Símbolos

Page 24: Jin Unidad6

• Contiene al menos 1 entrada para cada código de operación simbólico del lenguaje ensamblador.

• La clase de instrucción designa en realidad a un procedimiento dentro del ensamblador que se invoca para procesar todas las instrucciones de un tipo dado.

Primera pasada : Tabla de Códigos de Operación

Page 25: Jin Unidad6

• Las constantes para las que el ensamblador automáticamente reserva memoria se llaman LITERALES.

• Ahorran trabajo al programador porque hacen evidente el valor de la constante en el programa fuente.

• En la primera pasada se construye la tabla con todas las literales del programa.

Primera pasada : Literales

Page 26: Jin Unidad6

• Función: generar el programa objeto e imprimir el listado de ensamblado

• Organización de la tabla de símbolos: Se simula una memoria “asociativa”:– Arreglo de pares: primer elemento es el símbolo y

segundo elemento es el valor Se recorre la tabla linealmente.

– Búsqueda binaria requiere que la tabla esté ordenada

– Codificación por dispersión ( Hash Coding )

Segunda pasada

Page 27: Jin Unidad6

ENLAZADO Y CARGA

Page 28: Jin Unidad6

• Antes que el programa pueda ejecutarse es preciso encontrar todos los procedimientos traducidos y enlazarlos correctamente

• Diversos nombres : – Linker enlazador– Linking Loader Cargador de enlace– Linkage Editor Editor de enlace

• En resumen, para que un programa pueda ejecutarse es preciso hacer 2 etapas:– Compilar o ensamblar los fuentes– Enlazar los módulos objeto para generar el

ejecutable

Introducción

Page 29: Jin Unidad6
Page 30: Jin Unidad6

Tareas que realiza el enlazador

Para ejecutar el programael enlazador obtiene los modulos objetode la memoria principal a fin de formaruna imagen

Problema de REUBICACIÓN:Cada módulo objeto representa unespacio de direcciones individual

Problema de REFERENCIA EXTERNA:La dirección de un módulo externo nose conoce antes del enlazado

Page 31: Jin Unidad6

Tareas que realiza el enlazador (2)

Problema de REUBICACIÓN

Problema de REFERENCIA EXTERNA

Page 32: Jin Unidad6

Tareas que realiza el enlazador (3)

En resumen :

Page 33: Jin Unidad6

Estructura interna de un módulo objeto

Page 34: Jin Unidad6

• DLL Dynamic Link Library• Es una biblioteca que consiste en una

colección de procedimientos que se pueden cargar en la memoria y a la que varios procesos pueden acceder a la vez.

Enlace dinámico en Windows

Page 35: Jin Unidad6

• Capitulo 7 – Tanenbaum• Web de Microsoft

Lecturas sugeridas

Examen Final hasta este tema.