Интерпретирует ли JVM байт-код на языке ассемблера



Меня путают с jvm.

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

661   3  

3 ответов:

Является ли язык ассемблера родного кода?

Язык ассемблера-это способ написания кода, который будетсобран (ассемблером) в машинный код, который записывается в исполняемые файлы и т. д. То есть ассемблерный код-это исходный код для человека, только на очень низком уровне; машинный код-это результат запуска ассемблера на этом исходном коде. (Это аналогично тому, когда вы пишете язык более высокого уровня, такой как C++, и компилируете его в машину код с компилятором.)

Что именно делает jvm принимает байт-код и интерпретирует в машинный код

JVMможно было бы написать, что просто интерпретируемый байт-код, но современные JVM этого не делают; у них есть встроенный компилятор Just-In-Time (JIT), который берет байт-код и эффективно собирает его на лету в машинный код. Фактически, JVM Sun имеет двухступенчатый JIT: один этап, который выполняется очень быстро (поэтому приложения и классы преобразуются в машинный код быстро при запуске, чтобы избежать задержек запуска), и еще один этап, который он запускает, делает агрессивную оптимизацию, которую он использует, когда он определяет "горячие точки" (код, который работает много) в коде (так что критический для производительности код работает быстро).

Таким образом, современные JVMs считывают байт-код из файлов .class, запускают его через JIT для компиляции в машинный код и заставляют компьютер выполнять этот машинный код. При этом хороший отслеживает горячие точки и агрессивно оптимизирует их, создавая новые, замена машинного кода, который более эффективен.

Машинный код (или машинный код) - это то, на что компилируется язык ассемблера. Макросы расширяются, а затем мнемоническиеоперационные коды преобразуются в двоичный машинный код. JIT не использует макросы, он генерирует машинный код напрямую (без ассемблера).

  • JVM не является независимым от платформы, вместо этого JVM предоставляет платформу независимая функция для кода Java (байт-код).
  • Когда байт-код равен сгенерированный после компиляции вашего письменного кода, он может быть взят в любой операционная система для ее запуска, что возможно благодаря JVM (специфично для ОС), которая преобразует байт-код в машину язык в зависимости от операционной системы.
  • Итак, да, байт-код(.файл класса) является преобразуется в машинный язык (машинный код) JVM путем интерпретации то байткод.

Comments

    Ничего не найдено.