Está en la página 1de 2

El código intermedio es un código abstracto independiente de la máquina para la que se genera el

código objeto.

Generación del código intermedio:

En lugar de generar código ensamblador directamente, los compiladores generan un código


intermedio que es muy cercano al código ensamblador. Pero, ¿por qué no simplemente generar el
código ensamblador sin pasar por el código intermedio? Porque utilizando el código intermedio se
puede reutilizar la parte que genera este código en otro compilador para una computadora con
distinto procesador tan solo cambiando el generador de código. Es decir, generando código
ensamblador tendremos un lenguaje distinto en cada máquina, pero con el código intermedio
podemos tener un punto medio, un lenguaje común. El código intermedio debe ser:

1. Fácil de producir y
2. Ser fácil de traducir a la maquina destino

El código intermedio no es un lenguaje de programación de ninguna maquina real, sino que es un


lenguaje de una maquina abstracta y por ello se debe definir lo más “general” posible para que
facilite la traducción a cualquier maquina real.

 Maquina real: Un sistema computacional compuesto de partes físicas (hardware). Una


computadora. Sobre ella se ejecutan sistemas operativos y porcesos.
 Maquina abstracta: Es el modelo teórico de una computadora. Mediante el uso de
máquinas abstractas es posible calcular la cantidad de recursos (tiempo, memoria, etc.)
necesarios para una operación sin construir un equipo real.
Estos de aquí solo por si los ocupas :v
El OBJETIVO del código intermedio es reducir el número de programas necesarios para construir
traductores y permitir más fácilmente la transportabilidad entre maquinas. Sin el código
intermedio sería necesario verificar el procesador de ambas máquinas y considerar todas las
posibles traducciones necesarias entre cada máquina.

La utilización de un código intermedio permite construir en mucho menos tiempo un compilador


para otra máquina y también permite construir para otros lenguajes fuente generando códigos
para la misma máquina.

El generador de código intermedio recibe como ENTRADA código fuente. Y su SALIDA consiste en
una secuencia de código de tres direcciones.

El código de tres direcciones consiste en una secuencia de instrucciones, cada una con un máximo
de tres operadores. Es un tipo de código que podemos representar en su forma general como:

x: = y op z

Donde “x”, “y” y “z” pueden ser nombres, constantes o variables temporales y “op” representa
cualquier tipo de operador. Por lo general se siguen tres reglas básicas para este código:
1. Cada instrucción de tres direcciones contiene por lo menos un operador, además de la
asignación, por lo tanto, cuando se generan estas instrucciones, el traductor tiene que
decidir el orden en que deben efectuarse las operaciones.
2. El traductor debe generar un nombre temporal para guardar los valores calculados por
cada instrucción.
3. Algunas instrucciones de tres direcciones tienen menos de tres operadores.

t1 = inttofloat(60)
t2 = id3 * t1                          
t3 = id2 + t2
id1 = t3

También podría gustarte