Мой учитель сказал мне, что промежуточный код является общим для всех систем, но компонент компилятора затем делает его другим в зависимости от системы / среды, в которой выполняется код. Может кто-нибудь, пожалуйста, объясните это.
Обычно компилятор делится на две части: интерфейс, который выполняет синтаксический анализ и генерирует промежуточный код. Затем бэкэнд, который берет промежуточный код и генерирует сборку или машинный код.
Внешний интерфейс может быть универсальным, но внутренний интерфейс создается для определенного цель. Таким образом, компилятору не нужно «идентифицировать» хост, он должен знать только цель.
Обратите внимание, что хост и цель могут быть разными системами, которые используются для кросс-компиляция.
Других решений пока нет …