Protected
Re: Protected
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.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?
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.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!
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).erix14 a écrit :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.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!
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 ?
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 ?
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :