Dyskusja:Biblioteczka kodera Atari XL/XE
From Atariki
Wersja z dnia 14:14, 2 cze 2008 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 11:14, 3 cze 2008 Xxl (Dyskusja | wkład) (propozycja) Next diff → |
||
Linia 19: | Linia 19: | ||
::Hm, to pierwsze to zwykłe uzupełnienie, p. każdy podręcznik programowania na 6502. Ale z drugiej strony, nie kazdy takowy ma (acz mozna od WDC ściągnąć), więc może... To drugie do technik skracania chyba wejdzie, tylko trzeba dodać etykietę :> [[Użytkownik:KMK|KMK]] 16:14, 2 cze 2008 (CEST) | ::Hm, to pierwsze to zwykłe uzupełnienie, p. każdy podręcznik programowania na 6502. Ale z drugiej strony, nie kazdy takowy ma (acz mozna od WDC ściągnąć), więc może... To drugie do technik skracania chyba wejdzie, tylko trzeba dodać etykietę :> [[Użytkownik:KMK|KMK]] 16:14, 2 cze 2008 (CEST) | ||
+ | |||
+ | - do skracania kodu może coś takiego: jeśli mamy często wywoływany podprogram, któremu trzeba przekazać parametry to robimy to zazwyczaj tak: | ||
+ | |||
+ | 1. zapisujemy w wydzielonym obszarze na którym operuje podprogram adres danych i robimy JSR do procedury. | ||
+ | |||
+ | proponuje: | ||
+ | |||
+ | 2. wykonujemy JSR do podprogramu, podprogram zdejmuje ze stosu adres który można indeksować od 1 - tam znajdują się nasze dane. | ||
+ | |||
+ | Powrót jest też prosty - wystawiamy na stos adres powrotu (do zdjętego poprzednio adresu dodajemy stałą wartość) i RTS. | ||
+ | |||
+ | oznacza to że trzeba tak sobie zorganizować program: | ||
+ | |||
+ | JSR podprogram | ||
+ | dta nasze dane | ||
+ | ... | ||
+ | dalsza część programu | ||
+ | ... | ||
+ | JSR podprogram | ||
+ | dta nasze dane | ||
+ | itd. | ||
+ | |||
+ | czym częściej używany podprogram tym więcej oszczędzamy - nie potrzeba: | ||
+ | lda <adres danych | ||
+ | sta w ciele podprogramu | ||
+ | lda >adres danych | ||
+ | sta cialo podprogramu lub strona zero | ||
+ | |||
+ | czyli ok 10 bajtów na wywołanie. | ||
+ | [[Użytkownik:Xxl|Xxl]] 13:14, 3 cze 2008 (CEST) |
Wersja z dnia 11:14, 3 cze 2008
proponuje dodać temat "Techniki skracania kodu" obok "Techniki przyspieszania kodu" - procedury optymalizowane nie na szybkość tylko na zajmowane miejsce. Xxl 21:56, 27 gru 2007 (CET)
silwuple ;) Mikey 22:03, 27 gru 2007 (CET)
nie wiem czy to się nadaje
1) szybkie mnożenie przez -1.
Z=A*(-1) to EOR #$ff STA Z INC Z
2) ujemne indeksowanie przy wyszukiwaniu rosnącym - oszczędzamy porównanie w rej. indeksowym np. szukamy wartości A w łańcuchu TAB o długości L.
LDY #$ff-L CMP TAB-($ff-L),Y BEQ _JEST INY BNE _DO_CMP
Xxl 20:21, 6 maj 2008 (CEST)
- Hm, to pierwsze to zwykłe uzupełnienie, p. każdy podręcznik programowania na 6502. Ale z drugiej strony, nie kazdy takowy ma (acz mozna od WDC ściągnąć), więc może... To drugie do technik skracania chyba wejdzie, tylko trzeba dodać etykietę :> KMK 16:14, 2 cze 2008 (CEST)
- do skracania kodu może coś takiego: jeśli mamy często wywoływany podprogram, któremu trzeba przekazać parametry to robimy to zazwyczaj tak:
1. zapisujemy w wydzielonym obszarze na którym operuje podprogram adres danych i robimy JSR do procedury.
proponuje:
2. wykonujemy JSR do podprogramu, podprogram zdejmuje ze stosu adres który można indeksować od 1 - tam znajdują się nasze dane.
Powrót jest też prosty - wystawiamy na stos adres powrotu (do zdjętego poprzednio adresu dodajemy stałą wartość) i RTS.
oznacza to że trzeba tak sobie zorganizować program:
JSR podprogram dta nasze dane ... dalsza część programu ... JSR podprogram dta nasze dane itd.
czym częściej używany podprogram tym więcej oszczędzamy - nie potrzeba:
lda <adres danych sta w ciele podprogramu lda >adres danych sta cialo podprogramu lub strona zero
czyli ok 10 bajtów na wywołanie. Xxl 13:14, 3 cze 2008 (CEST)