Jump to content

Портативный компилятор C

Портативный компилятор C
Оригинальный автор(ы) Стивен С. Джонсон
Разработчик(и) AT&T Bell Laboratories
Первоначальный выпуск 1979 год ; 45 лет назад ( 1979 )
Стабильная версия
1.1.0 / 10 декабря 2014 г .; 9 лет назад ( 10.12.2014 )
Написано в С
Операционная система Unix и Unix-подобные
Тип Си Компилятор
Лицензия Лицензия БСД
Веб-сайт сеть .архив .org /веб /20231212090621 /http: //ПКК .пух .что .se / Отредактируйте это в Викиданных

Портативный компилятор C (также известный как pcc или иногда pccm — портативный компилятор C) — ранний компилятор языка программирования C, написанный Стивеном К. Джонсоном из Bell Labs в середине 1970-х годов. [1] частично основанный на идеях, предложенных Аланом Снайдером в 1973 году, [2] [3] и «распространяется как компилятор C компанией Bell Labs… с благословения Денниса Ритчи ». [4]

Будучи одним из первых компиляторов, которые можно было легко адаптировать для вывода кода для различных компьютерных архитектур, компилятор имел долгий срок службы. Он дебютировал в седьмом издании Unix и поставлялся с BSD Unix до выпуска 4.4BSD в 1994 году, когда он был заменен компилятором C. GNU В свое время он оказал большое влияние, настолько, что в начале 1980-х годов на его основе было основано большинство компиляторов C. [5] Андерс Магнуссон и Питер А. Йонссон возобновили разработку pcc в 2007 году, тщательно переписав его для поддержки стандарта C99 . [6]

Ключевыми особенностями PCC являются его портативность и улучшенные диагностические возможности. Компилятор исходных был спроектирован таким образом, что лишь некоторые из его файлов являются машинно -зависимыми . Он относительно устойчив к синтаксическим ошибкам и выполняет более тщательные проверки достоверности, чем его современники. [ по мнению кого? ]

Первый компилятор C, написанный Деннисом Ритчи , использовал анализатор рекурсивного спуска , включал в себя конкретные знания о PDP-11 и полагался на дополнительный машинно-специфичный оптимизатор для улучшения генерируемого им кода на языке ассемблера. Напротив, pccm Джонсона был основан на синтаксическом анализаторе, сгенерированном yacc , и использовал более общую модель целевой машины. Оба компилятора создавали код на языке ассемблера, ориентированный на конкретную цель, который затем собирали для создания связываемых объектных модулей.

Более поздние версии PCC, известные в Bell Labs как «QCC» и «RCC», поддерживали другие модели целевой архитектуры. [ нужна ссылка ]

Язык, реализуемый PCC, представляет собой расширенную версию K&R C , которую Бьёрн Страуструп назвал «Классическим C», включающую в себя void тип возвращаемого значения (для функций, которые не возвращают никакого значения), перечисления и присвоение структуры. [4]

Текущая версия

[ редактировать ]

Поддерживается новая версия pcc, основанная на оригинале Стива Джонсона. [ когда? ] Андерс Магнуссон. [6] Компилятор предоставляется по лицензии BSD , а его разработка финансируется некоммерческой организацией BSD Fund. По словам Магнуссона:

Большим его преимуществом (кроме того, что он имеет лицензию BSD, для фанатов лицензий) является то, что он быстрый, в 5-10 раз быстрее, чем gcc, и при этом создает разумный код. <...> [Это] тоже довольно просто портировать...

Андерс Магнуссон [7]

Эта новая версия была добавлена ​​в исходные деревья NetBSD pkgsrc и OpenBSD в сентябре 2007 года. [8] а затем в основное дерево исходного кода NetBSD . [9] Были некоторые предположения, что в конечном итоге его можно будет использовать для замены компилятора GNU C в операционных системах на базе BSD. [10] хотя FreeBSD [11] [12] и NetBSD [13] оба рассматривают Clang как потенциальную замену, а Тео де Раадт из OpenBSD утверждает, что pcc еще не готов стать заменой gcc, и избавление от gcc не является главным приоритетом. [14] 29 декабря 2009 г. компания pcc смогла создать функциональный образ ядра OpenBSD x86 . [15]

PCC версии 1.0 была выпущена 1 апреля 2011 года. [16] Начиная с этого выпуска, компилятор поддерживает архитектуры процессоров x86 и x86-64 и работает на NetBSD , OpenBSD , FreeBSD , различных дистрибутивах Linux и Microsoft Windows . [17] Дальнейшая разработка, включая поддержку большего количества архитектур, а также интерфейсов FORTRAN 77 и C++ , продолжается с 2022 года.

PCC был удален из дерева исходного кода OpenBSD в 2012 году. [18] Разработка застопорилась, и ни один сопровождающий не предпринял никаких действий, чтобы превратить его во что-то, что могло бы стать практической альтернативой GNU Compiler Collection . [19] [20]

