La representación intermedia de Parrot ( PIR ), anteriormente llamada código intermedio (IMC), es uno de los dos lenguajes ensambladores de la máquina virtual de Parrot . El otro es el lenguaje ensamblador de Parrot o PASM. En comparación con PASM, PIR existe en una capa de abstracción ligeramente superior y proporciona registros temporales y registros con nombre, lo que simplifica la generación de código.
Si bien Parrot aún está evolucionando, actualmente se utiliza en muchas capacidades diferentes y ha experimentado varios lanzamientos.
Descripción general
PIR proporciona un conjunto de abstracciones que permiten al programador ignorar ciertas redundancias en el código de bytes de Parrot y escribir rápidamente código que se adhiera a las complejidades de Parrot, como las convenciones de llamada.
Abstracciones
PIR ofrece abstracción de tipos y polimorfismo hasta cierto punto. Por ejemplo, el +operador " " se puede utilizar con int, numo con ambos:
. int local a
. número local b a = 1 b = 1.1
. número local c c = a + b
Convenciones de llamadas
Las convenciones de llamada en Parrot son complejas, pero toda esa complejidad se puede ocultar mediante el uso de directivas PIR:
. sub foo
. parámetro int a
. parámetro int b
. local int tmp
tmp = a + b
. return ( tmp )
. fin
Cada una de las directivas precedidas por un " ." se expande al bytecode de Parrot requerido, pero no representa directamente ninguna operación fundamental de Parrot.
Ejemplo
El programa Hola Mundo en PIR es
. sub hola : main
print "Hola mundo!\n"
. end
Si el programa se guarda como hello.pir , se puede compilar y ejecutar con este comando:parrot hello.pir
Enlaces externos
- Escritura PIR
- Ejemplos de PIR