Честно говоря не знаю
Все это ООП не для меня. Привык я к линейному программированию.
Идея была в том, чтобы вынести всю эмуляцию в отдельный поток. Когда открывается файл, поток нужно остановить, очистить память,стек,регистры, загрузить файл в память и опять запустить поток.