Сколько уровней интерпретации / компиляции в компьютере?

Когда у нас есть объектный файл (скомпилированный файл любой программы на c / c ++ или любом другом языке), он содержит операционные коды, которые могут быть непосредственно поняты процессором, или существует больше уровней интерпретации / компиляции, которые генерируют нужные операционные коды для процессор.
в случае JVM он генерирует коды операций для реального процессора или генерирует код для чего-то промежуточного.

0

Решение

C и C ++ обычно компилируются в машинный код, и да, эти коды операций могут быть непосредственно поняты процессором.

Но что такое «напрямую»?

Процессор может иметь несколько уровней внутренней интерпретации. С одним уровнем интерпретации, который называется микрокода. Я не уверен в терминологии для двух или более уровней, но вы можете погуглить.

Кроме того, программа может быть выполнена на (возможно с аппаратной) симуляцией рассматриваемого компьютера.

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


AFAIK Java по-прежнему обычно компилируется в инструкции для виртуальной машины. Однако эти инструкции обычно (или обычно) скомпилированы в машинный код на лету, так как программа была выполнена, называемая JIT сборник, Как раз вовремя. Также, 1по сообщениям, некоторые машины IBM имеют прямую поддержку виртуальной машины Java, способной выполнять по крайней мере некоторые из кодов операций (более или менее) напрямую.

Тогда есть ряд физических Java-процессоры, предназначен для непосредственного выполнения байт-кода Java.



1 Я не могу найти ссылки только с помощью быстрого поиска в Google. Может быть, у меня сложилось неправильное впечатление от какой-то статьи. Возможно, некоторые мэйнфреймы IBM просто оптимизированы для выполнения виртуальной машины Java.

1

Другие решения

В JVM есть много уровней.

Есть

  • интерпретируемый код, который использует машинный код оп косвенно (C / C ++ не имеет этой стадии, если вы не добавите свой собственный способ сделать это, как JVM делает)
  • машинный код, возможно, инструкции CISC.
  • если вы работаете на виртуальной машине с ядром, некоторые инструкции могут быть изменены вашим KVM.
  • CPU может превратить их в инструкции RISC, которые хранятся в его кэше команд L0.
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector