La representación intermedia de Parrot ( PIR ), anteriormente denominada código intermedio (IMC), es uno de los dos lenguajes ensambladores de la máquina virtual Parrot . El otro es el lenguaje ensamblador 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 está utilizando en muchas capacidades diferentes y ha sido objeto de 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 llamadas.
Abstracciones
PIR proporciona abstracción de tipos y polimorfismo hasta cierto punto. Por ejemplo, el +
operador " " se puede utilizar con int
, num
o con ambos:
. local int a . local num b a = 1 b = 1.1 . local num 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 . param int a . param int b . local int tmp tmp = a + b . volver ( tmp ) . final
Cada una de las directivas con el prefijo " .
" se expande al código de bytes de Parrot requerido, pero no representa directamente ninguna operación fundamental de Parrot.
Ejemplo
El programa hola mundo en PIR es
. sub hello : impresión principal "¡Hola mundo! \ n" . final
Si el programa se guarda como hello.pir , se puede compilar y ejecutar con este comando:parrot hello.pir