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:
Para la multiplicacion
Para la suma
Para la asignacion
y = 5; requiere 1 temporal:
Para la asignacion
El total de temporales totales requeridos son 3, de modo que se generan los temporales T0, T1 y T2
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:
Que traduce a:
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