Modyfikacje sprzętowe procesora: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
Nie podano opisu zmian
Linia 13: Linia 13:
* "Wypadający" najmłodszy bit zachowywany jest, aby później na podstawie jego wartości z komórki pamięci wybrać odpowiedni bajt (lewy bądź prawy).
* "Wypadający" najmłodszy bit zachowywany jest, aby później na podstawie jego wartości z komórki pamięci wybrać odpowiedni bajt (lewy bądź prawy).


Przeróbka procesora wykorzystuje fakt, że argument normalny, którym jest również adres bajtowy, podlega B- i pre-modyfikacji. Zarówno B- jak i pre-modyfikacja są niczym innym, jak operacjami dodawania modyfikatora do argumentu, wykonywanymi w arytmometrze procesora. W wyniku tej operacji może wystąpić przeniesienie, które w standardowym procesorze jest w tym wypadku ignorowane. Przeróbka zmienia to zachowanie.
Adres bajtu (jako argument normalny) podlega również pre- i B-modyfikacji. Obie te operacje są niczym innym, jak dodawaniem modyfikatora do argumentu, wykonywanym w arytmometrze procesora. W wyniku tej operacji może więc wystąpić nadmiar, który w standardowym procesorze jest ignorowany.


W przerobionym procesorze przeniesienie, które wystąpiło w wyniku B- i pre-modyfikacji, jest zapamiętywane. Później, kiedy adres bajtowy przesuwany jest w prawo, aby otrzymać docelowy adres słowa w pamięci, na najstarszy bit adresu, zamiast zera, wsuwana jest wartość przeniesienia. W ten sposób, używając B- lub pre-modyfikacj można przygotować 17-bitowy adres bajtu tak, aby możliwe było zaadresowanie dowolnego bajtu w 64k słowowym bloku.
Przeróbka procesora zmienia to zachowanie. Pierwszy etap obliczania argumentu efektywnego pozostaje bez zmian: do pierwotnego argumentu dodawana jest pre-modyfikacja, a ewentualny nadmiar jest zaniedbywany. W następnym etapie dodawana jest B-modyfikacja, ale tym razem nadmiar zapamiętywany jest w dodatkowym rejestrze. Później, kiedy adres bajtowy przesuwany jest w prawo, aby otrzymać docelowy adres słowa w pamięci, na najstarszy bit adresu, zamiast zera, wsuwana jest wartość zapamiętanego nadmiaru. W ten sposób, używając B-modyfikacj można przygotować 17-bitowy adres bajtu tak, aby możliwe było zaadresowanie dowolnego bajtu w 64k słowowym bloku.
 
Przykładowe konstrukcje używające 17-bit adresowania bajtów (w składni assemblera [[EMAS]]):
 
<syntaxhighlight lang="asm">
LW r2, 0x9400    ; 0x9400 to adres słowa, w którym adresujemy bajt
MD 1            ; wskazanie bajtu w słowie
LB r1, r2+r2    ; załadowanie bajtu; adresem bajtowym staje się 2*r2+1
</syntaxhighlight>
<syntaxhighlight lang="asm">
LW r5, 0xAAAA    ; 0xAAAA to słowowy adres bazowy obszaru, który chcemy adresować
LW r6, r5+r1    ; w r6 do adresu bazowego dodajemy również przesunięcie (indeks) przechowywany w rejestrze r1
RB r3, r5+r6    ; zapamiętanie bajtu pod bajtowym adresem 2*0xAAAA+r1
</syntaxhighlight>


= Przerwanie programowe o wysokim priorytecie =
= Przerwanie programowe o wysokim priorytecie =

Menu nawigacyjne