Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CODIGO OBJETO
INTRODUCCIÓN
• Una vez terminado el análisis sintáctico, comienza la generación de código.
Esta fase suele dividirse en dos partes:
• Generación de código intermedio.
• Generación de código de maquina.
• El código intermedio se genera para una máquina virtual. Estas máquinas se
definen con dos objetivos:
• Ser lo suficientemente simples como para poder generar código para ellas de manera
sencilla, pero con la suficiente riqueza para poder expresar las construcciones del
lenguaje fuente.
• Estar lo suficientemente próximas a los procesadores reales para que el paso del código
intermedio al código de máquina sea prácticamente directo.
• Aunque en principio estas dos fases bastan para la generación del código
final, en la práctica están mezcladas con fases de optimización.
• La generación de código tiene como objetivo generar el ejecutable que después empleará el
usuario. Sin embargo, es habitual que el producto del compilador no sea directamente un
fichero ejecutable. Es bastante más común que sea un fichero en lenguaje ensamblador. De
esta manera, se evitan problemas como tener que medir el tamaño exacto de las
instrucciones o llevar la cuenta de sus direcciones. Además, es muy probable que el código
generado tenga referencias a objetos externos como funciones de biblioteca.
REGISTROS
LOS REGISTROS SON LA MEMORIA PRINCIPAL DE LA
COMPUTADORA. EXISTEN DIVERSOS REGISTROS DE
PROPÓSITO GENERAL Y OTROS DE USO EXCLUSIVO.
ALGUNOS REGISTROS DE PROPÓSITO GENERAL SON
UTILIZADOS PARA CIERTO TIPO DE FUNCIONES.
EXISTEN REGISTROS ACUMULADORES, PUNTERO DE
INSTRUCCIÓN, DE PILA, ETC.
Registros índices
Las instrucciones de máquina o instrucciones del computador son las que determinan el funcionamiento de la
CPU que las ejecuta, la CPU puede realizar una diversidad de funciones que son el reflejo de la variedad de las
instrucciones definidas para dicha CPU, el programador tiene un repertorio de instrucciones como medio para
controlar la CPU.
Las operaciones más complejas se realizan combinando estas instrucciones sencillas, que
pueden ser ejecutadas secuencialmente o mediante instrucciones de control de flujo.
• El lenguaje máquina realiza un conjunto de operaciones
predeterminadas llamadas microoperaciones.
1
• Protección
Si varios programas comparten la memoria principal, se
debería asegurar que el programa no sea capaz de cambiar
las ubicaciones no pertenecientica él. Aunque una
acción de escritura puede tener efectos más graves que
una de lectura, esta última tampoco debería 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 información
(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.
• Reubicación
La técnica de multiprogramación requiere que varios programas
ocupen la memoria al
mismo tiempo. Sin embargo no se sabe con anticipació
n donde será cargado cada programa por lo que no es
práctico usar direccionamiento absoluto de memoria
• Organización física
Debido al costo de una memoria principal rápida, éste
se usa en conjunto con una memoria secundaria mucho más
lenta (y por consiguiente, barata) a fines de extender su capacidad.
• Organización lógica
Aunque la mayor parte de las memorias son organizadas li
nealmente con un direccionamiento secuencial, esto difícilmente
concuerde con el camino seguido por el programa, debido al uso de
procedimientos, funciones, subrutinas, arreglos, etc.
EJEMPLO
GENERACIÓN DE CÓDIGO OBJETO
• El enfoque más simple de la etapa de generación del código
objeto es:
• Para cada instrucción (del código intermedio) se tiene una
plantilla con la correspondiente secuencia de instrucciones
en lenguaje simbólico del procesador objetivo.
La secuencia de instrucciones
LD AX,B
LD BX,C
en lenguaje simbólico que
A:=B+C corresponde a esa instrucción
ADD AX,BX
ST AX,A depende de la arquitectura
del procesador para el cual el
GENERACIÓN DE CÓDIGO GENERACIÓN DE CÓDIGO programa es generado
INTERMEDIO OBJETO