Зарегистрировать язык перевода
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2017 г. ) |
В информатике (IR) , язык передачи регистров ( RTL ) — это своего рода промежуточное представление которое очень близко к языку ассемблера , например тому, который используется в компиляторе . Он используется для описания потока данных на передачи регистров архитектуры уровне . В академических статьях и учебниках часто используется форма RTL в качестве архитектурно-нейтрального языка ассемблера. RTL используется как имя конкретного промежуточного представления в нескольких компиляторах, включая GNU Compiler Collection (GCC), Zephyr и европейские проекты компиляторов CerCo и CompCert .
История
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( январь 2011 г. ) |
Идея, лежащая в основе RTL, была впервые описана в книге «Проектирование и применение перенацеливаемого оптимизатора глазка» . [1]
GCC
[ редактировать ]В GCC RTL генерируется из представления GIMPLE , преобразуется различными проходами в промежуточном компоненте GCC , а затем преобразуется в язык ассемблера.
RTL GCC обычно записывается в форме, похожей на Lisp S-выражение :
(set (reg:SI 140) (plus:SI (reg:SI 138) (reg:SI 139)))
Это выражение побочного эффекта гласит: «Суммируйте содержимое регистра 138 с содержимым регистра 139 и сохраните результат в регистре 140». SI определяет режим доступа для каждого регистра. В примере это «SImode», т.е. «обращаться к регистру как к 32-битному целому числу».
Последовательность генерируемых RTL имеет некоторую зависимость от характеристик процессора, для которого GCC генерирует код. Однако значение RTL более или менее не зависит от цели: обычно можно прочитать и понять часть RTL, не зная, для какого процессора она была сгенерирована. Точно так же значение RTL обычно не зависит от исходного языка высокого уровня программы.
Язык передачи регистров — это система для выражения в символической форме последовательностей микроопераций между регистрами цифрового модуля. Это удобный инструмент для краткого и точного описания внутренней организации цифровых компьютеров. Его также можно использовать для облегчения процесса проектирования цифровых систем. [2]
Ссылки
[ редактировать ]- ^ «Дэвидсон и Фрейзер; Проектирование и применение перенацеливаемого оптимизатора глазка ; ToPLaS v2 (2) 191-202 (апрель 1980 г.)» (PDF) .
- ^ Мано, Моррис М. (1992). Архитектура компьютерных систем (3-е изд.). Прентис Холл. п. 94. ИСБН 0131755633 .