Beruflich Dokumente
Kultur Dokumente
2016 - I
Curso
Teora de Lenguajes
Tema
Docente
Integrantes:
Huaraz Per
2016
INDICE
INTRODUCCIN.............................................................................................. 2
1.
2.
DEFINICIONES.......................................................................................... 3
1.1.
Cdigo Objeto...................................................................................... 3
1.2.
1.3.
COMPONENTES........................................................................................ 4
2.1.
Lenguaje Mquina................................................................................ 4
2.2.
Lenguaje Ensamblador..........................................................................5
2.3.
Registros............................................................................................. 7
2.4.
Administracin de memoria....................................................................9
3.
4.
TCNICAS............................................................................................... 10
5.
EJEMPLOS............................................................................................. 11
6.
5.1.
Asignacin......................................................................................... 11
5.2.
Condicionales..................................................................................... 11
5.3.
Arrays............................................................................................... 11
5.4.
CONCLUSIONES..................................................................................... 13
INTRODUCCIN
Programa
Cdigo
Cdigo
Fuente Etapa Intermedio OptimizacinIntermedio
De cdigo
Inicial
Intermedio
Tabla de smbolos
1. DEFINICIONES
1.1.
Cdigo Objeto
Generador
De cdigo
Objeto
Programa
Fuente
1.2.
1.3.
Lenguaje Mquina
Es el que proporciona poca o ninguna abstraccin del microprocesador
de un ordenador. El lenguaje mquina solo es entendible por las
computadoras. Se basa en una lgica binaria de 0 y 1, generalmente
implementada por mecanismos elctricos. En general el lenguaje
maquina es difcil de entender para los humanos por este motivo
hacemos uso de lenguajes ms parecidos a los lenguajes naturales.
2.1.1. Caractersticas
El lenguaje mquina realiza un conjunto
predeterminadas llamadas micro operaciones.
de
operaciones
Las micro operaciones slo realizan operaciones del tipo aritmtica (+, -,
*, /), lgicas (AND,OR,NOT) y de control (secuencial, de control y
repetitiva).
El lenguaje maquina es dependiente del tipo de arquitectura. As un
programa mquina para una arquitectura Intel x86 no s ejecutara en
una arquitectura Power PC de IBM (al menos de manera nativa).
Algunos microprocesadores implementan mas funcionalidades llamado
CISC, pero son ms lentos que los RISC ya que estos tienen registros
ms grandes.
Ventajas
Desventajas
2.1.2. Direccionamiento
Es la forma en cmo se accede a la memoria. Recordar que un
programa no puede ejecutarse sino se encuentra en memoria principal.
La forma de acceder a la memoria depende del microprocesador, pero
en general existen dos tipos de direccionamiento: directo e indirecto.
El direccionamiento directo tambin recibe el nombre de
direccionamiento absoluto y el acceso a las direcciones se hace de
manera directa.
El direccionamiento indirecto tambin recibe el nombre de
direccionamiento relativo y se basa a partir de una direccin genrica,
generalmente el inicio del programa.
Para acceder a una direccin relativa se suma a la direccin base el
nmero de espacios de memorias necesarias.
El direccionamiento relativo hace a los programas relocalizables e
independientes.
Si la direccin base es el inicio de la memoria fija el direccionamiento
pasa a ser un variante de direccionamiento absoluto.
2.2.
Lenguaje Ensamblador
El ensamblador (del ingls assembler) es un traductor de un cdigo de
bajo nivel a un cdigo, ejecutable directamente por la mquina para la
que se ha generado.
2.2.2. Clasificacin
Ensambladores bsicos: Son de muy bajo nivel, y su tarea consiste
bsicamente, en ofrecer nombres simblicos a las distintas
instrucciones, parmetros y cosas tales como los modos de
direccionamiento.
Ensambladores modulares, o macro ensambladores: Descendientes
de los ensambladores bsicos, fueron muy populares en las dcadas
de los 50 y los 60, fueron antes de la generalizacin de los lenguajes
de alto nivel. Un macroinstruccin es el equivalente a una funcin en
un lenguaje de alto nivel.
2.2.3. Almacenamiento
Una de las principales ventajas del uso del ensamblador, es que se
encarga de administrar de manera transparente para el usuario la
creacin de memoria, las bifurcaciones y el paso de parmetros.
Adems, nos permite acceder directamente a los recursos de la mquina
para un mejor desempeo.
2.3.
Registros
Una de las consideraciones a tener para el generador de cdigo consiste
en la asignacin de registros. Los registros son los elementos ms
valiosos y escasos en la fase de generacin de cdigo, puesto que el $
%# solamente puede procesar datos que se encuentren en registros.
&dems, las instrucciones que implican operandos en registros son ms
cortas y rpidas que las de operandos en memoria.
El uso de registros se divide generalmente en dos problemas:
2.3.1. Distribucin
La distribucin es el proceso en el que el programa generado puede
ejecutarse en otras mquinas. Con respecto al ensamblador, la mayora
del direccionamiento se hace relativo para que el programa sea
relocalizable por un programa llamado cargador. En el caso de
programas compilados se necesitan de las libreras, si son estticas se
incluyen en el ejecutable por lo que el programa se hace grfico, si son
dinmicas no pero el programa es ms pequeo. Debido a la
complejidad del software actual se necesitan de asistentes para poder
instalar y ejecutar un programa.
2.3.2. Asignacin
La arquitectura de los procesadores x86 obliga al uso de segmentos de
memoria para manejar la informacin, el tamao de estos segmentos es
de 64kb. La razn de ser de estos segmentos es que, considerando que
el tamao mximo de un nmero que puede manejar el procesador est
dado por una palabra de 16 bits o registro, no sera posible accesar a
ms de 65536 localidades de memoria utilizando uno solo de estos
registros, ahora, si se divide la memoria de la pc en grupos o
segmentos, cada uno de 65536 localidades, y utilizamos una direccin
en un registro exclusivo para localizar cada segmento, y entonces cada
direccin de una casilla especfica la formamos con dos registros, nos es
posible acceder a una cantidad de 4294967296 bytes de memoria, lo
cual es, en la actualidad, ms memoria de la que veremos instalada en
una PC. Para que el ensamblador pueda manejar los datos es necesario
que cada dato o instruccin se encuentren localizados en el rea que
principal
empleado
en
las
Administracin de memoria
La administracin de la memoria es un proceso hoy en da muy
importante, de tal modo que su mal o buen uso tiene una accin directa
sobre el desempeo de memoria.
En general un ensamblador tiene un administrador de memoria ms
limitado que un compilador; en la mayora de los lenguajes de
programacin el uso de punteros no estaba vigilado por lo que se tienen
muchos problemas con el uso de memoria.
Los lenguajes ms recientes controlan el uso de punteros y tienen un
programa denominado recolector de basura que se encarga de limpiar la
memoria no utilizada mejorando el desempeo.
4. TCNICAS
Administracin de memoria: la correspondencia entre los nombres del
programa fuente con direcciones de objetos de datos en la memoria
durante la ejecucin la realiza la etapa inicial en cooperacin con el
generador de cdigo. Las entradas en la Tabla de Smbolos se van creando
conforme se examina las declaraciones de un procedimiento. El tipo en una
declaracin determina la cantidad de memoria necesaria para el nombre
declarado.
Seleccin de instrucciones: es importante que el conjunto de
instrucciones sea uniforme y completo. Las velocidades de las instrucciones
es un factor importante. Si no se tiene en cuenta la eficiencia del programa
objeto, la seleccin de instrucciones es sencilla. Para cada tipo de
proposicin de tres direcciones, se puede disear un esqueleto de cdigo.
Ejemplo: cdigo de tres direcciones de:
x := y + z
MOV y, R0 /* cargar y en el registro R0 */
ADD z, R0 /* suma z a R0 */
MOV R0, x /* almacenar R0 en x */
Asignacin de registros: Las instrucciones que implican operandos en
registros son generalmente ms rpidas que las de los operandos en
memoria. Por lo tanto, utilizar eficientemente los registros es fundamental
para generar un buen cdigo.
Eleccin del orden de evaluacin: el orden en que se realizan los
clculos puede variar la eficiencia del cdigo objeto. Algunos ordenamientos
de los clculos necesitan menos registros que otros para guardar
resultados intermedios.
5. EJEMPLOS
5.1.
Asignacin
Para las instrucciones de asignacin, A=B, el cdigo en cudruplas es
del tipo (assign, A, B, -) y el cdigo de ensamblador equivalente que hay
que generar es el siguiente:
5.2.
Condicionales
Cdigo de 3 direcciones
if_false tmp1 goto L1
L1:
5.3.
L1:
Arrays
Cdigo de 3 direcciones
x = A[i]
5.4.
t1=0<x
fact=1:
if false t1 goto L1
repeat
fact=1
fact=fact*x:
label L2
x:=x-1:
t2=fact*x
until x=0:
fact=t2
write fact:
t3=x-1
end
x=t3
t4=x==0
if false t4 goto L2
write fact
label L1
halt
5.5.
SALIDA
IF A>0 THEN
$1:=1:
ELSE
$2:=2:
FIN SI:
goto etq2
label etq1
$1=1
goto etq3
label etq2
$2=2
label etq3
6. CONCLUSIONES