Article View: pl.comp.objects
Article #5094Re: Jaki rozmiar ma wskaźnik/pointer w C++?
From: Marcin 'Qrczak' Kowalczyk
Date: Thu, 11 Mar 1999 06:24
Date: Thu, 11 Mar 1999 06:24
32 lines
2734 bytes
2734 bytes
Followup-To: pl.comp.lang.c
Wed, 10 Mar 1999, Jakub K pisze:
> Zresztą operatory far i near istnieją w większości najpopularniejszych
> języków programowania (C, C++, Pascal, Assembler ...).
Nie w C / C++ / Pascalu, tylko w DOSowych i Windowsowych implementacjach
tych języków, a i to nie zawsze. Nawet nie na pececie. W linuksowym C,
również na pececie, nie ma near / far, kompilator nie zna takich słów ani
pojęcia modelu pamięci. Model jest jeden. Na pececie są to 32bitowe
wskaźniki składające się z samego ofsetu.
> Pisząc o oszczędzaniu części segmentowej miałem na myśli OSZCZĘDZANIE
> części segmentowej. W określonym modelu pamięci (nie w każdym)
> zdefiniowanie 100 wskaźników typu 'near' zamiast 'far' pozwala
> zaoszczędzić 200 bajtów w segmencie danych. Oczywiście domyślnym
> segmentem dla tych wskaźników jest potem zawartość rejestru DS.
Chodzi przede wszystkim nie o oszczędzenie tych 200 bajtów, tylko szybkość
operacji na wskaźnikach. Zwłaszcza że w C w odróżnieniu od Pascala
tradycyjnie po tablicach chodzi się wskaźnikami, a nie indeksami - bez
optymalizacji nie wiadomo więc, że dany wskaźnik wskazuje na coś, co jest
dostępne w "bieżącym segmencie" (czy to danych, czy stosu). Ładowanie
rejestru segmentowego przy każdej dereferencji wskaźnika byłoby sporym
spowolnieniem.
--
__("< Marcin Kowalczyk * qrczak@knm.org.pl http://kki.net.pl/qrczak/
\__/ GCS/M d- s+:-- a22 C+++>+++$ UL++>++++$ P+++ L++>++++$ E->++
^^ W++ N+++ o? K? w(---) O? M- V? PS-- PE++ Y? PGP->+ t
QRCZAK 5? X- R tv-- b+>++ DI D- G+ e>++++ h! r--%>++ y-
Technical Details
Message-ID:
<Pine.LNX.4.10.9903102156271.4841-100000@qrnik.knm.org.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!news.wnaft.agh.edu.pl!news.memax.krakow.pl!news.astercity.net!news.icm.edu.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mailReferences:
<7c1lag$n2j$1@h1.uw.edu.pl> <36e5a9d4.0@news.vogel.pl> <7c4ojf$9a$1@sunflower.man.poznan.pl> <36e6ae2e.0@news.vogel.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!news.wnaft.agh.edu.pl!news.memax.krakow.pl!news.astercity.net!news.icm.edu.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mail From: Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl> Newsgroups: pl.comp.lang.c,pl.comp.objects Subject: Re: Jaki rozmiar ma wskaźnik/pointer w C++? Followup-To: pl.comp.lang.c Organization: Klub Nieszkodliwych Manjaków Lines: 33 Message-ID: <Pine.LNX.4.10.9903102156271.4841-100000@qrnik.knm.org.pl> References: <7c1lag$n2j$1@h1.uw.edu.pl> <36e5a9d4.0@news.vogel.pl> <7c4ojf$9a$1@sunflower.man.poznan.pl> <36e6ae2e.0@news.vogel.pl> Mime-Version: 1.0 In-Reply-To: <36e6ae2e.0@news.vogel.pl> Date: Thu, 11 Mar 1999 06:24:07 GMT NNTP-Posting-Host: 195.205.246.105 X-Complaints-To: abuse@tpsa.pl X-Trace: news.tpnet.pl 921133447 195.205.246.105 (Thu, 11 Mar 1999 07:24:07 MET DST) NNTP-Posting-Date: Thu, 11 Mar 1999 07:24:07 MET DST Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit