Transcript ENSAMBLADOR
Procesamiento de Datos I
Concepto de Programa Almacenado
Nivel de Lenguaje Ensamblador
Arquitectura Ensamblador
!!ARBvp1.0
PARAM 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
Generación
Código
Específico
GPU
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
AST
!!ARBvp1.0
Análisis
léxico – Sintáctico
(Flex + Bison)
Análisis
Semántico
(casi completo)
Tabla
símbolos
InsertarST(“arr”,5,
ENV_PARAMETER)
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 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 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
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 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 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)
24576
A) ADD
SUB
MUL
DIV
B) Asigna a las direcciones nombres
simbólicos
C) Solo se ejecuta en una familia de
maquinas
Para la PDP_11
57344
28672
29184
Formula de una Instrucción en lenguaje ensamblador
Campo
operación
Campo etiqueta
FORMUL:
MOV ADD ADD MOV
1:
DD K:
DD
DD J:
DD L:
Campo
operandos
EAX,
EAX,
EAX,
EAX
23
40
1
J
K N,
.
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
MOVE.L ADD.L ADD.L
1:
DC.L K:
DC.L
DC.L J:
'
DC.L L:
I,DO J.DO
K,DO DO,N
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 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 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 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ó
MOV
n
MOV
MOV
IMUL
IMUL
IMUL
ADD
ADD
MOV
JMP
Campo
Campo
comentarlos
operando
EAX,
EAX-I
s
EBXJ
EBX. J
ECX.K
ECX« K
EAX.EAX
EAX - !•!
EBX.EBX
EBX = J"J
ECX.ECX
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
1ZT
129
134
5
S
Fig. 7-3. El contador de posiciones de instrucción (ILC) va
tomando el valor de la dirección donde 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
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
Código de
operación
Primer
operando
Segundo operación
operando hexadecimal
Longitud de Clase de
la instrucción instrucción
'-
AAA
-
-
37
1
e
Fig. 1
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 del ensamblaje.
Algunos errores comunes (pag 460)
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 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
MOV
MOV
MOV
MOV
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
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
í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
MOV
MOV
MOV
MOV
MOV
MOV
(a)
EAX.P
EBX.Q
Q.EAX
P.EBX
EAX.R
EBX.S
S.EAX
R.EBX
MOV
MOV
MOV
MOV
CHANCE P, Q
CHANCE R, S
P1,P2
EAX.P1
EBX.P2
P2.EAX
P1.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 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 llama por
primera vez"
. 7-17. Enlace dinámico, (a) Antes de llamar a TIERRA. (b) Después de llamar i TIERRA-