ZX Spectrum > PROGRAMOWANIE
mój pierwszy programik
gorgh:
właściwie to trzeci, ale pierwszy poważniejszy, działa to cholernie wolno, ale uczę się dopiero optymalizować na z80 :)
Załączam kod, byłbym wdzięczny za wszelkie uwagi :)
trojacek:
--- Kod: --- jp loop
ret
--- Koniec kodu ---
Po co ten ret???
--- Kod: ---cp 0
--- Koniec kodu ---
Krócej, bo w jednym bajcie:
--- Kod: ---or a
--- Koniec kodu ---
--- Kod: ---xor $ff
--- Koniec kodu ---
Jeśli chcesz zanegować (logicznie) akumulator, to prościej - jednym bajtem kodu:
--- Kod: ---cpl
--- Koniec kodu ---
--- Kod: ---dec b
jr nz,loop_sin2
--- Koniec kodu ---
Zamiast tych dwóch rozkazów masz jeden:
--- Kod: ---djnz loop_sin2
--- Koniec kodu ---
--- Kod: --- ld a,(hl)
ld (de),a
dec e
inc l
--- Koniec kodu ---
To jest bardzo niebezpieczne. Jesteś pewien, że rejestry e i l się nie "przekręcą"? Zamiast tego stosuj inkrementacje i dekerementacje 16-bitowe:
--- Kod: ---dec de
inc hl
--- Koniec kodu ---
--- Kod: --- add a,e
ld e,a
ld a,(de)
--- Koniec kodu ---
Uwaga j.w. Dodawanie (add a,e) może przepełnić akumulator i wtedy ld a,(de) pobierze wartość spod adresu, którego nie przewidziałeś. Chyba, że przewidziałeś, stosując jakąś niesamowitą sztuczkę :) (nadal nie rozumiem Twojego algorytmu).
gorgh:
Dziękówka za uwagi, przepełnienie rejestrów niczym nie grozi bo dane są pobierane z jednej strony pamięci ($7000-$70ff) i to tak ma działać
Dalthon:
W domu rzucę na to okiem dokładniej (podoba mi się efekt!:) pomyśl aby zrobić to na atrybutach wtedy można na cały ekran to zrobić i będzie duuuuużo szybsze :)
--- Kod: --- jr z, nxt_line
jp loop_calc
nxt_line
--- Koniec kodu ---
można
--- Kod: --- jp nz,loop_calc
nxt_line
--- Koniec kodu ---
Ogólna uwaga - aby procedury szybciej działały zamiast jr... używaj jp... 1 bajt więcej ale szybciej działa.
Zapis w pamięci jest dużo wolniejszy od operacji na rejestrach - używaj alternatywnych rejestrów (exx, ex af,af')
gorgh:
dziękuweczka za uwagi Dalthon, właśnie tak sobie pomyślałem, żeby użyć exx, nie wiedziałem,że operacje na pamięci są wolniejsze od rejestrów, zapamiętam
Nawigacja
[#] Następna strona
Idź do wersji pełnej