Sie sind auf Seite 1von 33

GENERACIN DE CDIGO

OBJETO
TEMA 4
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.
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 comoentrada de representacin intermedia el programa fuente y


produce como salida un programa objeto equivalente.
ADMINISTRACIN DE MEMORIA
Existe una correspondencia entre los nombres del programa fuente con
direcciones de objetos de datos en la memoria durante la ejecucin que 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.
Segn la informacin de la Tabla de Smbolos se pueden determinar una
direccin relativa para el nombre de un rea de datos para el
procedimiento.
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.

Los registros son espacios fsicos dentro del microprocesador con capacidad
de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee.
El CPU tiene 14 registros internos, cada uno de ellos de 16 bits (una palabra).
Los bits estn enumerados de derecha a izquierda, de tal modo que el bit
menos significativo es el bit 0.

Los registros del procesador se emplean


para controlar instrucciones en ejecucin,
manejar direccionamiento de memoria y
proporcionar capacidad aritmtica. Los
registros son direccionables por medio
de un nombre
Registro de
segmento

Registro de
propsito
general

Registros de
apuntadores
Tipos de
registros
Registros de
banderas

Registros de
pila

Registros ndice
REGISTROS DE SEGMENTO

tiene 16 bits de longitud y facilita un rea de memoria para direccionamiento


