Думаю, первый раз ручками писали на асме (главное чтоб не в машинном коде!). Потом оно само себя компилировало уже. При этом сам компилятор не обязан использовать всё то, что поддерживает у себя на входе, т.е. некоторые куски можно дописать позже и на Си, когда всё это самокомпилируется.
Так там же написано, компилировали собой (предыдущей версией). Начали с B. Который в свою очередь был изначально написан на э-э-э TCM, что-ли, забыл уже прочитанное. Который уже был на ассемблере.
Это не самая ранняя, а где-то через год (или два?). Ранний язык постоянно менялся. На сайте ДМР (кстати, поразительно, что он все еще живет в Белл Лабсе через 14 лет после смерти самого Ритчи) рассказано, что это две версии с архивных лент. Одна - где-то до того, как в языке появились структуры, другая - уже после (но сам компилятор еще не использует структуры).
До этого был компилятор Би. Который тоже был написан на самом себе. Он внешне выглядел как Си, но без типов. И без структур. Постепенно к Би добавлялись разные фичи, и он превратился в Си.
Би возник из компилятора BCPL. Тот тоже был написан на самом себе. Функционально Би не особо отличался от BCPL: по сути те же конструкции языка, но синтаксис выглядел странно с современной точки зрения.
Компилятор BCPL (да и Би тоже) порождал программу не в кодах целевой машины, а в некоем промежуточном представлении. Фактически это была абстрактная виртуальная машина. И потом другая программа превращала это виртуальное представление в нужный машинный код. При переносе компилятора на другую архитектуру процессора нужно было первый раз оттранслировать всё с другой машины (в кросс режиме), а потом уже можно было продолжать на целевой машине.
То есть должен существовать (либо утерян) исходник на Би, транслирующий код, который уже "Скорее Си, чем Би". Он бы и мог называться по-праву "первым компилятором Си"
а вот компилятор, которым пользовались игрописатели для MSX (позабыл уже как назывался, и с ходу не нагуглил) миновал (во всяком случае, не создавал файлов) промежуточную фазу, сразу генерил целевой ASM
no subject
Исходников CC на ассемблере не просто найти
no subject
no subject
no subject
no subject
no subject
Би возник из компилятора BCPL. Тот тоже был написан на самом себе. Функционально Би не особо отличался от BCPL: по сути те же конструкции языка, но синтаксис выглядел странно с современной точки зрения.
Компилятор BCPL (да и Би тоже) порождал программу не в кодах целевой машины, а в некоем промежуточном представлении. Фактически это была абстрактная виртуальная машина. И потом другая программа превращала это виртуальное представление в нужный машинный код. При переносе компилятора на другую архитектуру процессора нужно было первый раз оттранслировать всё с другой машины (в кросс режиме), а потом уже можно было продолжать на целевой машине.
no subject
Он бы и мог называться по-праву "первым компилятором Си"
no subject
а вот компилятор, которым пользовались игрописатели для MSX (позабыл уже как назывался, и с ходу не нагуглил) миновал (во всяком случае, не создавал файлов) промежуточную фазу, сразу генерил целевой ASM