Representação intermediária do papagaio - Parrot intermediate representation

A representação intermediária do Parrot ( PIR ), anteriormente chamada de código intermediário (IMC), é uma das duas linguagens de montagem da máquina virtual Parrot . A outra é a linguagem assembly Parrot ou PASM. Comparado ao PASM, o PIR existe em uma camada de abstração ligeiramente superior e fornece registros temporários e registros nomeados, simplificando a geração de código.

Embora o Parrot ainda esteja evoluindo, ele está sendo usado em muitas capacidades diferentes e passou por vários lançamentos.

Visão geral

O PIR fornece um conjunto de abstrações que permitem ao programador ignorar certas redundâncias no bytecode do Parrot e escrever rapidamente o código que segue as complexidades do Parrot, como as convenções de chamada.

Abstrações

O PIR fornece abstração de tipo e polimorfismo até certo ponto. Por exemplo, o + operador " " pode ser usado com int , num ou ambos:

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

Convenções de chamada

As convenções de chamada no Parrot são complexas, mas toda essa complexidade pode ser ocultada usando as diretivas PIR:

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

Cada uma das diretivas com o prefixo " . " se expande para o bytecode necessário do Parrot, mas não representa diretamente nenhuma operação fundamental do Parrot.

Exemplo

O programa hello world no PIR é

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

Se o programa for salvo como hello.pir , ele pode ser compilado e executado com este comando: parrot hello.pir

links externos