Не знаю тонкостей кэша PC, но, ни на одном из виданых мною процессоров самомодификация в цикле эмуляции не быстрее банального джампа. Мало того, она заведомо медленнее, поскольку программа исполняется из кеша команд, тогда как модификация памяти затрагивает кеш данных, что влечет за собой либо burst-цикл записи кеша данных в память с последующим обновлением кеша команд; либо медленный цикл копирования линейки кеша данных в кеш команд (это лучший вариан, хотя никогда такого не встречал); либо банальную невосприимчивость конвейера к изменившемуся коду.Сообщение от Vladimir Kladov
Что же касается процессоров без кеша (например 68000), то на них почти ВСЕГДА предпочтительней делать джамп по любому поводу и без повода, сколько позволяет свободная память, поскольку отсутствует главный тормозящий фактор кэшевых систем - загрузка линейки кеша команд.




Ответить с цитированием