Vous êtes sur la page 1sur 13

INSTITUTO TECNOLOGICO SUPERIOR DE

MISANTLA

CARRERA: ING. EN SISTEMAS COMPUTACIONALES

MATERIA: LENGUAJES Y AUTOMATAS II

SEMESTRE: QUINTO

UNIDAD: 4. GENERACION DE CODIGO OBJETO

TRABAJO: INVESTIGACION

DOCENTE: ING. GUADALUPE GUENDULAY ESCALANTE

ALUMNA:
MIRIAM TINOCO ALVAREZ
CONTENIDO

GENERACIN DE CDIGO OBJETO ......................................................................................... 3


REGISTROS ........................................................................................................................................ 4
I. Definicin ............................................................................................................................. 4
II. Clasificacin ........................................................................................................................ 4
III. Asignacin ........................................................................................................................... 6
LENGUAJE ENSAMBLADOR .......................................................................................................... 7
I. Definicin ............................................................................................................................. 7
II. Caractersticas .................................................................................................................... 7
III. Clasificacin ........................................................................................................................ 8
IV. Elementos del lenguaje................................................................................................ 8
V. Ventajas ................................................................................................................................ 9
VI. Desventajas ..................................................................................................................... 9
LENGUAJE MAQUINA .................................................................................................................. 10
I. Definicin ........................................................................................................................... 10
II. Caractersticas .................................................................................................................. 10
III. Ventajas .............................................................................................................................. 10
IV. Inconvenientes ............................................................................................................. 11
V. Direccionamiento de lenguaje maquina ................................................................. 11
ADMINISTRACIN DE LA MEMORIA ........................................................................................ 12
I. Definicin ........................................................................................................................... 12
II. Propsitos de la administracin ................................................................................... 12
GENERACIN DE CDIGO OBJETO
La fase final de un compilador es la generacin de cdigo objeto, que por lo general
consiste en cdigo de mquina relocalizable o cdigo ensamblador. Las posiciones
de memoria se seleccionan para cada una de las variables usadas por el programa.
Despus, cada una de las instrucciones intermedias se traduce a una secuencia de
instrucciones de mquina que ejecuta la misma tarea. Un aspecto decisivo es la
asignacin de variables a registros.
El generador de cdigo objeto puede considerarse como la penltima fase de un
compilador, la cual se encarga de tomar como entrada el cdigo intermedio
generado por el front-end, y producir cdigo objeto de la arquitectura target para
luego entrar en la fase de optimizacin de cdigo.
Toma como entrada de representacin intermedia el programa fuente y
produce como salida un programa objeto equivalente.
REGISTROS
I. Definicin

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 CPU solamente puede procesar
datos que se encuentren en registros

Los registros son la memoria principal de la


computadora. Existen diversos registros de
propsito general y otros de uso exclusivo.
Algunos registros de propsito general son
utilizados para cierto tipo de funciones. Existen
registros acumuladores, puntero de
instruccin, de pila, etc.

Adems, 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:

Durante la asignacin de registros, se selecciona el conjunto de variables y/o


constantes que residirn en los registros en un momento del programa.
Durante una fase posterior a la anterior, se escoge el registro especfico en
el que residir una variable.

II. Clasificacin

Los registros se pueden clasificar de la siguiente forma:

Registros de datos:
o AX: Registro acumulador. Es el principal empleado en las operaciones
aritmticas.
o BX: Registro base. Se usa para indicar un desplazamiento.
o CX: Registro contador. Se usa como contador en los bucles.
o DX: Registro de datos. Tambin se usa en las operaciones
aritmticas.

Estos registros son de uso general y tambin pueden ser utilizados como registros
de 8 bits, para utilizarlos como tales es necesario referirse a ellos como por ejemplo:
AH y AL, que son los bytes alto (high) y bajo (low) del registro AX. Esta nomenclatura
es aplicable tambin a los registros BX, CX y DX.
Registros de segmentos:
o CS: Registro de segmento de cdigo. Contiene la direccin de las
instrucciones del programa.
o DS: Registro segmento de datos. Contiene la direccin del rea de
memoria donde se encuentran los datos del programa.
o SS: Registro segmento de pila. Contiene la direccin del segmento de
pila. La pila es un espacio de memoria temporal que se usa para
almacenar valores de 16 bits (palabras).
o ES: Registro segmento extra. Contiene la direccin del segmento
extra. Se trata de un segmento de datos adicional que se utiliza para
superar la limitacin de los 64Kb del segmento de datos y para hacer
transferencias de datos entre segmentos.

