cer-0 / 5cv14

Práctica de la materia de compiladores
0 stars 0 forks source link

Generacion de codigo objeto para declaraciones y asignaciones #4

Closed DavidENicolasC closed 9 months ago

DavidENicolasC commented 9 months ago

Entre otros cambios que se listan en los commits, existía un problema con la función que generaba el código objeto en Ensamblador, ya que no lo hacía correctamente.

Ahora, el compilador acepta programas como el siguiente:

int a;
int y;
y = 5;
a = 3 * y + 5;

Que traduce a:

.model small

.stack

.data
    a DW ??
    y DW ??
    T0 DW ??
    T1 DW ??
    T2 DW ??

.code
    begin:
    END begin

La cantidad de temporales generados se establece de acuerdo con la máxima cantidad de temporales necesarios para una instrucción de asignación.

En el ejemplo anterior, la instrucción *a = 3 y + 5;** requiere 3 temporales:

y = 5; requiere 1 temporal:

El total de temporales totales requeridos son 3, de modo que se generan los temporales T0, T1 y T2