Малый-C


Small-C является одновременно подмножеством языка программирования C , подходящим для микрокомпьютеров с ограниченными ресурсами и встроенных систем , и реализацией этого подмножества. Первоначально ценный как ранний компилятор для микрокомпьютерных систем, доступный в конце 1970-х - начале 1980-х годов, реализация также была полезна как пример, достаточно простой для учебных целей.

Первоначальный компилятор, написанный Роном Каином на языке Small-C для Intel 8080 , появился в выпуске журнала Dr. Dobb's Journal of Computer Calisthenics & Orthodontia за май 1980 года . Джеймс Э. Хендрикс улучшил и расширил исходный компилятор и написал The Small-C Handbook . Рон загрузил Small-C в систему Unix SRI International PDP 11/45 с учетной записью, предоставленной Джоном Бассом для разработки Small C. Предоставленный исходный код был выпущен с разрешения руководства в общественное достояние . [ нужна ссылка ]Small-C был важен для крошечных компьютеров примерно так же, как важность GCC для больших компьютеров. Как и его аналоги в Unix , компилятор генерирует ассемблерный код , который затем должен быть преобразован в машинный код доступным ассемблером .

Small-C — переназначаемый компилятор . Для переноса Small-C требуется только, чтобы внутренний генератор кода и библиотека вызовов интерфейса операционной системы были переписаны для целевого процессора.

«В мае 1980 года в журнале Dr. Dobb's Journal была опубликована статья под названием «Маленький компилятор C для 8080-х годов», в которой Рон Кейн представил небольшой компилятор для подмножества языка C. Наиболее интересной особенностью компилятора, помимо его небольшого размера, был язык, на котором он был написан, — тот, на котором он компилировался. язык ассемблера для процессора 8080. Однако, будучи небольшим, он имел свои ограничения. Он распознавал только символы, целые числа и одномерные массивы любого типа. Единственным средством управления циклом был оператор while. Булевых операторов не было, поэтому вместо них использовались побитовые логические операторы & (И) и |(ИЛИ), но даже с этими ограничениямиэто был очень удобный язык, и им было приятно пользоваться, особенно по сравнению с языком ассемблера.

Признавая необходимость улучшений, Рон предложил мне создать вторую версию, и в декабре 1982 года она также появилась в журнале Dr. Dobb's Journal. Новый компилятор дополнил 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]