Jump to content

Промежуточное представление попугая

( Промежуточное представление Parrot PIR ) , ранее называвшееся Промежуточным кодом (IMC), является одним из двух языков ассемблера для виртуальной машины Parrot . Другой — ассемблер Parrot или PASM. По сравнению с PASM, PIR существует на несколько более высоком уровне абстракции и предоставляет временные и именованные регистры, упрощая генерацию кода.

Хотя Parrot все еще развивается, в настоящее время он используется в самых разных целях и выдержал несколько выпусков.

PIR предоставляет набор абстракций, которые позволяют программисту игнорировать определенные избыточности в байт-коде Parrot и быстро писать код, соответствующий сложностям Parrot, таким как соглашения о вызовах.

Абстракции

[ редактировать ]

PIR в некоторой степени обеспечивает как абстракцию типов, так и полиморфизм . Например, " +"Оператор можно использовать с int, num или оба:

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

Соглашения о вызовах

[ редактировать ]

Соглашения о вызовах в Parrot сложны, но всю эту сложность можно скрыть с помощью директив PIR:

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

Каждая из директив с префиксом " ." расширяется до необходимого байт-кода Parrot, но не представляет напрямую какую-либо фундаментальную операцию Parrot.

Программа hello world в PIR

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

Если программа сохранена как hello.pir , ее можно скомпилировать и выполнить с помощью этой команды: parrot hello.pir

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d9d6c8cc326dc3ae1e3ba27b07e1bd64__1714286340
URL1:https://arc.ask3.ru/arc/aa/d9/64/d9d6c8cc326dc3ae1e3ba27b07e1bd64.html
Заголовок, (Title) документа по адресу, URL1:
Parrot intermediate representation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)