Я читал о наборе инструкций и наткнулся на следующую строку из WIKI

Некоторые виртуальные машины, которые поддерживают байт-код в качестве своего ISA, такие как Smalltalk, виртуальная машина Java и общеязыковая среда выполнения Microsoft, реализуют это путем преобразования байт-кода для часто используемых путей кода в собственный машинный код.

Пожалуйста, исправьте мое общее понимание "набора инструкций" и управления виртуальными машинами:

  • В основном процессоры имеют загруженные в память инструкции или наборы команд, которые используются для обработки. Теперь процессоры получают двоичный ввод, который является ничем иным, как "двоичным" представлением этих команд. Правильно?
  • Набор инструкций также может называться "машинный код" или "машинный язык". Правильно?
  • JVM принимает байт-код Java и создает двоичную форму "набора команд", "машинного кода" или "машинного языка". Таким образом, я могу сказать, что байт-код является машинным языком JVM, потому что JVM понимает байт-код или принимает байт-код в качестве входных данных и создает двоичную форму "машинного кода" для операционной системы, а затем ОС будет дополнительно преобразовывать этот "машинный код" в "машинный код" для процессора. Правильно?
    • Часть, выделенная жирным шрифтом в моем вышеупомянутом вопросе, является одним из главных, которые я хочу понять. Поскольку у нас нет JVM для конкретных процессоров, у нас есть JVM для конкретных ОС, поэтому я понимаю, что JVM не может генерировать "машинный код" для процессора и будет генерировать "машинный код" для ОС, а затем, наконец, ОС будет производить "машинный код", который должен быть выполнен процессором.

Пожалуйста, подтвердите мое понимание, и, если оно неверно, укажите подробности и / или ссылку на то, почему это неверно и какова исправленная концепция.

0