В информатике язык передачи регистров (RTL ) является разновидностью i Промежуточное представление (IR), которое очень близко к языку ассемблера, например, которое используется в компиляторе . Он используется для описания потока данных на уровне передачи регистров архитектуры. В академических статьях и учебниках часто используется форма RTL в качестве архитектурно-нейтрального ассемблера. RTL используется как имя определенного промежуточного представления в нескольких компиляторах, включая GNU Compiler Collection (GCC), Zephyr и проекты европейских компиляторов, а также CompCert.
В 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 обычно не зависит от исходного высокоуровневого языка программы.
Язык передачи регистров - это система для выражения в символической форме последовательностей микроопераций между регистрами цифрового модуля. Это удобный инструмент для краткого и точного описания внутренней организации цифровых компьютеров. Его также можно использовать для облегчения процесса проектирования цифровых систем.
Идея RTL была впервые описана в: Davidson and Fraser; Дизайн и применение ретаргетируемого оптимизатора глазка; ToPLaS v2 (2) 191-202 (апрель 1980 г.)