Asembler x86/Zaawansowana architektura: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Doles (dyskusja | edycje)
Nie podano opisu zmian
Doles (dyskusja | edycje)
Nie podano opisu zmian
Linia 35:
**<font color="green">B</font> - Ta flaga determinuje maksymalny adres który może wskazywać ESP. Jeśli flaga jest wyczyszczona, wartość adresu jest 16 bitowa (zatem maksymalny adres to 0FFFFh). W przeciwnym wartość wynosi 32 bity ( maksymalny adres równy 0FFFFFFFFh).
 
*<font color ="green">AVL</font> - pole które może używać dany system operacyjny ale nie musi tego robić, przykładowo Linuks ignoruje te pole. Jest ono dostępne dla oprogramowania i może być dowolnie wykorzystany przez programistów i projektantów systemów operacyjnych.
 
{{TODO|Tutaj muszę sprawdzić w manualach Intela co jest napisane o tym polu bo nie mam zielonego pojęcia co ono oznaczało.}}
 
Co musi zrobić system operacyjny aby uzyskać adres liniowy z adresu logicznego ? Dla przykładu mamy wcześniejszy adres logiczny 0xc00d:1001. Najpierw brana jest część 0xC00D. Ineks z selektora segmentu jest pomnożony przez 8 (ponieważ taką długość w bajtach ma deskryptor segmentu). Do tej liczby dodawana jest wartość Base z deskryptora segmentu. Odpowiedni Deskryptor segmentu system operacyjny bierze z GDT lub LDT a to zaś wybiera na podstawie wartości pola TI w selektorze. Po zsumowaniu na sam koniec dodawana jest wartość offsetu z naszego adresu logicznego czyli 0x1001.