La representación intermedia de Parrot ( PIR ), anteriormente denominada código intermedio (IMC), es uno de los dos lenguajes ensamblador de la máquina virtual Parrot . El otro es el lenguaje ensamblador de Parrot o PASM. En comparación con PASM, PIR opera en un nivel de abstracción ligeramente superior y proporciona registros temporales y con nombre, lo que simplifica la generación de código.
Si bien Parrot aún está en desarrollo, actualmente se utiliza en muchas funciones diferentes y ha tenido varias versiones.
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 ajuste a las complejidades de Parrot, como las convenciones de llamada.
Abstracciones
PIR proporciona tanto abstracción de tipos como polimorfismo hasta cierto punto. Por ejemplo, el +operador " " se puede usar con int, numo con ambos:
. local int a . local num b a = 1 b = 1.1 . local num c c = a + bConvenciones de llamadas
Las convenciones de llamada en Parrot son complejas, pero toda esa complejidad puede ocultarse mediante el uso de directivas PIR:
. sub foo . param int a . param int b . local int tmp tmp = a + b . return ( tmp ) . finCada una de las directivas precedidas por un " ." 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 hola : main print "Hola mundo!\n" . endSi el programa se guarda como hello.pir , se puede compilar y ejecutar con este comando:parrot hello.pir
Enlaces externos
- Redacción PIR
- Ejemplos de PIR
- lenguajes ensamblador
- Perl