Procesamiento de Datos I Concepto de Programa Almacenado

  • Slides: 26
Download presentation
Procesamiento de Datos I Concepto de Programa Almacenado Nivel de Lenguaje Ensamblador

Procesamiento de Datos I Concepto de Programa Almacenado Nivel de Lenguaje Ensamblador

Arquitectura Ensamblador !!ARBvp 1. 0 PARAM arr[5] = { program. env[0. . 4] };

Arquitectura Ensamblador !!ARBvp 1. 0 PARAM arr[5] = { program. env[0. . 4] }; #ADDRESS addr; ATTRIB v 1 = vertex. attrib[1]; PARAM par 1 = program. local[0]; OUTPUT o. Pos = result. position; OUTPUT o. Col = result. color. front. primary; OUTPUT o. Tex = result. texcoord[2]; ARL addr. x, v 1. x; MOV res, arr[addr. x - 1]; END Generación Código Específico GPU Genérico Line: By 0 By 1 By 2 By 3 By 4 By 5 By 6 By 7 By 8 By 9 By. ABy. By. DBy. EBy. F 011: 16 00 03 28 00 01 00 08 26 1 b 6 a 00 0 f 1 b 04 78 012: 09 00 03 00 00 00 02 08 24 1 b 1 b 00 08 1 b 14 18 013: 09 00 04 00 00 00 02 08 24 1 b 1 b 00 04 1 b 14 b 8 014: 09 00 05 00 00 00 02 08 24 1 b 1 b 00 02 1 b 04 58 015: 09 00 06 00 00 00 02 08 24 1 b 1 b 00 01 1 b 04 f 8 016: 16 00 01 00 00 00 02 30 24 1 b 1 b 00 08 1 b 14 98 017: 16 00 02 00 00 01 02 30 24 1 b 1 b 00 08 1 b 04 38 018: 16 00 00 00 03 30 24 00 1 b 00 02 1 b 04 d 8 019: 16 00 01 00 00 00 03 30 24 00 1 b 00 01 1 b 14 78 020: 01 00 08 00 00 08 18 08 24 04 ae 00 0 c 1 b 04 18 021: 17 00 00 00 13 30 24 00 00 00 08 1 b 04 b 8 022: 17 00 01 00 00 00 13 30 24 00 00 00 04 1 b 14 58 023: 01 00 08 00 00 09 18 08 24 04 04 00 0 c 1 b 14 f 8 024: 01 00 08 00 00 0 a 18 08 26 04 ae 00 0 c 1 b 04 98 025: 01 00 08 00 00 0 b 18 08 26 04 04 00 0 c 1 b 14 38 AST Análisis léxico – Sintáctico (Flex + Bison) !!ARBvp 1. 0 Análisis Semántico (casi completo) Tabla símbolos Insertar. ST(“arr”, 5, ENV_PARAMETER)

Ventajas de Ensamblador Proporciona más control sobre el manejo particular de los requerimientos de

Ventajas de Ensamblador Proporciona más control sobre el manejo particular de los requerimientos de hardware Genera módulos ejecutables más pequeños y compactos. Normalmente se ejecutan más rápido que el proceso equivalente codificado en un lenguaje de alto nivel.

Compilador v/s Ensamblador Un lenguaje de alto nivel utiliza un compilador para traducir el

Compilador v/s Ensamblador Un lenguaje de alto nivel utiliza un compilador para traducir el código fuente a lenguaje de máquina (código objeto). Un lenguaje de bajo nivel utiliza un ensamblador para realizar la traducción. Para ambos niveles, un programa enlazador completa el proceso al convertir el código objeto en lenguaje de máquina.

Editor Ensamblador prog. lst prog. crt prog. map Enlazador prog. asm Ensamble Crea un

Editor Ensamblador prog. lst prog. crt prog. map Enlazador prog. asm Ensamble Crea un programa fuente en ensamblador (. ASM) Ensambla el programa fuente, crea un programa objeto (. OBJ) prog. obj Enlace prog. exe Enlaza el programa objeto, crea un programa ejecutable

Existencia de Niveles Nivel n Programa Fuente Compilación Traducción Interpretación Nivel n 1 Programa

Existencia de Niveles Nivel n Programa Fuente Compilación Traducción Interpretación Nivel n 1 Programa Objeto a) Generación de un programa equivalente en lenguaje objeto b) Ejecución del nuevo programa generado

Niveles en Tiempo de Ejecución. Objeto del usuario Programas presentes Nivel del SO El

Niveles en Tiempo de Ejecución. Objeto del usuario Programas presentes Nivel del SO El sistema operativo Maquina Convencional El micro programa Microprogramación Nota: el programa fuente se ha desvanecido

