Strona zerowa
From Atariki
Wersja z dnia 15:16, 14 mar 2010 KMK (Dyskusja | wkład) (red.; "poniżej" itd. się doda, kiedy będzie do czego) ← Previous diff |
Aktualna wersja KMK (Dyskusja | wkład) |
||
Linia 1: | Linia 1: | ||
Obszar pamięci $0000-$00FF, mający dla [[6502|procesorów z rodziny 65xx]] specyficzne, 'sprzętowe' znaczenie, ze względu na istnienie oddzielnego trybu adresowania "strony zerowej", szybszego niż adresowanie reszty pamięci. Na stronie zerowej typowo umieszcza się wskaźniki, gdyż wymagają tego prawie wszystkie (oprócz JMP) rozkazy działające w pośrednim trybie adresowania. | Obszar pamięci $0000-$00FF, mający dla [[6502|procesorów z rodziny 65xx]] specyficzne, 'sprzętowe' znaczenie, ze względu na istnienie oddzielnego trybu adresowania "strony zerowej", szybszego niż adresowanie reszty pamięci. Na stronie zerowej typowo umieszcza się wskaźniki, gdyż wymagają tego prawie wszystkie (oprócz JMP) rozkazy działające w pośrednim trybie adresowania. | ||
- | System operacyjny używa strony zerowej do przechowywania zmiennych i wskaźników. | + | System operacyjny używa strony zerowej do przechowywania zmiennych i wskaźników. Zasadniczy podział adresów wygląda następująco: |
+ | |||
+ | <table border=1 cellpadding=5> | ||
+ | <tr><td><b>Adresy</b></td><td><b>Opis</b></td></tr> | ||
+ | <tr><td>$00-$7F</td><td>Zmienne [[Atari OS|systemu operacyjnego]]</td></tr> | ||
+ | <tr><td>$80-$D3</td><td>Wolne do wykorzystania przez program użytkownika.</td></tr> | ||
+ | <tr><td>$D4-$FF</td><td>Zmienne [[Pakiet matematyczny|pakietu matematycznego]]. Do dowolnego wykorzystania, gdy program nie używa pakietu matematycznego.</td></tr> | ||
+ | </table> | ||
+ | |||
+ | "Programem użytkownika" jest np. wewnętrzny interpreter [[Atari BASIC]]. | ||
+ | |||
+ | Procesor [[65C816]] zawiera 16-bitowy rejestr-wskaźnik strony zerowej. Przez modyfikację jego zawartości można stronę zerową umieścić pod dowolnym adresem z zakresu $0000-$FFFF, tryby adresowania strony zerowej będą wówczas używać wskazanego obszaru zamiast zwykłych adresów $0000-$00FF. Jednak rozkazy będą działać z normalną szybkością tylko wtedy, kiedy wskazywany przez rejestr D adres będzie podzielny przez 256 - w przeciwnym wypadku każdy dostęp zajmie o 1 cykl więcej niż normalnie. | ||
+ | |||
+ | W związku z tym, że strona zerowa w 65C816 nie jest już ściśle "zerowa", w terminologii producenta nazywana jest "stroną bezpośrednią" (ang. ''direct page''). | ||
- | {{stub}} | ||
[[Kategoria:Programowanie Atari 8-bit]] | [[Kategoria:Programowanie Atari 8-bit]] |
Aktualna wersja
Obszar pamięci $0000-$00FF, mający dla procesorów z rodziny 65xx specyficzne, 'sprzętowe' znaczenie, ze względu na istnienie oddzielnego trybu adresowania "strony zerowej", szybszego niż adresowanie reszty pamięci. Na stronie zerowej typowo umieszcza się wskaźniki, gdyż wymagają tego prawie wszystkie (oprócz JMP) rozkazy działające w pośrednim trybie adresowania.
System operacyjny używa strony zerowej do przechowywania zmiennych i wskaźników. Zasadniczy podział adresów wygląda następująco:
Adresy | Opis |
$00-$7F | Zmienne systemu operacyjnego |
$80-$D3 | Wolne do wykorzystania przez program użytkownika. |
$D4-$FF | Zmienne pakietu matematycznego. Do dowolnego wykorzystania, gdy program nie używa pakietu matematycznego. |
"Programem użytkownika" jest np. wewnętrzny interpreter Atari BASIC.
Procesor 65C816 zawiera 16-bitowy rejestr-wskaźnik strony zerowej. Przez modyfikację jego zawartości można stronę zerową umieścić pod dowolnym adresem z zakresu $0000-$FFFF, tryby adresowania strony zerowej będą wówczas używać wskazanego obszaru zamiast zwykłych adresów $0000-$00FF. Jednak rozkazy będą działać z normalną szybkością tylko wtedy, kiedy wskazywany przez rejestr D adres będzie podzielny przez 256 - w przeciwnym wypadku każdy dostęp zajmie o 1 cykl więcej niż normalnie.
W związku z tym, że strona zerowa w 65C816 nie jest już ściśle "zerowa", w terminologii producenta nazywana jest "stroną bezpośrednią" (ang. direct page).