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

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

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

Обзор

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

Абстракции

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

 .местный int а .местный число б а = 1 б = 1.1 .местный число c c = а + б

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

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

 .суб фу  .парам int а  .парам int б  .местный int tmp  tmp = а + б  .возвращаться (tmp) .конец

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

Пример

В привет мировая программа в ПИР

 .суб Привет :главный  Распечатать "Привет, мир!" .конец

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

внешняя ссылка