jin unidad6
TRANSCRIPT
![Page 1: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/1.jpg)
[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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/2.jpg)
INTRODUCCIÓN
![Page 3: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/3.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/4.jpg)
¿ 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/5.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/6.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/7.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/8.jpg)
Formato de un enunciado en Ensamblador (2)
Cálculo
Comandospara reservade memoria
![Page 9: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/9.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/10.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/11.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/12.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/13.jpg)
Seudoinstrucciones ( 2)
![Page 14: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/14.jpg)
MACROS
![Page 15: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/15.jpg)
• Es una forma de asignar un nombre a un fragmento de texto.
Definición
Sin macrosCon macros
![Page 16: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/16.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/17.jpg)
Macro vs. Procedimiento
![Page 18: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/18.jpg)
Macros con parámetros
Parámetros Formales
Parámetros Reales
![Page 19: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/19.jpg)
EL PROCESO DE ENSAMBLADO
![Page 20: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/20.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/21.jpg)
• Función : construir la tabla de símbolos• Variable ILC ( Instruction Location Counter)
Primera pasada
![Page 22: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/22.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/23.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/24.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/25.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/26.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/27.jpg)
ENLAZADO Y CARGA
![Page 28: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/28.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/29.jpg)
![Page 30: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/31.jpg)
Tareas que realiza el enlazador (2)
Problema de REUBICACIÓN
Problema de REFERENCIA EXTERNA
![Page 32: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/32.jpg)
Tareas que realiza el enlazador (3)
En resumen :
![Page 33: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/33.jpg)
Estructura interna de un módulo objeto
![Page 34: Jin Unidad6](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/34.jpg)
• 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](https://reader036.vdocuments.net/reader036/viewer/2022081504/55b1af95bb61eb56718b45c7/html5/thumbnails/35.jpg)
• Capitulo 7 – Tanenbaum• Web de Microsoft
Lecturas sugeridas
Examen Final hasta este tema.