Skip to content

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