Як написати емулятор

Емуляція являє собою спробу зімітувати будь-який пристрій певної системи. Є три способи побудови емуляторів: динамічна і статична рекомпіляції та інтерпретація. Для досягнення максимального швидкісного ефекту при роботі рекомендується використовувати всі три способи. Розглянемо на прикладі написання типового емулятора процесора.
Як написати емулятор




Інструкція
1
Оберіть мову програмування. Рекомендована і, напевно, єдина альтернатива - Сі і Асемблер. У Сі можна зробити код, який буде переноситися на інші платформи. Він відносно простий для розуміння і легкий у налагодженні, але набагато повільніше, ніж інші. Асемблер же відрізняється своєю високою швидкістю роботи, в ньому використовуються процесорні регістри, що сприяє наближенню програми до рекомпілірующей. Однак у ньому вельми важко відстежувати і виправляти коди. Важливо добре знати вибрана мова і добре оптимізувати код за швидкістю.
2


Надайте початкове значення циклічного і програмному лічильнику. Циклічний counter відраховує кількість тактів, через яке відбувається переривання, а програмний PC показує область пам'яті, в якій лежить наступна по черзі опкодовая команда.
3
Після отримання опкода відніміть з циклічного лічильника кількість тактів, яке займає процес виконання опкода. Зверніть вашу увагу, що деякі команди розрізняються за кількістю тактів в залежності від аргументів. Для таких команд змініть лічильник в коді виконання пізніше.
4
Після успішного виконання опкода перевірте потреба викликання переривань. У цей момент виконайте завдання, які необхідно терміново синхронізувати за часом.
5
Перевірте кожен прохід циклу на потребу завершення його роботи. Пам'ятайте, що програма повинна бути модульною, оскільки більшість комп'ютерів складається з модулів, а типовий емулятор по можливості повинен повністю повторювати оригінальну систему. Це забезпечить більш швидку і просту налагодження програми, і ви зможете використовувати однакові модулі для різних емуляторів, тому як багато комп'ютерів створені на базі однакових моделей процесорів або відеопроцесорів.
Переглядів: 3750

Увага, тільки СЬОГОДНІ!