Промежуточное представление попугая - 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