До этого был компилятор Би. Который тоже был написан на самом себе. Он внешне выглядел как Си, но без типов. И без структур. Постепенно к Би добавлялись разные фичи, и он превратился в Си.
Би возник из компилятора BCPL. Тот тоже был написан на самом себе. Функционально Би не особо отличался от BCPL: по сути те же конструкции языка, но синтаксис выглядел странно с современной точки зрения.
Компилятор BCPL (да и Би тоже) порождал программу не в кодах целевой машины, а в некоем промежуточном представлении. Фактически это была абстрактная виртуальная машина. И потом другая программа превращала это виртуальное представление в нужный машинный код. При переносе компилятора на другую архитектуру процессора нужно было первый раз оттранслировать всё с другой машины (в кросс режиме), а потом уже можно было продолжать на целевой машине.
no subject
Би возник из компилятора BCPL. Тот тоже был написан на самом себе. Функционально Би не особо отличался от BCPL: по сути те же конструкции языка, но синтаксис выглядел странно с современной точки зрения.
Компилятор BCPL (да и Би тоже) порождал программу не в кодах целевой машины, а в некоем промежуточном представлении. Фактически это была абстрактная виртуальная машина. И потом другая программа превращала это виртуальное представление в нужный машинный код. При переносе компилятора на другую архитектуру процессора нужно было первый раз оттранслировать всё с другой машины (в кросс режиме), а потом уже можно было продолжать на целевой машине.