Пара слов про (сравнительно) новую ветку FastImNoFlip, которая ориентирована на ускорение (за скорость приходится платить размером). Отличия от Master:
1. Модификация загрузки констант для более удобной реализации с использованием 8080. Это приводит к небольшому (несколько сотен байт для программ размером 20-25 Кб) увеличению сгенерированного zpugcc кода.
2. В начале body.inc есть несколько дефайнов. FastMUL и FastComparisons в комментариях особо не нуждаются, они сравнительно недорогие по размеру. Вот FastLoadSP, FastStoreSP и FastAddSP довольно большие - первые две примерно по килобайту, FastAddSP примерно полкило (в отличие от п.1 увеличивается размер run-time части, не размер генерирвемого компилятором кода). Наибольший эффект дает включение FastLoadSP, StoreSP поменьше, AddSP еще меньше.
3. Ускоренное деление. Тут редкий случай - сильно быстрее и меньше по размеру.
Пункты 2 и 3 в принципе можно перетащить и в Master (FastMUL уже там).
Пункты 1 и 2 (при включении всех дефайнов) ускоряют примерно на 10%. Деление в имеющихся примерах почти не задействовано, но там, где оно используется, стало быстрее на 20% (это без учета других ускорений).
Если неформально сравнить скорости zpu8080 и sdcc z80 в jpegах, то с tjpgd разница примерно в 4 раза, c picojpeg - примерно в 6 раз (в zpu8080 более эффективно реализуются 32 битные вычисления, а в sdcc z80 - 8 и 16 битные). Не так уж плохо для интерпретатора с 8080 против компилятора с z80, тем более в некоторых примерах (Мандельброт) ситуация для zpu8080 намного лучше, просто корректнее сравнивать по более сложным программам.




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

