Провёл оптимизацию по рекомендациям из этой ветки:
- Перевёл хранение регистров и памяти в memoryview, переделал эмуляцию всех инструкций под такой формат
- Заменил все операции & 0xF, & 0xFF и & 0xFFFF на более быстрые операции получения остатка от деления
- Отказался от универсальной эмуляции i8080/Z80 и, соответственно от лишних проверок и флагов
По списку вроде бы не много, но пришлось перелопачивать почти всё, а потом ещё долго искать почему перестало работать.
Не стал менять хранение флагов, а также не стал переносить процессор в класс.
Новая версия в первом посте.
Всем спасибо за советы и рекомендации. Посмотрите текст скрипта, вдруг что-то ему можно улучшить и оптимизировать?
Результат, конечно, есть, но он не слишком впечатляет (слева - v0.1, справа - v0.2):
![]()
![]()




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