Procesamiento de Datos I Concepto de Programa Almacenado Nivel de Lenguaje Ensamblado
Mar 18, 2016
Procesamiento de Datos IConcepto de Programa Almacenado
Nivel de Lenguaje Ensamblado
Arquitectura Ensamblador
!!ARBvp1.0PARAM arr[5] = { program.env[0..4] };#ADDRESS addr;ATTRIB v1 = vertex.attrib[1];PARAM par1 = program.local[0];OUTPUT oPos = result.position;OUTPUT oCol = result.color.front.primary;OUTPUT oTex = result.texcoord[2];ARL addr.x, v1.x;MOV res, arr[addr.x - 1];END
Análisis léxico – Sintáctico
(Flex + Bison)
Análisis Semántico
(casi completo)
!!ARBvp1.0
AST
Tabla símbolos
InsertarST(“arr”,5, ENV_PARAMETER)
GeneraciónCódigo
EspecíficoGPU
Genérico
Line:By0By1By2By3By4By5By6By7By8By9ByAByBByByDByEByF 011: 16 00 03 28 00 01 00 08 26 1b 6a 00 0f 1b 04 78 012: 09 00 03 00 00 00 02 08 24 1b 1b 00 08 1b 14 18 013: 09 00 04 00 00 00 02 08 24 1b 1b 00 04 1b 14 b8 014: 09 00 05 00 00 00 02 08 24 1b 1b 00 02 1b 04 58 015: 09 00 06 00 00 00 02 08 24 1b 1b 00 01 1b 04 f8 016: 16 00 01 00 00 00 02 30 24 1b 1b 00 08 1b 14 98 017: 16 00 02 00 00 01 02 30 24 1b 1b 00 08 1b 04 38 018: 16 00 00 00 00 00 03 30 24 00 1b 00 02 1b 04 d8 019: 16 00 01 00 00 00 03 30 24 00 1b 00 01 1b 14 78 020: 01 00 08 00 00 08 18 08 24 04 ae 00 0c 1b 04 18 021: 17 00 00 00 00 00 13 30 24 00 00 00 08 1b 04 b8 022: 17 00 01 00 00 00 13 30 24 00 00 00 04 1b 14 58 023: 01 00 08 00 00 09 18 08 24 04 04 00 0c 1b 14 f8 024: 01 00 08 00 00 0a 18 08 26 04 ae 00 0c 1b 04 98 025: 01 00 08 00 00 0b 18 08 26 04 04 00 0c 1b 14 38
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 compiladorcompilador para traducir el código fuente a lenguaje de máquina (código objeto).
Un lenguaje de bajo nivel utiliza un ensambladorensamblador 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
Enlazador
prog.asmCrea un programa fuente en ensamblador (.ASM)
Ensamble
prog.lstprog.crt
prog.mapprog.obj
Enlace
Ensambla el programa fuente, crea un programa objeto (.OBJ)
Enlaza el programa objeto, crea un programa ejecutable
prog.exe
Existencia de Niveles
Nivel n Programa Fuente
Traducción
Compilació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.
Nota: el programa fuente se ha desvanecido
Programas presentes
Objeto del usuario
El sistema operativo
El micro programa
Nivel del SO
Maquina Convencional
Microprogramación
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
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
Lenguaje de maquina(octal o hexadecimal)
FORMUL: MOV ADD ADD MOV
EAX, 1 EAX, J EAX, K N, EAX
CARGA 1 EN EAX SUMA J A EAX SUMA K A EAX ALMACENA 1 + J + K EN N
1: DD J: DD K: DD L: DD
2 3 .4 0
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 ADD.L MOVE.L
I,DO J.DO K,DO DO,N
CARGA 1 EN DO SUMA J A DO SUMA K A DO ALMACENA 1 + J + K EN N
Formula de una Instrucción en lenguaje ensamblador Campo Campo etiqueta operación
Campo operandos
Campo de comentarios
1: DC.L J: ' DC.L K: DC.L L: DC.L
2 3 4 0
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
b
c
d
a- Campo de etiqueta b- Campo de operación
c- Campo de operando d- Campo de comentario
"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".
Instrucción en ensamblador
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 EnsamblajeEnsambladores de 2 pasadas:1° Pasada: Construir la tabla de símbolos; que contiene etiquetas yvalores (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 etiquetaSUSANA: MARÍA:
MARISA: CARMEN:
Campo
Campo
Campo
MOV
EAX,
EAX-I
MOV
EBXJ
EBX. J
MOV
ECX.K
ECX« K
IMUL
EAX.EAX
EAX - !•!
IMUL
EBX.EBX
EBX = J"J
IMUL
ECX.ECX
ECX = K«K
ADD
EAX, EBX
EAX-I"I + J*J
ADD
EAX.ECX
EAX .1*1 + JM +
MOV
N.EAX
N = 1*1 + J*J + K*
JMP
YA
SALTA A YA
operación
operandos
comentarlos
5
100
6
106
6
111
2
117
3
11*
3
122
2
126
2
1ZT
5
129
S
134
Longitud instrucción
ILC ante» sentencia
Fig. 7-3. El contador de posiciones de instrucción (ILC) va tomando el valor de la direc ción donde se cargará la instrucción en memoria. En este ejemplo, las sentencias anteriores a SUSANA ocupan 100 bytes.
=
Símbolo Valor Otra información
:
SUSANA :.
100
MARÍA
111
MARISA
125
CARME
N
129
h
L «
h
Fig. 7-4. Tabla de simbolos para el programa de la figura 7-3.Código deCódigo de Primer Segundo operación Longitud de Clase deoperación operando operando hexadecimal la instrucción instrucción
'-Fig. 1
AAA
-
-
37
1
e ADD
EAX
IMMED32
05
5
4
ADD
REG
REG
01
2
19
AND
EAX
IMMED32
25
5
4
AND
REG
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 del ensamblaje.Algunos errores comunes (pag 460)
Tabla de Símbolos:
Lento, fácil de -programar
Organización: a) Vector de pares (*)
Valor
b) Ordenar tabla de N elementos y usar algoritmo de búsqueda binaria intentosc) 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
Símbolos
Búsqueda lineal, secuencial
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 EAX.PMOV EBX.QMOV O.EAXMOV P.EBXMOV EAX.PMOV EBX.QMOV Q.EAXMOV P.EBX
SWAP MACRO MOVEAX.P MOV EBX.Q MOV Q,EAX MOV P.EBX ENDM
SWAP 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.*) 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 Llamada a procedimientoítem Llamada a macro
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
Sí
No
Es una instrucción de llamada a procedimiento insertada en el programa objeto
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.
MOV EAX.PMOV EBX.QMOV Q.EAXMOV P.EBXMOV EAX.RMOV EBX.SMOV S.EAXMOV R.EBX
P1,P2EAX.P1EBX.P2P2.EAXP1.EBX
MOVMOVMOVMOVCHANCE P, Q CHANCE R, S
Ftg. 7-11. Secuencias casi idénticas de instrucciones, (a) Sin macro. (b) Con una macro .
CHANCE MACRO
(a) (b)
A
B
C
D
E F
Estructura de un módulo objeto
A- Nombre, longitud, fechaB- 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.
Identificación Tabla de Ptos de entrada Tabla dereferencias externas Instrucciones de maquinarias y constantes Lista de rehubicación Fin del Módulo
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 llamar i TIERRA-