Буквально год назад, мы публиковали
Виртуальная машина
Сабж - это алгоритм, который умеет выполнять байткод некоего виртуального процессора.
Область применения
Виртуальные машины полезны в антиотладочных целях, вы не сможете понять как работает алгоритм (написанный на байткоде вирт-машины), пока не отреверсите саму виртуальную машину.
Эмуляторы реальных процессоров позволяют нам поиграть в старые 8-битные игры, а если интерпретатор написан на платформо-независимом языке, мы получаем возможность запускать старые программы где угодно.
Кроме того, эмуляторы выполняют историческую задачу, "консервируя" старые процессоры на потеху будущим поколениям.
Эмуляторы активно используются антивирусами для снятия пакеров и смежных задач.
Детали работы
Нет ограничений на правила работы виртуальной машины, вы можете взять существующий процессор и эмулировать интересующие вас опкоды или придумать свои правила игры.
Вся работа виртуальной машины это конвеер, считывающий опкоды и отправляющий их в ад "на исполнение", посредством вызова нужной заглушки, которая будем менять значение виртуальных регистров или памяти.
Таким образом, от нас зависит:
- количество регистров
- модель адресации памяти
- формат опкодов
- набор команд
- реализация стека
- и тому подобное
Я решил выложить исходники моей старой виртуальной машины as-is и отдать их на растерзание вам, думаю после этого все вопросы о работе таких вещей отпадут.
Заключение
Эмуляторы - очень интересная тема, возможно я вернуть к ней позднее.
Подписывайтесь на наш