Page 1 sur 1

Protected

Publié : jeu. 02/juin/2005 18:47
par nico
Je me pose cette question, si on transforme une procédure en une Lib, est-il nécessaire de protéger ses variables?

Une Lib étant compiler, est-ce vraiment nécessaire?

Publié : ven. 03/juin/2005 9:47
par Dr. Dri
personellement je ne pense pas... puisque c'est à la compilation que sont définie les adresses des variables en fonction de leur nom...

Dri

Re: Protected

Publié : ven. 03/juin/2005 17:31
par Anonyme2
nico a écrit :Je me pose cette question, si on transforme une procédure en une Lib, est-il nécessaire de protéger ses variables?

Une Lib étant compiler, est-ce vraiment nécessaire?
Je pensais avoir une idée tranchée sur la question mais il m'est venu un doute alors je vais essayer de faire des tests.

Publié : ven. 03/juin/2005 17:44
par nico
Je devrais pas me poser cette question et toujours protéger mes variables mais comme je n'ai pas pris cette habitude, je me demandais s'il fallait que je refasse mes Libs!

Publié : ven. 03/juin/2005 19:41
par erix14
nico a écrit :Je devrais pas me poser cette question et toujours protéger mes variables mais comme je n'ai pas pris cette habitude, je me demandais s'il fallait que je refasse mes Libs!
Dans une procédure les variables sont déclarées par défaut en local, ce qui correspond à "Protected". Donc, le seul but de mettre "Protected" dans une procédure, c'est si une variable global porte le même nom dans le même programme (c'est simplement une information pour le compilateur). Dans une librairie les noms des variables n'existent plus, donc pas de problème.

Publié : sam. 04/juin/2005 5:54
par Anonyme2
erix14 a écrit :
nico a écrit :Je devrais pas me poser cette question et toujours protéger mes variables mais comme je n'ai pas pris cette habitude, je me demandais s'il fallait que je refasse mes Libs!
Dans une procédure les variables sont déclarées par défaut en local, ce qui correspond à "Protected". Donc, le seul but de mettre "Protected" dans une procédure, c'est si une variable global porte le même nom dans le même programme (c'est simplement une information pour le compilateur). Dans une librairie les noms des variables n'existent plus, donc pas de problème.
Tu as raison, eric, mais je me suis demandé (pour une lib plus asm voire une lib en PB avec certaines instructions asm) s'il existe une directive FASM permettant un accès à une variable globale externe à la lib, sous-entendu que l'on connaisse son nom (donc son label) dans la lib (c'est un peu tiré par les cheveux mais je pense à ca depuis un moment).

Publié : sam. 04/juin/2005 8:36
par erix14
Le compilateur remplace les noms des variables par des emplacements de mémoire ou des positions sur la pile.
Si la librairie est déjà compilée, il est impossible que celle-ci devine les emplacements-mémoires des variables du programme appelant.
Dis-moi si je me trompe, mais les librairies ne sont pas compilées, elles sont liées avec folink.exe à ton programme principal je crois ?
Ce qui veut dire que FASM ne touche pas au code de la librairie ?

Publié : sam. 04/juin/2005 10:52
par Anonyme2
Je ne sais pas exactement comment travaille les linkeur (peut-être un pseudcode ?) et je ne connais pas les différences entre les obj et le format Lib

Je ferais des essais un de ces jours

Publié : sam. 04/juin/2005 18:56
par Le Soldat Inconnu
il vaut mieux proteger dès le départ car une lib avec une seule procedure, c'est rare