Так быстрее. LDI 16 тактов для пересылки 1 байта, LDIR 21 такт для пересылки 1 байта. Правда, памяти уходит на это 256 байт.![]()
Так быстрее. LDI 16 тактов для пересылки 1 байта, LDIR 21 такт для пересылки 1 байта. Правда, памяти уходит на это 256 байт.![]()
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ок, перепроверю Z.
- - - Добавлено - - -
Тут лежит исходник ZX Like Pascal, в нем, кажется, обновленный Z, где не нужно ничего колдовать: http://zx-pk.ru/threads/54-podderzhi...l=1#post810433
Ну насколько я помню, в TurboPascal, если тип переменных в выражениях byte или word, тоже нет отрицательных чисел, а проворачивается. Например, 5-6=255, насколько помню
А ты можешь тогда ввести функцию abs:
Код:if y_put>abs(y_map_scr-y_max_obj) then y_min_lim:=y_map_scr-y_max_obj else y_min_lim:=1;
для справочки: как HitechC обходится:
Код:main() { int xm=-127; int ym=96; if (xm>ym) xm=-xm; } RAM:80F7 ld (ix+0FEh), 81h ; 'Á' RAM:80FB ld (ix+0FFh), 0FFh RAM:80FF ld (ix+0FCh), 60h ; '`' RAM:8103 ld (ix+0FDh), 0 RAM:8107 ld e, (ix+0FEh) RAM:810A ld d, (ix+0FFh) RAM:810D ld l, (ix+0FCh) RAM:8110 ld h, (ix+0FDh) RAM:8113 call sub_813D ; if (xm>ym) xm=-xm; RAM:8116 jp p, loc_812B RAM:8119 ld e, (ix+0FEh) ; xm=-xm RAM:811C ld d, (ix+0FFh) RAM:811F ld hl, 0 RAM:8122 or a RAM:8123 sbc hl, de RAM:8125 ld (ix+0FEh), l RAM:8128 ld (ix+0FFh), h RAM:812B RAM:812B loc_812B: ; CODE XREF: sub_80F4+22j ; RAM:813D sub_813D: ; CODE XREF: sub_80F4+1Fp RAM:813D ld a, h RAM:813E xor d RAM:813F jp m, loc_8145 RAM:8142 sbc hl, de RAM:8144 ret RAM:8145 ; --------------------------------------------------------------------------- RAM:8145 RAM:8145 loc_8145: ; CODE XREF: sub_813D+2j RAM:8145 ld a, h RAM:8146 and 80h ; 'À' RAM:8148 sbc hl, de RAM:814A inc a RAM:814B ret
Свежий исходник демо игры Z на ZX Like Pascal тут
23900-32506: скомпилированная программа на Паскале
32507-33253: процедура вывода карты клеток 4х4 знакоместа на Асме
33254-45440: спрайты
45441-48314: скомпилированная библиотека
48315-52409: карта
52410-53524: переменные и массивы
53525-57343: СВОБОДНАЯ ОБЛАСТЬ
57344-65xxx: виртуальный экран и таблица отраженных байтов
Да, промахнулся я. Осталось менее 4 кб, виртуальный экран забыл.
Хоть что-то осталось, у меня пока в 48 совсем не помещается.
Кроме исключения повторного вычисления индекса массива какие ещё оптимизации есть в ZX Like Pascal? У меня фантазия не работает после переписывания кодогенератораОтдохнуть надо.
Нужно делать 8-битный Паскаль
В статье журнала "Downgrade" №15 оптимизации, которые делал, описал.
Нужно или исходник переделать, там повторов много, или сделать чтобы оптимизатор повторяющиеся части заменял на подпрограммы.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)