conocida como el segmento actual.
Registro CS: indica la direccin de una instruccin que es buscada para su ejecucin.
Registro DS: La direccin inicial de un segmento de datos de programa es
almacenada en el registro DS. En trminos sencillos, esta direccin, mas un valor de
desplazamiento en una instruccin, genera una referencia a la localidad de un byte
especifico en el segmento de datos.
Registro SS: El registro SS permite la colocacin en memoria de una pila, para
almacenamiento temporal de direcciones y datos. El DOS almacena la direccin de
inicio del segmento de pila de un programa en le registro SS. Esta direccin de
segmento, mas un valor de desplazamiento en el registro del apuntador de pila (SP),
indica la palabra actual en la pila que esta siendo direccionada.
Registros ES: Alguna operaciones con cadenas de caracteres (datos de caracteres)
utilizan el registro extra de segmento para manejar el direccionamiento de memoria.
En este contexto, el registro ES esta asociado con el registro DI (ndice
Registros FS y GS: Son registros extra de segmento en los procesadores
80386 y posteriores.
REGISTROS DE PROPSITO GENERAL

Los registros de propsito general AX, BX, CX y DX son los caballos de


batalla del sistema. Son nicos en el sentido de que se puede direccionarlos
como una palabra o como una parte de un byte. El ultimo byte de la
izquierda es la parte alta, y el ultimo byte de la derecha es la parte
baja.
Registro AX:El registro AX, el acumulador principal, es utilizado para
operaciones que implican entrada/salida y la mayor parte de la aritmtica.
Registro BX: El BX es conocido como el registro base ya que es el nico
registro de propsito general que puede ser ndice para direccionamiento
indexado. Tambin es comn emplear el BX para clculos.
Registro DX: Es conocido como el registro de datos. Alguna operaciones de
entrada/salida requieren uso, y las operaciones de multiplicacin y divisin
con cifras grandes suponen al DX y al AX trabajando juntos.
REGISTROS APUNTADORES

Los registros SP (apuntador de la pila) Y BP (apuntador de base) estn


asociados con el registro SS y permiten al sistema accesar datos en el
segmento de la pila.
Registro SP: El apuntador de la pila de 16 bits esta asociado con el registro
SS y proporciona un valor de desplazamiento que se refiere a la palabra
actual que esta siendo procesada en la pila
Registro BP: El BP de 16 bits facilita la referencia de parmetros, los cuales
son datos y direcciones transmitidos va pila.
REGISTROS NDICE

Los registros SI y DI estn disponibles para direccionamiento indexado y para


sumas y restas.
Registro SI: El registro ndice fuente de 16 bits es requerido por algunas
operaciones con cadenas (de caracteres)
Registro DI: El registro ndice destino tambin es requerido por algunas
operaciones con cadenas de caracteres.
REGISTROS DE BANDERAS

OF (Overflow, desbordamiento): Indica desbordamiento de un bit


DF (direccin): Designa la direccin hacia la izquierda o hacia la derecha
para mover o comparar cadenas de caracteres.
IF (interrupcin):Indica que una interrupcin externa, como la entrada
desde el teclado, sea procesada o ignorada.
TF (trampa): Permite la operacin del procesador en modo de un paso. Los
programas depuradores, como el DEBUG, activan esta bandera de manera
que usted pueda avanzar en la ejecucin de una sola instruccin a un tiempo,
para examinar el efecto de esa instruccin sobre los registros de memoria.
SF (signo): Contiene el signo resultante de una operacin aritmtica (0 =
positivo y 1 = negativo).
ZF (cero): Indica el resultado de una operacin aritmtica o de comparacin
(0 = resultado diferente de cero y 1 = resultado igual a cero).
AF (acarreo auxiliar): Contiene un acarreo externo del bit 3 en un dato de 8
bits para aritmtica especializada.
PF (paridad): Indica paridad par o impar de una operacin en datos de 8
bits de bajo orden (mas a la derecha).
CF (acarreo): Contiene el acarreo de orden mas alto (mas a la izquierda)
despus de una operacin aritmtica; tambin lleva el contenido del ultimo
bit en una operacin de corrimiento o de rotacin.
REGISTROS DE PILA

La pila es un rea de memoria importante y por ello tiene, en vez de uno, dos
registros que se usan como desplazamiento (offset) para apuntar a su contenido. Se
usan como complemento al registro y son:
SP (Stack Pointer) : Se traduce como puntero de pila y es el que se reserva el
procesador para uso propio en instrucciones de manipulado de pila. Por lo general ,
el programador no debe alterar su contenido.
BP (Base pointer): Se usa como registro auxiliar. El programador puede usarlo
para su provecho.
LENGUAJE ENSAMBLADOR
DEFINICIN

Es un tipo de lenguaje de bajo nivel utilizado para escribir programas


informticos, y constituye la representacin ms directa del cdigo mquina
especfico para cada arquitectura de computadora
Versin simblica de los lenguajes mquina (MOV, ADD).La comunicacin en
lenguaje de mquina es particular de cada procesador que se usa, y
programar en este lenguaje es muy difcil y tedioso, por lo que se empez a
buscar mejores medios de comunicacin con sta. Los lenguajes
ensambladores tienen ventajas sobre los lenguajes de mquina.
CARACTERSTICAS

El programa lee un archivo escrito en lenguaje ensamblador y sustituye cada


uno de los cdigos mnemotcnicos por su equivalente cdigo mquina. Los
programas se hacen fcilmente portables de mquina a mquina y el clculo
de bifurcaciones se hace de manera fcil.
CLASIFICACIN
Son de muy bajo nivel, y su tarea consiste
bsicamente, en ofrecer nombres simblicos
a las distintas instrucciones, parmetros y
bsicos cosas tales como los modos de
direccionamiento

Descendientes de los ensambladores


bsicos, fueron muy populares en las
Modulares o dcadas de los 50 y los 60, fueron antes de
la generalizacin de los lenguajes de alto
macroensambladores nivel. Un macroinstruccin es el equivalente
a una funcin en un lenguaje de alto nivel
OPERACIONES BASICAS
Las operaciones bsicas en un lenguaje ensamblador son la suma la resta la multiplicacin y la
divisin y Necesitara un poco ms de informacin sobre la arquitectura y SO para el cual
programas.
Pero la idea bsica es:

--definir que parmetros tendr la funcin.


--hacer el programa, propiamente dicho, en assembler.

Siguiendo la convencin de pasaje de parmetros, manejar registros y posiciones de memoria,


devolviendo los resultados en donde deba (una posicin de memoria, el registro eax, etc.)
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.
Se denomina lenguaje mquina a la serie de datos que la parte fsica de la
computadora o hardware, es capaz de interpretar. El lenguaje mquina fue
el primero que empleo el hombre para la programacin de las primeras
computadoras. Una instruccin en lenguaje mquina puede
representarse de la siguiente forma: 011011001010010011110110
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.
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.
La memoria principal puede ser considerada como un arreglo lineal de
localidades de almacenamiento de un byte de tamao. Cada localidad de
almacenamiento tiene asignada una direccin que la identifica

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 concuerde
con el camino seguido por el programa, debido al uso de procedimientos,
funciones, subrutinas, arreglos, etc

Das könnte Ihnen auch gefallen