Как первый компилятор был записан?

Вы могли использовать , ОПИСЫВАЮТ my_table и используют результаты этого генерировать оператор SELECT динамично.

161
задан Kara 25 June 2014 в 19:11
поделиться

4 ответа

Команды сборки (как правило) являются прямым отображением кодов операций, которые представляют собой (многобайтовые) значения машинного кода, которые могут быть напрямую интерпретированы процессором. Вполне возможно написать программу в кодах операций напрямую, просматривая их из таблицы (такой как , например, для микропроцессора 6039 ), которая перечисляет их с соответствующими инструкциями сборки, и определяя вручную адреса / смещения памяти для таких вещей, как прыжки.

Первые программы были сделаны именно таким образом - написанные вручную коды операций.

Однако в большинстве случаев проще использовать ассемблер для «компиляции» ассемблерного кода, который автоматически выполняет поиск этих кодов операций, а также помогает при вычислении адресов / смещений для именованных меток перехода и т. д.

Первые ассемблеры были написаны вручную. Затем эти ассемблеры можно использовать для сборки более сложных ассемблеров, которые затем можно использовать для сборки компиляторов, написанных для языков более высокого уровня, и так далее. Этот процесс итеративного написания инструментов для упрощения создания следующего набора инструментов называется (как упомянул Дэвид Рабиновиц в своем ответе) бутстрэппингом .

130
ответ дан 23 November 2019 в 21:26
поделиться

Что написал первый компилятор, преобразовавший что-то в двоичные инструкции?

Это сделал человек. Прочтите о системе A-0 :

В 1952 году Грейс Хоппер завершила свой первый компилятор для Sperry, известный как A-0. Система A-0 представляла собой набор инструкций, которые могли переводить символьный математический код на машинный язык. Создавая A-0, она взяла все подпрограммы, которые собирала годами, и записала их на магнитную ленту. Каждой программе был присвоен номер вызова, чтобы машина могла найти его на ленте. «Все, что мне нужно было сделать, это записать набор номеров для звонков, позволить компьютеру найти их на ленте, принести и внести дополнения. Это был первый компилятор», как описывает Грейс.

10
ответ дан 23 November 2019 в 21:26
поделиться

Первые программы были написаны в машинном коде (не на языке ассемблера) - фактические числа вставлялись в память компьютера с помощью переключателей. Мы прошли долгий путь ...

Иногда это все еще происходит в небольшой степени - для исправления небольших фрагментов кода или создания переходов. Я помню, как вводил числа в базовые строки, которые затем выполнялись как небольшие быстрые подпрограммы на ранних микросхемах. Я также помню, как переключал переключатели на передней панели PDP-11, чтобы ввести программу загрузчика в его память для университетского курса.

Эти программы иногда использовались для обработки текстовых файлов для создания других программ, и были созданы языки программирования вуаля.

8
ответ дан 23 November 2019 в 21:26
поделиться

Прочтите о начальной загрузке компилятора и истории написания компилятора

Идея состоит в том, чтобы написать очень простой компилятор непосредственно в машинном коде, использовать его для напишите более сложный компилятор, используйте второй для сборки третьего и так далее, пока не получите полнофункциональный компилятор.

43
ответ дан 23 November 2019 в 21:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: