Bonjour,
Sur http://fr.wikipedia.org/wiki/X86 on peut lire, en gros que le modèle de mémoire LARGE permet d'avoir plusieurs segments de code et de data.
Avec Turbo C, configuré avec le modèle de mémoire large, je compile le code suivant:
Et la j'ai l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 unsigned char toto[65000]; unsigned char titi[65000]; main() { return(0); }
Too much global data defined in file
C'est bizarre, en modèle tiny ou medium cela ne m'aurait pas choqué, mais en large le compilateur devrait trouver les adresses des variables à partir du segment et de l'offset ?
Sur un autre code, compilé toujours en mémoire large, et en regardant avec Turbo Debugger je constate qu'il accède à la variable uniquement avec son offset, DS étant initialisé au segment de début de donnée, et pas réactualisé si on change de segment. Donc si les données globales dépassent ce segment, il n'arrive pas à y accéder.
Je suis novice en C, quelqu'un pourrait-il m'expliquer d'où vient mon erreur ?
Cordialement.
Partager