Как написать эмулятор?

3 ноября 2014 г. Просмотров: 877
Эмуляция представляет собой попытку сымитировать какое-либо устройство определенной системы. Есть три способа построения эмуляторов: динамическая и статическая рекомпиляция и интерпретация. Для достижения максимального скоростного эффекта при работе рекомендуется использовать все три способа. Рассмотрим на примере написания типичного эмулятора процессора.

Инструкция

  • Выберите язык программирования. Рекомендуемая и, наверное, единственная альтернатива - Си и Ассемблер. В Си можно сделать код, который будет переноситься на другие платформы. Он относительно прост для понимания и легок в отладке, но гораздо медленнее, чем другие. Ассемблер же отличается своей высокой скоростью работы, в нем используются процессорные регистры, что способствует приближению программы к рекомпилирующей. Однако в нем весьма трудно отслеживать и исправлять коды. Важно хорошо знать выбранный язык и хорошо оптимизировать код по скорости.
  • Присвойте начальное значение циклическому и программному счетчику. Циклический counter отсчитывает количество тактов, через которое происходит прерывание, а программный PC показывает область памяти, в которой лежит следующая по очереди опкодовая команда.
  • После получения опкода вычтите из циклического счетчика количество тактов, которое занимает процесс выполнения опкода. Обратите ваше внимание, что некоторые команды различаются по количеству тактов в зависимости от аргументов. Для таких команд измените счетчик в коде выполнения позднее.
  • После успешного выполнения опкода проверьте надобность вызывания прерываний. В этот момент выполните задачи, которые необходимо срочно синхронизировать по времени.
  • Проверьте каждый проход цикла на надобность завершения его работы. Помните, что программа должна быть модульной, поскольку большинство компьютеров состоит из модулей, а типичный эмулятор по возможности должен полностью повторять оригинальную систему. Это обеспечит более быструю и простую отладку программы, и вы сможете использовать одинаковые модули для различных эмуляторов, потому как многие компьютеры созданы на базе одинаковых моделей процессоров или видеопроцессоров.
  • Оцените статью!