Разработка компилятора для стековой процессорной архитектуры TF16 на основе LLVM
Аннотация
Разработка для стековых процессорных архитектур обычно ведётся с использованием устаревших низкоуровневых языков программирования или языка ассемблер. Поэтому актуальна задача поддержки языков программирования высокого уровня для таких архитектур. В этой работе мы рассматриваем процесс разработки и реализации на базе инфраструктуры LLVM/Clang полноценной системы программирования для языка Си для стековой архитектуры TF16. Использование именно LLVM в качестве базовой системы программирования обусловлено большими возможностями адаптации дополнительных компонентов системы программирования, например, таких как дизассемблер, компоновщик и отладчик для использования с новыми архитектурами. Нами были разработаны две версии компилятора. В первой версии компилятора архитектура TF16 рассматривалась как классическая регистровая архитектура, и сгенерированный код не использовал стековые возможности. Эта версия была относительно проста в разработке и служила точкой сравнения для второй версии компилятора. Во второй версии компилятора был разработан и реализован платформо-независимый алгоритм планирования команд с учётом особенностей стековых архитектур. При сравнении двух версий версия компилятора с поддержкой стековых возможностей генерирует код, который в среднем на 35.7% быстрее по времени выполнения и на 50.8% меньше по размеру, чем код, генерируемый версией компилятора без поддержки стековых возможностей. Разработанный алгоритм позволяет реализовать в компиляторе LLVM поддержку других стековых процессорных архитектур.
Об авторах
Леонид Владленович СКВОРЦОВРоссия
Стажёр-исследователь отдела компиляторных технологий
Роман Вячеславович БАЕВ
Россия
Старший лаборант отдела компиляторных технологий
Ксения Юрьевна ДОЛГОРУКОВА
Россия
Младший научный сотрудник отдела компиляторных технологий
Евгений Юрьевич ШАРЫГИН
Россия
Стажёр-исследователь отдела компиляторных технологий
Список литературы
1. Koopman P. Stack computers: the new wave. Halsted Press, 1989. 231 p.
2. Каршенбойм И. Стековые процессоры, или новое — это хорошо забытое новое. Компоненты и технологии, no. 2, 2004 г., стр. 130-134 / Karshenboim J. Stack processors, or new is the well-forgotten new. Components and technologies, no. 2, 2004, pp. 139-134 (In Russian).
3. Rather E, Colburn D, Moore C. The evolution of Forth. ACM SIGPLAN Notices, volю 28, тo. 3, 1993, pp. 177-199.
4. LLVM Compiler Infrastructure. Available at: https://llvm.org, accessed 10.09.2021.
5. Koopman P. A preliminary exploration of optimized stack code generation. Journal of Forth Application and Research, vol. 6, no. 3, 1994, pp. 241-251.
6. GCC, the GNU Compiler Collection. Available at https://gcc.gnu.org, accessed 10.09.2021.
7. Bailey C. Inter-boundary scheduling of stack operands: A preliminary study. In Proc. of the EuroForth Conference, 2000, pp 3-11.
8. Shannon M. A C Compiler for Stack Machines. MS Thesis. University of York, 2006, 116 p.
9. SCC, Simple C Compiler. Available at https://www.simple-cc.org, accessed 10.09.2021.
10. FCC, Fedjmike's C Compiler. Available at https://github.com/Fedjmike/fcc, accessed 10.09.2021.
Рецензия
Для цитирования:
СКВОРЦОВ Л.В., БАЕВ Р.В., ДОЛГОРУКОВА К.Ю., ШАРЫГИН Е.Ю. Разработка компилятора для стековой процессорной архитектуры TF16 на основе LLVM. Труды Института системного программирования РАН. 2021;33(5):137-154. https://doi.org/10.15514/ISPRAS-2021-33(5)-8
For citation:
SKVORTSOV L.V., BAEV R.V., DOLGORUKOVA K.Yu., SHARYGIN E.Yu. Developing an LLVM-based compiler for stack based TF16 processor architecture. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2021;33(5):137-154. (In Russ.) https://doi.org/10.15514/ISPRAS-2021-33(5)-8