Post on 24-Jul-2015
[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.