Différents types de pointeurs !? [Résolu]

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Naheulf
Messages : 191
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Différents types de pointeurs !? [Résolu]

Message par Naheulf »

Bonjour,
En étudiant la doc de Microsoft sur les différents types de variables je suis tombé sur la définition C suivante :
typedef BOOL far *LPBOOL;
Ne sachant pas à quoi correspondait le "far", je me suis renseigné un peu. J'ai cru comprendre que cela venait d'un héritage des premier systèmes de pagination sur les processeur 16bits. Ce serait l'un des deux "type" de pointeur existants alors. Le type "far" correspondrait à un pointeur "absolu". Le type "near" correspondrait à un pointeur "relatif" à la page actuelle (comme l'index dans un tableau).

En revanche je n'ai pas réussi, avec mon niveau d'anglais, à trouver une réponse aux deux questions suivantes :
- Qu'en est-il maintenant de ces deux "types" de pointeurs ?
- Comment cela se tradui(sai)t en purebasic ?

Avant que l'on me fasse les remarques :
- Je n'ai volontairement PAS ouvert ce sujet dans le sous forum dédié à Windows car mes questions portent sur un élément du C non spécifique à Windows.
- Ma question ne porte pas sur l'équivalent PureBasic du *LPBOOL car j'ai déjà des éléments de réponse ici : https://www.purebasic.fr/french/viewtopic.php?t=17074
Dernière modification par Naheulf le lun. 24/déc./2018 0:18, modifié 1 fois.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Différents types de pointeurs !?

Message par djes »

La réponse est très simple. Ces deux types de pointeurs sont des reliques d'un passé fort lointain et qu'il vaut mieux oublier. Quant à PB, il est né sur Amiga où l'adressage était déjà en 32 bits en 1985... Sur PC, PB n'a jamais été en 16 bits, il n'a connu que de véritables OS 32 et 64 bits, et il n'a utilisé que des assembleurs 32/64 bits qui s'occupent très bien de tout ça. Bref, pas de far pour le dessert.
Maintenant, ça ne veut pas dire que l'adressage relatif est mort, un octet est important et un programme ré-entrant a du charme ;)

PS: en C, le far et le near peuvent être différents suivant les compilateurs (le far pouvant être en 48 bits même sur un cpu 32 bits). À l'heure actuelle, à ce que je sache, les CPU ne peuvent adresser que 48 bits de mémoire.
Avatar de l’utilisateur
Naheulf
Messages : 191
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: Différents types de pointeurs !?

Message par Naheulf »

Merci djes pour ta réponse claire.

Du coup les 3 lignes suivantes sont équivalentes :

Code : Tout sélectionner

far *machin
near *machin
*machin
PS : Tant mieux, je n'en veut pas non plus pour l'entrée. Trop peur de faire une intoxication informatique à cause de reliefs périmés. :mrgreen:
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Différents types de pointeurs !? [Résolu]

Message par Ollivier »

(pour compléter) Ils y sont toujours les deux types de pointeurs et on y voit que du feu, tellement la taille des registres d'adressage est grande : 64 bits donc un accès théorique à 128 millions de teraoctets.

Le pointeur far provoque des vérifications supplémentaires de protection matérielle.
Répondre