Registros punteros de pila:


o SP: Puntero de la pila. Contiene la direccin relativa al segmento de
la pila.
o BP: Puntero base. Se utiliza para fijar el puntero de pila y as poder
acceder a los elementos de la pila.
Registros ndices:
o SI: ndice fuente.
o DI: ndice destino.
Puntero de instrucciones:
o IP: Registro puntero de instruccin o contador de programa (PC).
Contiene el desplazamiento de la siguiente instruccin a ejecutar
respecto al segmento de cdigo en ejecucin. Por lo tanto, la direccin
completa de la siguiente instruccin sera CS:IP. La nica forma de
influir en este registro es de forma indirecta mediante instrucciones de
bifurcacin.
Registro de banderas (flags): Cada bandera es un bit y se usa para
registrar la informacin de estado y de control de las operaciones del
microprocesador.

Hay nueve banderas (los 7 bits restantes no se utilizan):

Banderas de estado: Registran el estado del procesador, normalmente


asociado a una comparacin o a una instruccin aritmtica.
o CF: Bandera de acareo.
o OF: Bandera de desbordamiento (aritmtico).
o ZF: Bandera de resultado 0 o comparacin igual.
o SF: Bandera de resultado o comparacin negativa.
o PF: Bandera de paridad (nmero par de bits).
o AF: Bandera auxiliar. Indica si hay necesidad de ajuste en las
operaciones aritmticas con nmeros BCD. Banderas de control:
o DF: Bandera de direccin. Controla la direccin de las operaciones
con cadenas de caracteres incrementando o decremento
automticamente los registros ndices (SI y DI).
o IF: Bandera de interrupciones. Indica si estn permitidas o no las
interrupciones de los dispositivos externos.
o Bandera de atrape. Controla la operacin de modo paso a paso
(usada por el programa DEBUG).

III. Asignacin

Las instrucciones que implican operandos en registros son generalmente ms


rpidas que las de los operandos en memoria. Por lo que, utilizar eficientemente los
registros es fundamental para generar un buen cdigo. El uso de registros se divide
en dos formas:

Durante la asignacin de los registros: se selecciona el conjunto de


variables que residir en los registros en un momento del programa.
Durante la fase posterior de asignacin a los registros: se escoge el
registro especfico en el que residir una variable.
LENGUAJE ENSAMBLADOR
I. Definicin

El lenguaje ensamblador, o assembler (assembly language en ingls), es un


lenguaje de programacin de bajo nivel para los computadores, microprocesadores,
microcontroladores y otros circuitos integrados programables. Implementa una
representacin simblica de los cdigos de mquina binarios y otras constantes
necesarias para programar una arquitectura dada de CPU y constituye la
representacin ms directa del cdigo mquina especfico para cada arquitectura
legible por un programador.

Esta representacin es usualmente


definida por el fabricante de hardware,
y est basada en los mnemnicos que
simbolizan los pasos de procesamiento
(las instrucciones), los registros del
procesador, las posiciones de memoria
y otras caractersticas del lenguaje. Un
lenguaje ensamblador es por lo tanto
especfico de cierta arquitectura de computador fsica (o virtual). Esto est en
contraste con la mayora de los lenguajes de programacin de alto nivel, que
idealmente son porttiles.

El programa escrito en lenguaje ensamblador se denomina cdigo fuente (*.asm).


El programa ensamblador proporciona a partir de este fichero el correspondiente
cdigo mquina, que suele tener la extensin *.hex.

II. Caractersticas

El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de ser


entendido ya que su estructura se acerca al lenguaje mquina, es decir, es
un lenguaje de bajo nivel.

El lenguaje ensamblador es difcilmente portable, es decir, un cdigo escrito


para un microprocesador, puede necesitar ser modificado, para poder ser
usado en otra mquina distinta. Al cambiar a una mquina con arquitectura
diferente, generalmente es necesario reescribirlo completamente.

Los programas hechos por un programador experto en lenguaje ensamblador


son generalmente mucho ms rpidos y consumen menos recursos del
sistema (memoria RAM y ROM) que el programa equivalente compilado
desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje
ensamblador se pueden crear programas que se ejecutan ms rpidamente
y ocupan menos espacio que con
lenguajes de alto nivel.

