Эмуляторы, как правило, заинтересованы в обмане программного обеспечения, написанного для устройств с несколькими микросхемами - с точки зрения Z80 и самых продаваемых устройств вы, вероятно, говорите по крайней мере о графическом чипе и звуковом чипе в дополнение к процессору.
В реальном мире все эти чипы действуют одновременно. Будет некоторая логика шины, позволяющая им всем общаться, но в остальном они находятся в своих собственных мирах.
Обычно вы не запускаете эмуляцию разных микросхем как параллельных процессов, потому что затраты на принудительное выполнение событий синхронизации слишком велики, особенно в обычном устройстве, где что-то вроде одного и того же блока ОЗУ совместно используется несколькими микросхемами.
Таким образом, вместо этого самый простой подход состоит в том, чтобы совместно выполнять многозадачность различных чипов - запустить Z80 в течение нескольких циклов, затем запустить графический чип в течение того же времени и т. Д. До бесконечности. Вот откуда приходит подход к бегу на n циклов и возвращению.
Обычно это не точный способ воспроизвести поведение реальной компьютерной шины, но его легко реализовать, и часто можно обмануть большую часть программного обеспечения.
В конкретном коде, который вы опубликовали, автор также решил, что эмуляция округлит количество циклов до конца следующей полной инструкции. Опять же, речь идет о простоте реализации, а не о внутреннем устройстве реальной машины. Возвращается количество фактически выполненных циклов, чтобы другие подсистемы могли попытаться адаптироваться.
person
Tommy
schedule
05.12.2012