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

externa länkar