Que es un lenguaje ensamblador ? Es aquel en que cada sentencia produce exactamente

Que es un lenguaje ensamblador ? Es aquel en que cada sentencia produce exactamente una instrucción de máquina. Correspondencia biunívoca (características que los distingue de los lenguajes al alto nivel)

Lenguaje ensamblado Lenguaje de maquina (octal o hexadecimal) A) ADD SUB MUL DIV B)

Lenguaje ensamblado Lenguaje de maquina (octal o hexadecimal) A) ADD SUB MUL DIV B) Asigna a las direcciones nombres simbólicos C) Solo se ejecuta en una familia de maquinas 24576 57344 28672 29184 Para la PDP_11

Formula de una Instrucción en lenguaje ensamblador Campo operación Campo etiqueta FORMUL: MOV ADD

Formula de una Instrucción en lenguaje ensamblador Campo operación Campo etiqueta FORMUL: MOV ADD MOV 1: DD K: DD DD J: DD L: Campo operandos EAX, 1 EAX, J EAX, K N, EAX 23. 40 Campo de comentarios CARGA 1 EN EAX SUMA J A EAX SUMA K A EAX ALMACENA 1 + J + K EN N RESERVA 4 BYTE V INICIAL 2 RESERVA 4 BYTE V INICIAL 3 RESERVA 4 BYTE V INICIAL 4 RESERVA 4 BYTE V INICIAL 0 (a) FORMUL: MOVE. L ADD. L I, DO J. DO K, DO DO, N 1: DC. L K: DC. L J: ' DC. L L: 2340 CARGA 1 EN DO SUMA J A DO SUMA K A DO ALMACENA 1 + J + K EN N RESERVA 4 BYTE V INICIAL 2 RESERVA 4 BYTE V INICIAL 3 RESERVA 4 BYTE V INICIAL 4 RESERVA 4 BYTE V INICIAL 0

Instrucción en ensamblador a- Campo de etiqueta b- Campo de operación c- Campo de

Instrucción en ensamblador a- Campo de etiqueta b- Campo de operación c- Campo de operando d- Campo de comentario a b c d "Dos nombres simbólicos a las instrucciones". "Abreviatura simbólica del código de operación". "Especifica direcciones y registros". "Permite explicar el funcionamiento del programa".

Lenguaje Ensamblador vs. Lenguaje de Alto Nivel 1)- Arq. Dependiente Arq. Independiente 2)- Difícil

Lenguaje Ensamblador vs. Lenguaje de Alto Nivel 1)- Arq. Dependiente Arq. Independiente 2)- Difícil de Mantener Fácil Mantener 3)- Difícil de Programar Fácil de Programar 4)- Etiquetas Simbólicas restringidas en su longitud Sin etiquetas mas próximo al lenguaje natural

El Proceso de Ensamblaje Ensambladores de 2 pasadas: 1° Pasada: Construir la tabla de

El Proceso de Ensamblaje Ensambladores de 2 pasadas: 1° Pasada: Construir la tabla de símbolos; que contiene etiquetas y valores (nombres simbólicos). Ej. : ESPACIO equ 100 Debe identificarse la dirección de la instrucción para ello se crea el ILC ____* "Contador de Posiciones de Instrucción" Campo etiqueta SUSANA: MARÍA: MARISA: CARMEN: Campo operación MOV MOV IMUL ADD MOV JMP Campo operandos comentarlos EAX, EAX-I EBXJ EBX. J ECX. K ECX « K EAX - ! • ! EBX = J"J ECX = K «K EAX, EBX EAX-I"I + J*J EAX. ECX EAX. 1*1 + JM + N. EAX N = 1*1 + J*J + YA K* SALTA A YA Longitud instrucción 5 ILC ante» sentencia 100 6 6 2 3 3 2 2 106 111 117 11* 122 126 1 ZT 129 134 5 S Fig. 7 3. El contador de posiciones de instrucción (ILC) va tomando el valor de la direc cióndonde se cargará la instrucción en memoria. En este ejemplo, las sentencias anteriores a SUSANA ocupan 100 bytes.

= Símbolo Valor SUSAN A : . MARÍA 100 Otra información : 11 1

= Símbolo Valor SUSAN A : . MARÍA 100 Otra información : 11 1 125 MARISA CARME N 129 L h « para el programa de la figura 7 -3. Fig. 7 -4. Tabla de simbolos h Código de operación 'Fig. 1 Primer operando Segundo operación operando hexadecimal Longitud de Clase de la instrucción AAA - - 37 1 e ADD EAX 05 5 4 ADD REG IMMED 32 REG 01 2 19 AND EAX 25 5 4 AND REG IMMED 32 REG 21 2 19 = =L - = =J s -5. Extractos de una tabla de códigos de operación en un ensamblador 80386.

