1

Тема: Як працюють віртуальні машини?

Доброго дня.
Я програміст початківець, не розумію як працюють віртуальні машини. У мене є припущення, що, наприклад, у байт коді вм є певні команди. Він компілюється у машинний код. Якщо у цього процесора нема такої команди, то компілятор замість неї пише кілька команд, які зроблять теж саме що й та одна(команда вм). Але це тільки моє припущення, я не знаю як насправді, в інтернеті цього не знайшов. Може ви мені допоможете відповіддю, або, якщо це складне питання, порадите що почитати.
Заздалегідь дякую.

2

Re: Як працюють віртуальні машини?

Віртуальна машина Java

Віртуальна машина Java (англ. Java Virtual Machine; JVM) — віртуальна машина для виконання байт-коду Java.[1] JVM нічого не знає про мову Java, вона просто вміє працювати з файлами формату .class, що містять інструкції для віртуальної машини Java та додаткову інформацію. Будь-яка мова програмування що здатна скомпілюватись в class-файл може працювати з JVM.

3

Re: Як працюють віртуальні машини?

Це я читав, не розумію як саме машина взаємодіє з процесором

4

Re: Як працюють віртуальні машини?

якось так
https://russianblogs.com/images/956/9f370f7a1d006b7fdb0fe33cca2d273c.png

Подякували: danaroz1234, leofun012

5

Re: Як працюють віртуальні машини?

danaroz1234 написав:

Якщо у цього процесора нема такої команди, то компілятор замість неї пише кілька команд, які зроблять теж саме що й та одна(команда вм).

Загалом, так. Є документ, який описує усі команди, які має підтримувати віртуальна машина, і усі правила обробки цих команд. Якщо одну команду можна замінити однією інструкцією процесора, то транслятор так і зробить, а якщо не можна, то зробить кілька інструкцій, які зроблять те, що описано в документі.

Подякували: danaroz1234, leofun012

6

Re: Як працюють віртуальні машини?

Віртуальна машина не "взаємодіє з процесором", це програма, яка виконується на процесорі, як і будь-яка інша. У найпростішому випадку - просто інтерпретує: читає байт-код по одній команді і виконує їх за правилами віртуальної машини. У складніших процесор може бути сумісним із байт-кодом, тоді можливе щось схоже на описане вами; але найчастіше використовується JIT-компіляція, коли віртуальний байт-код компілюється в машинний (оскільки обидва низькорівеві, це досить швидко) і вже той запускається.

Подякували: danaroz1234, leofun01, ostap34PHP3