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
je compile avec cette ligne de commande...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part gorgonite@GorgonMobile$ gcc -O0 -Wall -ffixed-eax testGlobalRegVar.c
et ça plante à l'exécution...
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
Partager