2° Pasada: Es generar el programa objeto y de ser posible imprimir el listado

2° Pasada: Es generar el programa objeto y de ser posible imprimir el listado del ensamblaje. Algunos errores comunes (pag 460)

Tabla de Símbolos: Organización: a) Vector de pares (*) Símbolos Valor Lento, fácil de

Tabla de Símbolos: Organización: a) Vector de pares (*) Símbolos Valor Lento, fácil de -programar Búsqueda lineal, secuencial b) Ordenar tabla de N elementos y usar algoritmo de búsqueda binaria intentos c) Codificación por transformación: Uso de una función de transformación que haga corresponder a cada símbolo un numero entre O y k-1 (*) Memoria Asociativa

MACROS: Agrupar instrucciones y llamarlas c/vez que se necesite. Es necesario una instrucción de

MACROS: Agrupar instrucciones y llamarlas c/vez que se necesite. Es necesario una instrucción de llamada a otra de retorno. (ej. de 2 Inst. ) Las macros proporcionan una solución sencilla y eficiente al problema que plantean las secuencias idénticas o casi idénticas de instrucciones que se usan repetidamente en un programa.

MACROS: * Definición: Asignar un nombre a una porción de texto. MOV MOV EAX.

MACROS: * Definición: Asignar un nombre a una porción de texto. MOV MOV EAX. P EBX. Q O. EAX P. EBX EAX. P EBX. Q Q. EAX P. EBX SWAP MACRO MOVEAX. P MOV EBX. Q MOV Q, EAX MOV P. EBX ENDM SWAP 1. Encabezado de Macro —— nombre. 2. Texto que forma el cuerpo de la Macro. 3. Una instrucción de fin de Macro.

*) Llamado: El uso del nombre de una macro como código de operación. *)

*) Llamado: El uso del nombre de una macro como código de operación. *) Expansión: El reemplazo por el cuerpo de la Macro; este se traduce en el proceso de ensamblaje, no en el de ejecución. NOTA; Ante la presencia de un programa en lenguaje de máquina es imposible decir si se han utilizado Macros en su generación.

MACROS Vs. PROCEDIMIENTOS ítem Llamada a macro Llamada a procedimiento Momento en al que

MACROS Vs. PROCEDIMIENTOS ítem Llamada a macro Llamada a procedimiento Momento en al que (e hice Durante al ensamblaje Duren» le ejecución del programa objeto El cuerpo se inserta en el programa objeto en todos los sitios donde aparece el nombre Es una instrucción de llamada a procedimiento insertada en el programa objeto Sí No No Si Debe usarse una Instrucción retomo para devolver el control a la sentencia que sigue a la llamada No Si Numero de copia» del cuerpo que aparecen en el programa objeto Una por cada llamada a la macro 1 Fl» . 7 -10. Comparación entre llamada* a macro y a procedimiento

Macros con Parámetros: - Parámetros formales. - Parámetros reales. CHANCE MACRO MOV MOV (a)

Macros con Parámetros: - Parámetros formales. - Parámetros reales. CHANCE MACRO MOV MOV (a) EAX. P EBX. Q Q. EAX P. EBX EAX. R EBX. S S. EAX R. EBX MOV MOV CHANCE P, Q CHANCE R, S P 1, P 2 EAX. P 1 EBX. P 2. EAX P 1. EBX (b) Ftg. 7 -11. Secuencias casi idénticas de instrucciones, (a) Sin macro. (b) Con una macro.

Estructura de un módulo objeto A B C D E F Identificación Tabla de

Estructura de un módulo objeto A B C D E F Identificación Tabla de Ptos de entrada Tabla de referencias externas Instrucciones de maquinarias y constantes Lista de rehubicación Fin del Módulo A- Nombre, longitud, fecha B- Lista de símbolos definidos en el módulo a los que otros módulos pueden hacer referencia (junto con su dirección) para identificarlos el programador usa una pseudo instrucciones de pto. de entrada o símbolo externos — » • tabla de pto. de entrada. C- Lista de los símbolos que usa, pero que está definido en otros módulos, junto con otra que dice que instrucciones usa c/u de esos símbolos —— > • tabla de referencia externa.

Enlace dinámico "Enlazar procedimientos compilados por separado en el momento en el que se

Enlace dinámico "Enlazar procedimientos compilados por separado en el momento en el que se llama por primera vez"

. 7 -17. Enlace dinámico, (a) Antes de llamar a TIERRA. (b) Después de

. 7 -17. Enlace dinámico, (a) Antes de llamar a TIERRA. (b) Después de llamar i TIERRA