Reprezentacja pośrednia papugi - Parrot intermediate representation

Pośredni przedstawienie Parrot ( PIR ), uprzednio zwany kod pośredni (IMC) jest jednym z dwóch asemblera na maszynie wirtualnej Parrot . Drugi to język asemblera Parrot lub PASM. W porównaniu do PASM, PIR istnieje na nieco wyższej warstwie abstrakcji i zapewnia rejestry tymczasowe oraz rejestry nazwane, upraszczając generowanie kodu.

Chociaż Parrot wciąż się rozwija, jest obecnie używany w wielu różnych zastosowaniach i przeszedł kilka wydań.

Przegląd

PIR zapewnia zestaw abstrakcji, które pozwalają programiście zignorować pewne nadmiarowości w kodzie bajtowym Parrot i szybko napisać kod zgodny ze złożonością Parrot, na przykład konwencjami wywoływania.

Abstrakcje

PIR zapewnia w pewnym stopniu zarówno abstrakcję typu, jak i polimorfizm . Na przykład, „ + ” podmiot może być stosowany z int , num lub oba:

 .local int a
 .local num b
 a = 1
 b = 1.1
 .local num c
 c = a + b

Konwencje telefoniczne

Konwencje wywoływania w programie Parrot są złożone, ale całą tę złożoność można ukryć za pomocą dyrektyw PIR:

 .sub foo
  .param int a
  .param int b
  .local int tmp
  tmp = a + b
  .return (tmp)
 .end

Każda z dyrektyw poprzedzona znakiem „ . ” rozwija się do wymaganego kodu bajtowego Parrot, ale nie reprezentuje bezpośrednio żadnej podstawowej operacji Parrot.

Przykład

Program hello world w PIR to

 .sub hello :main
  print "Hello world!\n"
 .end

Jeśli program jest zapisany jako hello.pir , można go skompilować i wykonać za pomocą tego polecenia: parrot hello.pir

Zewnętrzne linki