Разработчик(и) | Рон Кейн, Джеймс Э. Хендрикс |
---|---|
Первоначальный выпуск | 1980 ( 1980 ) |
Написано в | язык программирования С |
Тип | Компилятор |
Лицензия | Защищено авторским правом, но может быть распространено |
Small-C — это одновременно подмножество языка программирования C , подходящее для микрокомпьютеров с ограниченными ресурсами и встроенных систем , и реализация этого подмножества. Первоначально ценная как ранний компилятор для микрокомпьютерных систем, доступных в конце 1970-х и начале 1980-х годов, реализация также была полезна как пример, достаточно простой для учебных целей.
Оригинальный компилятор, написанный Роном Каином на языке Small-C для Intel 8080 , появился в выпуске журнала Dr. Dobb's Journal за май 1980 года . Джеймс Э. Хендрикс улучшил и расширил оригинальный компилятор и написал The Small-C Handbook . Рон загрузил Small-C в систему SRI International PDP 11/45 Unix с учетной записью, предоставленной Джоном Бассом для разработки Small C. Предоставленный исходный код был выпущен с разрешения руководства в общественное достояние . [ требуется ссылка ] Small-C был важен для крошечных компьютеров в манере, в некоторой степени аналогичной важности GCC для больших компьютеров. Так же, как и его аналоги в Unix , компилятор генерирует ассемблерный код , который затем должен быть транслирован в машинный код доступным ассемблером .
Small-C — это перенастраиваемый компилятор . Для переноса Small-C требуется только переписать внутренний генератор кода и вызовы интерфейса библиотеки к операционной системе для целевого процессора.
Этот раздел содержит слишком много или слишком длинные цитаты . ( Июнь 2021 г. ) |
«В мае 1980 года в журнале доктора Добба была опубликована статья под названием «Небольшой компилятор C для 8080-х», в которой Рон Кейн представил небольшой компилятор для подмножества языка C. Самой интересной особенностью компилятора, помимо его небольшого размера, был язык, на котором он был написан — тот, который он компилировал. Это был самокомпилятор! (Хотя сегодня это обычное дело, в то время это была довольно новая идея.) С помощью простого однопроходного алгоритма его компилятор генерировал язык ассемблера для процессора 8080. Однако, будучи небольшим, он имел свои ограничения. Он распознавал только символы, целые числа и одномерные массивы любого типа. Единственным устройством управления циклом был оператор while. Булевых операторов не было, поэтому вместо них использовались побитовые логические операторы & (AND) и | (OR). Но даже с этими ограничениями это был очень мощный язык, и его было приятно использовать, особенно по сравнению с языком ассемблера.
Осознавая необходимость улучшений, Рон призвал меня создать вторую версию, и в декабре 1982 года она также появилась в журнале доктора Добба. Новый компилятор дополнил Small C (1) оптимизацией кода, (2) инициализацией данных, (3) условной компиляцией, (4) классом внешнего хранилища, (5) операторами for, do/while, switch и goto, (6) операторами комбинированного присваивания, (7) булевыми операторами, (8) оператором дополнения до единицы , (9) блокировкой локальных переменных и (10) различными другими функциями. Затем в 1984 году Эрнест Пейн и я разработали и опубликовали совместимую с CP/M библиотеку времени выполнения для компилятора. Она состояла из более чем 80 функций и включала большинство из них в стандартной библиотеке ввода-вывода UNIX C — тех, которые относились к среде CP/M. Это стало версией 2.1 и темой The Small C Handbook. [1]