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