Ассемблер и компилятор? - PullRequest
0 голосов
/ 03 июня 2018

Я читаю об объектном коде (я не спрашиваю, что это за объектный код) и запутался, когда обнаружил следующее:

* При чтении об ассемблере:

AnПрограмма на ассемблере создает объектный код , переводя комбинации мнемоники и синтаксиса для операций и режимов адресации в их числовые эквиваленты.

А при чтении о сам объектный код :

В вычислениях объектный код или объектный модуль является продуктом компилятора .

Однако, если взглянуть на компоненты компилятора,ни одна статья, которую я прочитал, на самом деле не включает ассемблер как часть компилятора, как enter image description here

Так как же объектный код может быть «продуктом компилятора», если программа ассемблера »не является частью компилятора "?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

«Исходный код сборки» (pre-object code gen) эквивалентен промежуточному коду или промежуточному представлению (IR), которое генерируется компилятором (на вашей диаграмме).Затем он проходит через проходы для оптимизации и создания объектного кода, родного для целевого компьютера ABI.

Независимо от того, используется ли ИК для создания объектного кода или другого ИК (такого как тот, который потребляется интерпретатором), доконструкция и назначение компилятора.

Не видеть на диаграмме слово «ассемблер» пытается разобрать семантику диаграммы в синтаксический сахар.

0 голосов
/ 03 июня 2018

Либо:

  1. Компилятор создает объектный код напрямую, без фазы сборки вообще, либо
  2. Он производит сборку и затем выполняет ассемблер, в этом случае ассемблердействительно логически является частью компилятора.

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

NB Ваше изображение не отображаетсякомпоновщик, но вы не получите целевую программу без него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...