variable globale fixée dans un registre
Bonjour,
Je souhaiterais fixer une variable globale dans un registre tout au long de l'exécution de mon programme... ce qui pourrait améliorer sensiblement les performances.
Après avoir consulté diverses documentations, je suis arrivé à ce code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| // vim:set sw=4 ts=4:
#include <stdio.h>
#include <stdlib.h>
register int* sp asm("eax");
int main(int argc, char** argv) {
sp = (int*) malloc(sizeof(int));
*sp = 0;
fprintf(stderr,"%d\n",*sp);
// avant
*sp += 10;
*sp *= 5;
fprintf(stderr,"%d\n",*sp);
// après
return 0;
} |
je compile avec cette ligne de commande...
Code:
gorgonite@GorgonMobile$ gcc -O0 -Wall -ffixed-eax testGlobalRegVar.c
et ça plante à l'exécution...
Code:
1 2 3
| gorgonite@GorgonMobile$ ./a.out
0
Erreur de segmentation (core dumped) |
sachant que si je ne mets pas le code situé entre avant et après, tout semble fonctionner... si vous avez une solution, ça m'intéresse fortement :D