🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #5091

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

#5091
From: Jakub K
Date: Wed, 10 Mar 1999 00:00
74 lines
4262 bytes
Jan Kowalski napisa�(a) w wiadomo�ci:
<7c4ojf$9a$1...@sunflower.man.poznan.pl>...
>
>Sorki, kolego, ale na jakim swiecie Ty zyjesz ? Jeszcze epoka
>16-bitowa ?
>Rozmiary wska�nik�w zale�� przede wszystkim od systemu
>operacyjnego. No... je�li kto� poza MS-DOSem nie zna �adnego
>innego systemu operacyjnego, to niech b�dzie, ze od modelu
>pami�ci

A mo�esz mi pokaza� gdzie ja pisa�em co� o systemach operacyjnych ?

> MS-DOS jest - jak wspomnia�em - jedynym 16-bitowym
>systemem i modyfikatory wska�nik�w NEAR i FAR sa wymy�lone
>wy��cznie dla niego (jest to swego rodzaju "rozszerzenie" j�zyka).


Oczywi�cie �e j�zyka, a o czym my tu m�wimy ? Mo�e nie wiesz, ale to jest
grupa o j�zyku C ! Zreszt� operatory far i near istniej� w wi�kszo�ci
najpopularniejszych j�zyk�w programowania (C, C++, Pascal, Assembler ...).
Zalet� tych j�zyk�w jest to, �e w du�ej mierze "odcinaj�" programist� od
systemu operacyjnego. Mo�e ju� przegni�em filozofi� DOS'owsk�, ale
wszyscy pisz�cy pod DOS i Windows'y 16-bitowe wcze�niej czy p�niej
spotkaj� si� z 'far' i 'near' i zagadnieniem modeli pami�ci.

>>�atwo wydedukowa� �e "blisko��" wska�nika (lub raczej
>>tego na co on wskazuje) pozwala "zaoszcz�dzi�" dwa bajty.
>
>I to jest niestety wierutna bzdura. Wska�niki bliskie nie istniej�
>dlatego, �eby cokolwiek oszcz�dza�.

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.

>....Istniej� dlatego, ze na
>16-bitowych procesorach (czyli 8086, 80186, 80286) u�ywanie
>wska�nik�w wi�kszych, ni� 16-bitowych by�o bardzo utrudnione.


Cytuj�: "I to jest niestety wierutna bzdura". "Bardzo utrudnione" ??????
Na 286 operowanie na adresach 16-o bitowych to "chleb powszedni".

Rozmiar wska�nika w sensie TECHNICZNYM zele�y w prostej linii od
architektury procesora. W procesorach 16-o bitowych, aby zaadresowa�
1 MB pami�ci potrzeba by�o dw�ch rejestr�w 16-o bitowych (np ES:DX),
gdzie pierwszy zawiera� cz�� semnentow�, a drugi offset'ow�.
W tym celu przyj�o si� stosowa� notacj� Segment:Offset. Mo�esz to
nazywa� archaizmem, ale tak si� przyj�o. Dla ludzi pisz�cych w "je�yku
procesora" takie rzeczy s� tak jasne jak to, �e �wieci s�o�ce i tylko
statystycznemu "Janowi Kowalskiemu" ;-) takie rzeczy trzeba t�umaczy�.

>Okre�lenie "cze�� segmentowa" wska�nika istnia�o tylko na
>tych trzech wymienionych przeze mnie procesorach
>A pomija�o si� to nie w konkretnych zastosowaniach, lecz raczej w tych
>konkretnych zastosowaniach si� jej NIE u�ywa�o.

Uff... Ale be�kot
Dzi� w Windows stosowane s� nadal wska�niki 32-u bitowe, cho� system
obs�uguje pami�� rozszerzon�. W cz�ci segmentowej jest tzw. selektor.
(m�wi Ci to co� ?)

I na koniec uwaga: je�li pisz� o FAR i NEAR to nie po to, �eby si�
powym�drza�, tylko po to, �eby pytaj�cego troch� ukierunkowa�. Nawet
je�li te operatory nie maj� dzi� wi�kszego zastosowania. Dobrze jest
wiedzie� dlaczego raz wystarcz� 2 bajty, a raz potrzeba czterech.

Oczywi�cie prywatnie do przechowywania adres�w ka�dy mo�e u�y� tylu
bit�w ile mu si� podoba i nazwa� to jak mu si� b�dzie chcia�o.

J.K
Technical Details
Message-ID: <36e6ae2e.0@news.vogel.pl>
Path: mbox-mo1.pugleaf.net!unknown!not-for-mail
References: <7c1lag$n2j$1@h1.uw.edu.pl> <36e5a9d4.0@news.vogel.pl> <7c4ojf$9a$1@sunflower.man.poznan.pl>

Show Full Headers
Complete Article Headers
From: "Jakub K" <jk...@friko3.onet.pl>
Subject: Re: Jaki rozmiar ma wska¼nik/pointer w C++?
Date: 1999/03/10
Message-ID: <36e6ae2e.0@news.vogel.pl>
X-Deja-AN: 453466869
References: <7c1lag$n2j$1@h1.uw.edu.pl> <36e5a9d4.0@news.vogel.pl> <7c4ojf$9a$1@sunflower.man.poznan.pl>
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
X-Trace: 10 Mar 1999 18:38:54 +0100, ppp-144.lodz.tpnet.pl
Newsgroups: pl.comp.lang.c,pl.comp.objects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit