jin unidad6

Post on 24-Jul-2015

226 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

[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

INTRODUCCIÓN

• 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

¿ 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

• 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 ?

• 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 …

• 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

Formato de un enunciado en Ensamblador (2)

Cálculo

Comandospara reservade memoria

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

Formato de un enunciado en Ensamblador (3)

• 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 …

• 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 …

• 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

Seudoinstrucciones ( 2)

MACROS

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

Definición

Sin macrosCon macros

• 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

Macro vs. Procedimiento

Macros con parámetros

Parámetros Formales

Parámetros Reales

EL PROCESO DE ENSAMBLADO

• 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

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

Primera pasada

• 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…

• 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

• 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

• 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

• 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

ENLAZADO Y CARGA

• 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

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

Tareas que realiza el enlazador (2)

Problema de REUBICACIÓN

Problema de REFERENCIA EXTERNA

Tareas que realiza el enlazador (3)

En resumen :

Estructura interna de un módulo objeto

• 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

• Capitulo 7 – Tanenbaum• Web de Microsoft

Lecturas sugeridas

Examen Final hasta este tema.

top related