Последняя версия PCC, а именно 1.1.0, была выпущена 10 декабря 2014 года. [21]

См. также

[ редактировать ]
  1. ^ Джонсон, Южная Каролина (1978). «Портативный компилятор: теория и практика» . Материалы 5-го симпозиума ACM SIGACT-SIGPLAN по принципам языков программирования. Тусон, Аризона. : 97–104. дои : 10.1145/512760.512771 . S2CID   14390804 .
  2. ^ Снайдер, А. (1975). «Портативный компилятор языка C» . Магистерская диссертация. Массачусетский технологический институт, Кембридж, Массачусетс . Архивировано из оригинала 5 сентября 2006 г. Проверено 19 июля 2006 г.
  3. ^ Джонсон, Южная Каролина (1981). Обзор портативного компилятора C. Руководство программиста Unix, 7-е издание, том 2. Холт, Райнхарт и Уинстон. ISBN  0-03-061743-Х .
  4. ^ Перейти обратно: а б Страуструп, Бьярн (2002). Соперничество между братьями и сестрами: C и C++ (PDF) (Отчет). Лаборатории AT&T.
  5. ^ Ричи, Деннис М. (1993). «Развитие языка Си» . Вторая конференция ACM SIGPLAN по истории языков программирования. Кембридж, Массачусетс . стр. 201–208 . Проверено 30 декабря 2008 г. В начале десятилетия почти каждый компилятор основывался на pcc Джонсона ; к 1985 году было много независимо выпущенных компиляторов.
  6. ^ Перейти обратно: а б «история ПКК» . PCC — портативный компилятор C. 21 июня 2010 г. Проверено 26 июня 2012 г.
  7. ^ Эрдели, Майк (15 сентября 2007 г.). «Импортированный компилятор PCC с лицензией BSD» . Журнал OpenBSD . Проверено 17 декабря 2011 г.
  8. ^ Мурбек, Отто (15 сентября 2007 г.). «CVS: cvs.openbsd.org: src» . openbsd-cvs (список рассылки).
  9. ^ Браунли, Дэвид (20 сентября 2007 г.). «CVS-фиксация: src/dist/pcc» . исходные изменения (список рассылки).
  10. ^ «Компилятор GCC наконец-то вытеснен PCC?» . /. 17 сентября 2007 г.
  11. ^ Ларабель, Майкл (12 мая 2012 г.). «FreeBSD 10 использует компилятор Clang, GCC устарел» . Фороникс . Архивировано из оригинала 10 апреля 2015 года . Проверено 23 апреля 2015 г.
  12. ^ Брукс, Дэвис (5 ноября 2012 г.). «ВНИМАНИЕ: Clang теперь используется по умолчанию на x86» (список рассылки) . Проверено 23 апреля 2015 г.
  13. ^ Йорг, Зонненбергер (17 октября 2013 г.). «Импорт LLVM/Clang» (список рассылки) . Проверено 23 апреля 2015 г.
  14. ^ Мацан, Джем (15 октября 2007 г.). «Подробнее о новом компиляторе OpenBSD» . Отчет Джема . Архивировано из оригинала 4 января 2012 г. Проверено 17 декабря 2011 г. Но это никогда не было в повестке дня, понимаете. Некоторые думают, что мы ненавидим код GNU. Но дело в том, что мы ненавидим большой код и код с ошибками, который не поддерживается основной веткой разработки. Это настоящая проблема… gcc с каждым выпуском становится примерно на 5-6% медленнее, содержит новые ошибки, генерирует дрянной код и сводит нас с ума. Это просто попытка посмотреть, может ли появиться что-то лучшее.
  15. ^ де Верд, Пол (29 декабря 2009 г.). «Призыв к тестированию: PCC и ядро ​​OpenBSD» . Журнал OpenBSD . Проверено 17 декабря 2011 г.
  16. ^ Магнуссон, Андерс (1 апреля 2011 г.). «Релиз 1.0» . Портативный компилятор C. Проверено 17 декабря 2011 г.
  17. ^ «Фонд BSD: фонд PCC» . bsdfund.org . 01 апреля 2011 г. Архивировано из оригинала 5 января 2009 г. Проверено 26 июня 2012 г.
  18. ^ Пол Ирофти (12 апреля 2012 г.). «CVS: cvs.openbsd.org: src» .
  19. ^ Питер Хесслер (18 июня 2012 г.). «Re: История удаления PCC?» .
  20. ^ Миод Валлат (31 июля 2013 г.). «Компиляторы OpenBSD» .
  21. ^ Магнуссон, Андерс (10 декабря 2014 г.). «Релиз 1.1.0» . Портативный компилятор C. Проверено 22 апреля 2022 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cc471d7bc4bd444a02fa870239c53196__1717158360
URL1:https://arc.ask3.ru/arc/aa/cc/96/cc471d7bc4bd444a02fa870239c53196.html
Заголовок, (Title) документа по адресу, URL1:
Portable C Compiler - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)