194Fermer196
Lionel DebrouxLe 20/04/2009 à 09:47
J'ai essayé les variables globales, elles étaient mises en BSS (ou alors j'ai vraiment raté un truc)

Si elles ne sont pas explicitement initialisées, et que les BSS ne sont pas désactivés, elles sont mises en BSS.
Sinon, elles sont mises en .data.

En général, je conseille (cf. S1P9) de désactiver les BSS (ou de les merger avec la section .data, ce qui revient au même) pour des raisons d'efficacité: les BSS sont accédés à travers des xxx.l relogés, en lecture et en écriture...


Je vais essayer de te retrouver un exemple d'utilisation d'une global register variable. J'ai moins utilisé les global register variables que -freg-relative-an.
[EDIT: ah ouais, mais je n'ai pas TIGCC/GCC4TI sur cette machine. Ca va être plus difficile de trouver et surtout, de re-tester...]

Ah, un truc: fais attention si tu utilises la global register variable (ou le registre à partir duquel les accès dans le programme sont faits, c'est pareil) dans un handler d'interruption. Il faut, dès le début du handler, réinitialiser le registre correspondant. Sinon, tu risques le gros crash grin