Думаю, первый раз ручками писали на асме (главное чтоб не в машинном коде!). Потом оно само себя компилировало уже. При этом сам компилятор не обязан использовать всё то, что поддерживает у себя на входе, т.е. некоторые куски можно дописать позже и на Си, когда всё это самокомпилируется.
Так там же написано, компилировали собой (предыдущей версией). Начали с B. Который в свою очередь был изначально написан на э-э-э TCM, что-ли, забыл уже прочитанное. Который уже был на ассемблере.
Это не самая ранняя, а где-то через год (или два?). Ранний язык постоянно менялся. На сайте ДМР (кстати, поразительно, что он все еще живет в Белл Лабсе через 14 лет после смерти самого Ритчи) рассказано, что это две версии с архивных лент. Одна - где-то до того, как в языке появились структуры, другая - уже после (но сам компилятор еще не использует структуры).
До этого был компилятор Би. Который тоже был написан на самом себе. Он внешне выглядел как Си, но без типов. И без структур. Постепенно к Би добавлялись разные фичи, и он превратился в Си.
Би возник из компилятора BCPL. Тот тоже был написан на самом себе. Функционально Би не особо отличался от BCPL: по сути те же конструкции языка, но синтаксис выглядел странно с современной точки зрения.
Компилятор BCPL (да и Би тоже) порождал программу не в кодах целевой машины, а в некоем промежуточном представлении. Фактически это была абстрактная виртуальная машина. И потом другая программа превращала это виртуальное представление в нужный машинный код. При переносе компилятора на другую архитектуру процессора нужно было первый раз оттранслировать всё с другой машины (в кросс режиме), а потом уже можно было продолжать на целевой машине.
То есть должен существовать (либо утерян) исходник на Би, транслирующий код, который уже "Скорее Си, чем Би". Он бы и мог называться по-праву "первым компилятором Си"
а вот компилятор, которым пользовались игрописатели для MSX (позабыл уже как назывался, и с ходу не нагуглил) миновал (во всяком случае, не создавал файлов) промежуточную фазу, сразу генерил целевой ASM
no subject
Date: 2025-03-25 22:38 (UTC)Исходников CC на ассемблере не просто найти
no subject
Date: 2025-03-26 04:06 (UTC)no subject
Date: 2025-03-26 05:39 (UTC)no subject
Date: 2025-03-26 13:51 (UTC)no subject
Date: 2025-03-26 17:02 (UTC)no subject
Date: 2025-03-27 00:38 (UTC)Би возник из компилятора BCPL. Тот тоже был написан на самом себе. Функционально Би не особо отличался от BCPL: по сути те же конструкции языка, но синтаксис выглядел странно с современной точки зрения.
Компилятор BCPL (да и Би тоже) порождал программу не в кодах целевой машины, а в некоем промежуточном представлении. Фактически это была абстрактная виртуальная машина. И потом другая программа превращала это виртуальное представление в нужный машинный код. При переносе компилятора на другую архитектуру процессора нужно было первый раз оттранслировать всё с другой машины (в кросс режиме), а потом уже можно было продолжать на целевой машине.
no subject
Date: 2025-03-27 00:59 (UTC)Он бы и мог называться по-праву "первым компилятором Си"
no subject
Date: 2025-03-27 05:05 (UTC)а вот компилятор, которым пользовались игрописатели для MSX (позабыл уже как назывался, и с ходу не нагуглил) миновал (во всяком случае, не создавал файлов) промежуточную фазу, сразу генерил целевой ASM