Primula C CompilerДобро пожаловать на сайт разработчиков компилятора Primula C!

Мы — команда энтузиастов, работающая над созданием оригинального компилятора языка Си.
Наша цель — создать лицензионно чистый, простой и легко переносимый компилятор для использования в проекте Хамелеон.

Проект компилятора стартовал в январе 2013 года. В это время мы занимались проектированием FPGA SoC, разрабатывая аппаратное микроядро L4 для простого микропроцессора с оригинальной системой команд. В какой-то момент нам понадобился ассемблерный код для отладки микропроцессора в симуляторе. Система команд микропроцессора в этот момент ещё не была зафиксирована, поэтому большие куски ассемблерного кода приходилось постоянно переписывать в соответствии с новыми идеями и в поисках оптимального решения. Таким образом возникла необходимость генерировать ассемблерный код «на лету».

Решение писать компилятор «с нуля» пришло не сразу. Сначала были изучены существующие решения. Поскольку использовалась новая, ни с чем несовместимая, система команд микропроцессора, то любой из существующих компиляторов требовал доработки модуля генерации кода. Нами были сформированы следующие требования — компилятор должен быть весьма простым, чтобы время на его изучение, понимание кода и принципов работы, было меньше, чем написание собственного решения. Компилятор не должен требовать сторонних библиотек и инструментов — для его работы должно хватать минимального набора стандартных POSIX функций. Исполняемый код компилятора должен быть весьма компактным — в перспективе должен помещаться на образ дискеты 1.44Мб. Наконец, лицензия компилятора не должна накладывать ограничения на любое его использование в нашем проекте Xameleon.

Нам не удалось найти компромиссное решение, удовлетворяющее всем поставленным требованиям, поэтому в составе проекта Хамелеон возник новый проект — Primula C.