Этот двухэтапный процесс компиляции для получения машинного кода на самом деле также происходит с большинством статически скомпилированных языков, таких как C и C ++. Сначала они скомпилируют код во временный формат, такой как код 2-3, затем второй компилятор переведет это в машинный код. Цель этого разделения на фронтенд и бэкэнд компилятор состоит в том, чтобы упростить перенос компилятора на другую архитектуру компьютера или использование другого языка ввода. GCC является хорошим примером статического компилятора, который очень универсален благодаря этой архитектуре.
Преимущество выполнения окончательного перевода во время выполнения, за исключением того, что вам не нужно выбирать архитектуру целевого компьютера, пока вы не запустите приложение, состоит в том, что у вас есть дополнительная информация о том, как на самом деле выполняется программа. Это может быть очень эффективно использовано для улучшения окончательной компиляции.