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

Przejdź do nawigacji Przejdź do wyszukiwania
brak opisu edycji
Nie podano opisu zmian
Nie podano opisu zmian
Linia 61: Linia 61:
Przykładowe konstrukcje używające 17-bit adresowania bajtów (w składni assemblera [[EMAS]]):
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
  LW r2, 0x9400    ; 0x9400 to adres słowa, w którym adresujemy bajt
  MD 1            ; wskazanie bajtu w słowie
  MD 1            ; wskazanie bajtu w słowie
  LB r1, r2+r2    ; załadowanie bajtu; adresem bajtowym staje się 2*r2+1
  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 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
  LW r6, r5+r1    ; w r6 do adresu bazowego dodajemy również przesunięcie (indeks) przechowywany w rejestrze r1
  MD r6            ; pre-modyfikacja zapewnia dodanie do argumentu wartości r5+r1
  MD r6            ; pre-modyfikacja zapewnia dodanie do argumentu wartości r5+r1
  RB r3, r5        ; zapamiętanie bajtu pod bajtowym adresem 2*0xAAAA+r1
  RB r3, r5        ; zapamiętanie bajtu pod bajtowym adresem 2*0xAAAA+r1
</syntaxhighlight>


17-bitowe adresowanie bajtów może rodzić problemy w specyficznych przypadkach użycia go w oprogramowaniu pisanym na oryginalny procesor. Rozpatrzmy następujący przykład:
17-bitowe adresowanie bajtów może rodzić problemy w specyficznych przypadkach użycia go w oprogramowaniu pisanym na oryginalny procesor. Rozpatrzmy następujący przykład:


<syntaxhighlight lang="asm">
  LW r2, 0x3b00
  LW r2, 0x3b00
  LW r3, -12
  LW r3, -12
  MD r2
  MD r2
  LB r1, r2+r3
  LB r1, r2+r3
</syntaxhighlight>


Jeśli przeniesienia przy obliczaniu argumentu normalnego są zaniedbywane (jak w oryginalnym procesorze), adres bajtowy zostanie obliczony zgodnie z intencją programisty w następujący sposób:
Jeśli przeniesienia przy obliczaniu argumentu normalnego są zaniedbywane (jak w oryginalnym procesorze), adres bajtowy zostanie obliczony zgodnie z intencją programisty w następujący sposób:

Menu nawigacyjne