🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #5094

Re: Jaki rozmiar ma wskaźnik/pointer w C++?

#5094
From: Marcin 'Qrczak' Kowalczyk
Date: Thu, 11 Mar 1999 06:24
32 lines
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-mail
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>

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