С. Б. Воинов
Научный руководитель: проф. С. М. Авдошин
«МАТИ» - Российский Государственный Технологический Университет
им. К. Э. Циолковского, 121552, Москва, Оршанская 3, e-mail: shackmaster@mail.ru
С ростом вычислительной мощности современных компьютеров возникает задача построения специального рода программного обеспечения, предназначенного для эмуляции работы каких-либо аппаратных средств. Эмуляция работы аппаратных средств позволяет выполнять функции отсутствующего у пользователя устройства, причём эти функции выполняются программно, а не аппаратно. Не смотря на то, что можно эмулировать многие функции, поддерживаемые аппаратно, программная эмуляция требует значительной вычислительной мощности процессора и, как правило, уступает по скорости выполнения функций эмулируемому устройству. С одной стороны, программная эмуляция может использоваться для поддержки аппаратно реализуемых функций устройства, совместимого с той аппаратной платформой, для которой написан эмулятор. Примером этому может служить программная эмуляция функций 3D-ускорителей в API Direct3D. С другой стороны, иногда возникает необходимость выполнения на одной аппаратной платформе функций другой аппаратной платформы, несовместимой с первой. Примером может являться эмулятор процессора PowerPC, написанный для семейства процессоров Intel x86.
Широко распространены программные эмуляторы различных игровых платформ, например Sega, Nintendo, PlayStation и т. д. Также существуют эмуляторы устаревших микрокомпьютеров, таких как ZX Spectrum, Commodore 64, Радио 86 РК и т. д. Последняя группа эмуляторов представляет, в основном, академический интерес с точки зрения изучения системы команд и аппаратных особенностей микрокомпьютеров. Однако в настоящее время отсутствуют полностью функциональные программные эмуляторы процессоров семейства Intel x86, написанные под эту же аппаратную платформу и позволяющие помимо системы команд эмулировать функции таких устройств IBM PC как контроллер прерываний, контроллер прямого доступа к памяти и других системных устройств. Использование такого рода эмуляторов представляет большой научный интерес.
Подобные эмуляторы могли бы использоваться для следующих целей:
- Детальное изучение системы команд процессоров семейства Intel x86 и особенностей её применения.
- Изучение неоднозначности системы команд.
- Знакомство с защищённым режимом работы процессора 80386 без дополнительных неудобств, связанных с необходимостью создания соответствующего программного окружения.
- Реализация прототипов модулей программной защиты информации, защиты от дизассемблирования и отладки.
- Снятие программных защит информации.
- Исследования в области вирусологии без опасности повредить программно-аппаратные средства PC.
- Изучение работы и протоколов взаимодействия аппаратных и программных средств.
В соответствии с перечисленными целями, был проведён анализ системы команд процессора 8086 и начата разработка программного эмулятора, функционирующего в среде Windows 95/98/Me/2000.