Re: optimisation vs securite
[ Nouvelle discussion
| Répondre au groupe
|
fr.comp.lang.c ]
Sujet: Re: optimisation vs securite
De: vincent+n...@vinc17.org (Vincent Lefevre)
Groupes: fr.comp.lang.c
Organisation: a training zoo
Date: 08. May 2008, 23:44:19
References: 1 2 3 4
|
Dans l'article <mn.44667d853c550399.79899@wanadoo.fr>,
Pierre Maurette <maurettepierre@wanadoo.fr> écrit:
> int main(void)
> {
> int a, b, c, test; /* non volatile data*/
> (volatile void)test;
(volatile void), ça a un sens? J'aurais plutôt écrit:
(void) (volatile int) test;
> (volatile void)(a = 0);
Et là j'aurais écrit:
* (volatile int *) &a = 0;
et ainsi de suite.
Maintenant, concernant le code suivant:
int main(void)
{
int a, b, c;
(volatile void)(a = 17);
* (volatile int *) &b = 289;
c = 4913;
return 0;
}
GCC ne génère aucune affectation. Et si on sort le
int a, b, c;
afin que a, b et c deviennent des variables externes, les 3 affectations
sont générées (ce qui est normal, vu que main() peut être appelé par du
code compilé séparément, et les variables a, b et c sont accessibles).
En fait, je ne vois pas le problème dont parle Marc concernant la mise
à 0 de la mémoire: il suffit de mettre le code dans une fonction avec
le pointeur passé à cette fonction, et de compiler cette fonction
séparément du reste: le compilateur ne peut pas deviner ce que va faire
le reste du programme et ne pourra donc pas optimiser (i.e. il sera
forcé de mettre à 0 la mémoire comme voulu).
--
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|