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