2012-01-04 17 views

Odpowiedz

17

Różnice dotyczą tylko 16 bit intel architectures.

Jeśli chodzi o adresy wirtualne, ma dwa komponenty - selektor i odsunięcie.

selektor jest indeksem w tablicy adresów bazowych i przesunięcie jest dodana do tego adresu bazowego.

w pobliżu wskaźniki nie mają selektora - mają implied selector. Mogą uzyskać dostęp do 64 kB z wirtualnej przestrzeni adresowej.

daleko wskaźniki mają numer explicit selector. Jednak gdy wykonujesz na nich arytmetykę wskaźnikową selector isn't modified.

Ogromne wskaźniki mają numer explicit selector. Gdy wykonujesz na nich arytmetykę wskaźnikową, to the selector can change.

Proszę sprawdź ten link, aby uzyskać więcej informacji:

http://www.codeproject.com/Answers/103115/near-vs-far-vs-huge-pointers/?cmt=11086#answer1

+2

Aargh! Zaczynam pamiętać wszystkie te rzeczy! (Wszystkie rzeczy z modelami pamięci też.) Niech to zniknie! Przeniosłem się do projektowania 32-bitowych architektur płaskich tylko z ważnego powodu ... –

4

blisko, daleko, i ogromne wskaźniki nie są częścią standardowej C; są one/były rozszerzeniem wprowadzonym przez kilku dostawców, aby poradzić sobie z architekturą pamięci z segmentami. Odpowiedź Karthika daje o wiele więcej szczegółów.

Powiązane problemy