Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.1.Modelprocesorówrodzinyx86wtrybierzeczywistym
19
T
(ang.Trapflag)–flagapracykrokowej,dlaT=0powykonaniukażdegorozkazujest
generowanywyjąteknr1.
Cechącharakterystycznąrejestrówogólnegoprzeznaczeniajestmożliwośćich
użyciawdowolnychoperacjacharytmetycznychlublogicznych.Rejestry,którychnazwy
zaczynająsięliterąE,sąrejestrami32-bitowymi.Młodsze16-bitoweczęścitychreje-
strównosząnazwyAX,BX,CX,DX,którezkoleisąpodzielonenadwie8-bitoweczęści
oznaczaneliterąL(częśćdolna)iH(częśćgórna).Każdyzrejestrówogólnegoprze-
znaczeniaspełniapewnądodatkowąindywidualnąfunkcję:(E)AX–rejestrstosowany
wyłączniewoperacjacharytmetycznychilogicznych(ang.accumulator),(E)BX–rejestr
adresowydanych(ang.base),(E)CX–rejestrlicznikowydlarozkazówpętliiteracyjnych
(ang.counter),(E)DX–rejestradresowyukładówwe/wy(ang.data),(E)BP–rejestr
adresowydanychwsegmenciestosu(ang.BasePointer),(E)SP–wskaźnikstosu(ang.
StackPointer),(E)SI,(E)DI–rejestryindeksowe(ang.Source,DestinationIndex).
WskaźnikrozkazuIP(ang.InstructionPointer)zawieraadresrozkazu,który
będziewykonywanywnastępnymcyklurozkazowym.Ściślejmówiąc,rejestrIPzawiera
adreswzględempoczątkusegmentuprogramu(ang.offset).
Doadresowaniadanychwtrybierzeczywistymsąużywanewyłącznierejestry
16-bitowe(BX,BP,SP,SI,DI).Istniejetakżemożliwośćwykonywaniaoperacjinadanych
32-bitowychzzastosowaniemrejestrówEAX,EBX,ECX,EDX,ESI,EDI.
Rola16-bitowychrejestrówsegmentowychonazwach:CS(ang.CodeSegment),
DS(ang.DataSegment),SS(ang.StackSegment)iES(ang.ExtraSegment)wtrybierze-
czywistympoleganaprzechowywaniuadresówbazowychsegmentuprogramu,danych,
stosuidodatkowegosegmentudanych.Wartozwrócićuwagę,żew32-bitowymproceso-
rze80386inastępnychdodanojeszczedwarejestrysegmentoweonazwachFSorazGS,
którejednaksądostępnewyłączniewtrybiechronionym.Zasadęsegmentacjipamięci
wtrybierzeczywistymprzedstawionowpunkcie1.1.2.
1.1.2.Segmentacjapamięciwtrybierzeczywistym
Użytkownicyorazprogramiścisystemukomputerowegonajczęściejnietraktująpamię-
cioperacyjnejjakoliniowejtablicybajtów(tzw.pamięćfizyczna),araczejmająnamyśli
podprogramy,procedury,moduły,programgłówny,jakrównieżstrukturydanych–
listy,tablice,stosyitp.Wymienionestrukturymogąbyćprzechowywanewodrębnych
segmentach,tworzącwtensposóblogicznąorganizacjępamięci(tzw.pamięćlogiczna).
Segmentacjąnazywasięschematzarządzaniapamięcią,któryurzeczywistniatensposób
widzeniapamięciprzezużytkownika.
Adresylogicznezawierajądwieskładowe(mówimy,żeadresjestdwuwymiarowy),
określającesegment(adresbazowysegmentu)orazodległość(przesunięcie–ang.offset)
odpoczątkusegmentu.Użytkownik(programista)odwołujesiędoobiektówwprogra-
miezapomocąadresudwuwymiarowego,podczasgdypamięćfizycznajestjednowymia-
rowymciągiembajtów.Nazewnętrznąmagistralęadresowąprocesorasąwystawiane
adresyfizyczne,alewewnątrzprocesoraadresysąreprezentowanewsposóblogiczny: