Цитата Сообщение от KokaF77 Посмотреть сообщение
Создатели эмуляторов, поделитесь, пожалуйста соображениями.
По какому принципу строятся данный программный продукт.
Может есть какие-то полезные ссылки по данной тематике.
Интересует мат часть и все сопутствующие моменты...
Для начала советую взять исходник эмулятора машинки которую хорошо знаешь на языке в котором прекрасно ориентируешься. Разобраться что там к чему. Готовых эмуляторов сейчас велико множество и многие из них с открытым кодом. Большая часть из них написана на C и C++.

Допустим берёшься за свой проект. Начинается обычно с эмуляции процессора -- задача добиться исполнения команд, получить этакий "шагающий экскаватор". Обычно на этом этапе уже нужна хоть какая-то реализация памяти. Дальше улучшаешь работу с памятью, и добавляешь эмуляцию видео -- задача получить картинку. Затем реализуешь клавиатуру. Потом прочий ввод/вывод -- звук, магнитофон, флопповод, жёсткий диск.

Очень полезны бывают отладочные инструменты: встроенный дизассемблер, отладчик с функциями шага и прогона до точки останова. Такие вещи позволяют намного меньше ползать по отладчику в среде разработки.

Открытые проекты в которых я участвую:
http://code.google.com/p/ukncbtl/ -- эмулятор УКНЦ (процессор 1801ВМ2) на C++, интерфейс на Win32 и под Qt
http://code.google.com/p/bkbtl/ -- эмулятор БК-0010 на C++, интерфейс под Win32, Qt, SDL
http://code.google.com/p/nzeemin-ope...VectrexSdl/src -- эмулятор консоли Vectrex на C, интерфейс на SDL -- порт для Dingoo A320

Ссылки:
- http://plg.lrn.ru/doc/emu-howto.html -- статья Марата Файзуллина, довольно поверхностная
- http://aarongiles.com/?p=137 -- CPU Scheduling in MAME -- серьёзная статья о принципах эмуляции в MAME