3041
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]]): | ||
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 | ||
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 | ||
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: | ||
LW r2, 0x3b00 | LW r2, 0x3b00 | ||
LW r3, -12 | LW r3, -12 | ||
MD r2 | MD r2 | ||
LB r1, r2+r3 | LB r1, r2+r3 | ||
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: |