Эта диаграмма компилятора неточна? - PullRequest
0 голосов
/ 02 ноября 2019

Я читаю свой учебник и вижу диаграмму для компилятора:

enter image description here

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

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

Совсем нет - термин «компилятор» очень расплывчатый (см. этот ответ для этимологии). Как упомянуто пользователем 207421, существуют компиляторы, которые создают объектный код, интерпретируемый байт-код и сборку.

Однако существуют компиляторы, которые также создают другие языки высокого уровня, то есть они эффективно конвертируют код из одного языка высокого уровня. к другому (см. transcompilers ). Существуют также компиляторы, которые преобразуют код из языков низкого уровня (опять же, это может быть объектный код, байт-код или сборка) в языки высокого уровня (см. декомпиляторы ). Кроме того, существуют компиляторы, которые генерируют код для выполнения на других архитектурах ЦП, отличных от той, на которой они работают (см. кросс-компилятор ). Кроме того, существуют также компиляторы, которые производят другие компиляторы (так называемые compiler-compilers ) - они принимают некоторую форму описания языка и создают компилятор для этого языка.

This page - хорошее место для начала, если вы хотите узнать больше.

0 голосов
/ 12 ноября 2019

Существует много способов реализации компилятора.

На вашей диаграмме показан пример, есть и другие случаи, когда компилятор не соответствует диаграмме, которую вы показали.

...