Selección de Instrucciones
Objetivo
El objetivo de esta última fase del compilador es, a partir del AST, generar un programa en el lenguaje de salida equivalente al programa de entrada.
En este tutorial, el lenguaje de salida será el de la máquina abstracta MAPL.
WARNING
Se aconseja, además de descargar la máquina virtual de MAPL, ejecutar paso a paso los programas contenidos en la carpeta "\Tutorial\1 Juego de Instrucciones" usando GVM.exe
para aprender el juego de instrucciones de manera interactiva.
Supóngase el siguiente programa en el fichero input.txt
:
DATA
float f;
int i;
CODE
i = 5;
print i / 2; // output -> 2
f = 5.0;
print (f / 2.0 + 1.0) * 2.0; // output -> 7.0
Al ejecutar el compilador, este deberá producir el siguiente programa equivalente en MAPL:
c
#source "input.txt"
#GLOBAL f:float
#GLOBAL i:int
#line 6
pusha 4
push 5
storei
#line 7
pusha 4
loadi
push 2
divi
outi
#line 9
pusha 0
pushf 5.0
storef
#line 10
pusha 0
loadf
pushf 2.0
divf
pushf 1.0
addf
pushf 2.0
mulf
outf
halt