Con el lenguaje ensamblador se tiene


un control muy preciso de las tareas
realizadas por un microprocesador por
lo que se pueden crear segmentos de
cdigo difciles y/o muy ineficientes de
programar en un lenguaje de alto nivel,
ya que, entre otras cosas, en el lenguaje ensamblador se dispone de
instrucciones del CPU que generalmente no estn disponibles en los
lenguajes de alto nivel.
Tambin se puede controlar el tiempo en que tarda una rutina en ejecutarse,
e impedir que se interrumpa durante su ejecucin.

III. 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.

IV. Elementos del lenguaje

ETIQUETA: Nombre que se le asigna a una posicin de la memoria de programa.


Empieza en la 1 columna y suele ir seguida de ':.
MNEMNICO: Representacin simblica del campo de operacin (COP).
OPERANDOS: Representados por smbolos o constantes, separados por comas.
COMENTARIOS: Comienzan con ';.

V. Ventajas

Da a un programador la capacidad de realizar


tareas muy tcnicas que seran difciles.

Mnimo tiempo de ejecucin.

Requiere menos memoria que un programa


escrito en lenguaje de alto nivel.

Acceso al cualquier recurso de la


computadora.

VI. Desventajas

Tiempo de programacin.

Programas fuentes grandes.

Peligro de afectar recursos


inesperadamente.

Falta de portabilidad.

Podra dificultar que un usuario sea experto


en ello.

Dificulta escribir programas grandes y complejos.


LENGUAJE MAQUINA
I. Definicin

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.

Un lenguaje de programacin de bajo nivel es el que proporciona poca o ninguna


abstraccin del microprocesador de un ordenador.

Consecuentemente es fcilmente trasladado a lenguaje de mquina. La palabra


bajo no implica que el lenguaje sea inferior a un lenguaje de alto nivel; se refiere a
la reducida abstraccin entre el lenguaje y el hardware.

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.

II. Caractersticas

El lenguaje mquina realiza un conjunto de operaciones predeterminadas llamadas


micro 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 ms funcionalidades llamado CISC, pero


son ms lentos que los RISC ya que estos tienen registros ms grandes.

III. Ventajas

Mayor adaptacin al equipo.


Posibilidad de obtener la mxima velocidad con mnimo uso de memoria.

IV. Inconvenientes

Imposibilidad de escribir cdigo independiente de la mquina.


Mayor dificultad en la programacin y en la comprensin de los programas.
El programador debe conocer ms de un centenar de instrucciones.
Es necesario conocer en detalle la arquitectura de la mquina.

V. Direccionamiento de lenguaje maquina

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.
ADMINISTRACIN DE LA MEMORIA
I. Definicin

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 los punteros y tienen un programa


denominado recolector de basura que se encarga de limpiar la memoria no utilizada
mejorando el desempeo.

II. Propsitos de la administracin

Se distinguen los siguientes propsitos del sistema de administracin de memoria:

Proteccin.
Si varios programas comparten la memoria principal, se debera
asegurar que el programa no sea capaz de cambiar las ubicaciones no
pertenecientica l. Aunque una
accin de escritura puede tener
efectos ms graves que
una de lectura, esta ltima tampoco
debera estar permitida, para proporcionar
algo de privacidad al programa.

Compartimiento.
Este objetivo parece contradecir al anterior, sin embargo a veces es
necesario para los usuarios poder compartir y actualizar informacin (por
ejemplo, en una base de datos) y, si se organiza la tarea de entrada a la
misma, se puede evitar el tener varias copias de la rutina.

Reubicacin.
La tcnica de multiprogramacin requiere que varios programas ocupen la
memoria al mismo tiempo.
Sin embargo no se sabe con anticipacin donde ser cargado
cada programa por lo que no es prctico usar direccionamiento absoluto de
memoria.
Organizacin fsica.
Debido al costo de una memoria principal rpida, ste
se usa en conjunto con una memoria secundaria mucho ms lenta (y por
consiguiente, barata) a fines de extender su capacidad.

Organizacin lgica.
Aunque la mayor parte de las memorias son organizadas
linealmente con un direccionamiento secuencial, esto difcilmente
concuerda con el camino seguido por el programa, debido al uso de
procedimientos, funciones, subrutinas, arreglos, etc.

Vous aimerez peut-être aussi