Papegoja mellanrepresentation
Parrot intermediate representation ( PIR ), tidigare kallad Intermediate code (IMC), är ett av de två assemblerspråken för den virtuella Parrot-maskinen . Den andra är Parrot assembly language eller PASM. Jämfört med PASM finns PIR i ett något högre abstraktionslager och tillhandahåller temporära register och namngivna register, vilket förenklar kodgenerering.
Medan Parrot fortfarande utvecklas, används den för närvarande i många olika kapaciteter och har genomgått flera utgivningar.
Översikt
PIR tillhandahåller en uppsättning abstraktioner som gör att programmeraren kan ignorera vissa redundanser i Parrot- bytekoden och snabbt skriva kod som följer Parrots komplexitet, såsom anropskonventionerna.
Abstraktioner
PIR tillhandahåller både typabstraktion och polymorfism till viss del. Till exempel kan operatorn " +
" användas med int
, num
eller båda:
. lokal int a . lokalt antal b a = 1 b = 1,1 . lokalt num c c = a + b
Ringa konventioner
Anropskonventionerna i Parrot är komplexa, men all den komplexiteten kan döljas genom att använda PIR-direktiv:
. sub foo . param int a . param int b . lokal int tmp tmp = a + b . returnera ( tmp ). slutet
Vart och ett av direktiven med prefixet " . "
expanderar till den erforderliga Parrot-bytekoden, men representerar inte direkt någon grundläggande Parrot-operation.
Exempel
Hello world-programmet i PIR är
. sub hej : huvudtryck "Hej värld!\n " . slutet
Om programmet är sparat som hello.pir kan det kompileras och köras med detta kommando: parrot hello.pir