Dyskusja:Biblioteczka kodera Atari XL/XE

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
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)

Personal tools