Protected

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Protected

Message 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?
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Protected

Message 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.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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!
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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).
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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 ?
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

il vaut mieux proteger dès le départ car une lib avec une seule procedure, c'est rare
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre