Разработчик(и) | Дэйв Хэнсон и Крис Фрейзер |
---|---|
Первоначальный выпуск | 1994 ( 1994 ) |
Стабильный релиз | 4.2 / 4 сентября 2002 г. ( 2002-09-04 ) |
Написано в | С |
Операционная система | Кроссплатформенный |
Тип | Компилятор |
Лицензия | Лицензия LCC [1] |
Веб-сайт | drh.github.io/lcc/ |
LCC («Local C Compiler» или «Little C Compiler») — небольшой, перенастраиваемый компилятор для языка программирования ANSI C. Хотя его исходный код доступен бесплатно для личного использования, [2] он не является программным обеспечением с открытым исходным кодом или свободным программным обеспечением в соответствии с обычными определениями, поскольку продукты, полученные из LCC, не могут быть проданы, хотя компоненты, не полученные из LCC, могут быть проданы. [1] Он был разработан Крисом Фрейзером и Дэвидом Хэнсоном .
LCC задуман как очень простой для понимания и хорошо документирован; его конструкция описана в книге Фрейзера и Хансона A Retargetable C Compiler: Design and Implementation . Книга включает большую часть исходного кода для версии 3.6 компилятора, которая была написана как грамотная программа с использованием noweb . По состоянию на июль 2011 года текущая версия LCC — 4.2, но большая часть книги по-прежнему применима к этой версии. Основное изменение с момента публикации книги касается интерфейса генератора кода, который описан в отдельном документе. [3]
Исходный код LCC составляет около 20 000 строк, что намного меньше, чем у многих основных компиляторов. [4]
LCC может генерировать код для нескольких архитектур процессоров, включая Alpha , SPARC , MIPS и x86 ; также существует бэкэнд LCC, который генерирует общий промежуточный язык Microsoft . [5]
Движок id Tech 3 от id Software использует модифицированную версию LCC для компиляции исходного кода каждого игрового модуля или стороннего мода в байт-код, нацеленный на его виртуальную машину . [6] Это означает, что модули не обращают внимания на систему за пределами системных вызовов и ограниченного объема файловой системы , предлагаемого движком, что призвано снизить угрозу, создаваемую вредоносными авторами модов. Еще одно соображение заключается в том, что игры и моды, написанные для движка, переносимы без перекомпиляции; для выполнения модулей требуется только портировать виртуальную машину на новые платформы.
lcc-win32 — это интегрированный пакет среды разработки для Microsoft Windows , который включает в себя форк LCC. Существует аналог amd64 под названием lcc-win64, который доступен с 15 апреля 2012 года. [7]
Компилятор Pelles C представляет собой существенно модифицированную версию LCC, обеспечивающую поддержку C11 и C17 , поддержку amd64, дополнительные методы оптимизации, такие как встроенное расширение [8] и IDE .
Для 32-разрядных машин Windows Lcc используется по умолчанию, если для MathWorks MATLAB и связанных продуктов не установлен другой компилятор. [9]
LCC бесплатен для личного использования и может распространяться при условии, что все средства распространения и документация продукта признают это. Лицензия LCC опирается на примеры в нескольких случаях. LCC не может продаваться с целью получения прибыли, но может быть включена в другое программное обеспечение, которое продается с целью получения прибыли, при условии, что сам LCC распространяется бесплатно. Лицензии на пользователя и неограниченное использование доступны при обращении в Addison-Wesley, в частности, для компиляторов таких языков, как C++, для которых компилятор C может составлять большую часть его работы. [1]