comment sont organisées en mémoire les données membre d'une structure ?
par exemple si je déclare :
struct nom_s{
char *buffer1;
char *buffer2;
}
struct nom_s buf_s;
et qu'ensuite, dans mon code, je file l'adresse de cette structure a
une de mes fonctions, cette fonction est chargée d'enregistrer des
résultats dedans, et doit donc au préalable allouer de la mémoire pour
les buffer :
où sont dans la mémoire le buffer 1 et le buffer2 ? comment sont ils
placés, sachant qu'il doit bien y avoir quelque chose qui fait qu'ils
appartienent a la structure buf_s.
Voui, mais le calcul de l'offset est laissé à la charge du compilateur, qui définit le "padding" qui lui semble optimal, non ?
Oui, ou selon des critères définis par l'utilisateur. Par exemple en x86 mode réel 16-bit (Borland C 3.1), on peut choisir entre l'alignement byte (aka packed) et word.
A titre indicatif, voici le panneau de contrôle de génération du code de Borland C 3.1:
+-[_]------------- Code Generation -----------------+ ¦ ¦ ¦ Model Options ¦ ¦ ( ) Tiny [X] Treat enums as ints ¦ ¦ () Small [ ] Word alignment ¦ ¦ ( ) Medium [X] Duplicate strings merged ¦ ¦ ( ) Compact [ ] Unsigned characters ¦ ¦ ( ) Large [ ] Pre-compiled headers ¦ ¦ ( ) Huge [ ] Generate assembler source ¦ ¦ [ ] Compile via assembler ¦ ¦ ¦ ¦ Assume SS Equals DS ¦ ¦ () Default for memory model ¦ ¦ ( ) Never ¦ ¦ ( ) Always ¦ ¦ ¦ ¦ Defines ¦ ¦ ¦ ¦ OK _ Cancel _ Help _ ¦ ¦ ________ ________ ________ ¦ +---------------------------------------------------+
Ce que je n'arrive pas à voir (et qui doit surement être écrit quelque part), c'est si on peut lier deux codes qui manipulent les mêmes structures mais compilés avec des règles de padding différentes.
A ma connaissance, (et je crois bien qu'on en a déjà parlé), le langage C ne définit pas d'ABI. C'est du ressort de chaque implémentation, et c'est la jungle la plus totale.
Même avec une même implémentation, une bibliothèque compilée en mode 'packed' ne sera pas compatible avec une application compilée 'normalement', et je ne suis même pas sûr que le linker s'en rende compte.
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr> wrote:
Voui, mais le calcul de l'offset est laissé à la charge du
compilateur,
qui définit le "padding" qui lui semble optimal, non ?
Oui, ou selon des critères définis par l'utilisateur. Par exemple en x86 mode
réel 16-bit (Borland C 3.1), on peut choisir entre l'alignement byte (aka
packed) et word.
A titre indicatif, voici le panneau de contrôle de génération du code de
Borland C 3.1:
+-[_]------------- Code Generation -----------------+
¦ ¦
¦ Model Options ¦
¦ ( ) Tiny [X] Treat enums as ints ¦
¦ () Small [ ] Word alignment ¦
¦ ( ) Medium [X] Duplicate strings merged ¦
¦ ( ) Compact [ ] Unsigned characters ¦
¦ ( ) Large [ ] Pre-compiled headers ¦
¦ ( ) Huge [ ] Generate assembler source ¦
¦ [ ] Compile via assembler ¦
¦ ¦
¦ Assume SS Equals DS ¦
¦ () Default for memory model ¦
¦ ( ) Never ¦
¦ ( ) Always ¦
¦ ¦
¦ Defines ¦
¦ ¦
¦ OK _ Cancel _ Help _ ¦
¦ ________ ________ ________ ¦
+---------------------------------------------------+
Ce que je n'arrive pas à voir (et qui doit surement être écrit
quelque part), c'est si on peut lier deux codes qui manipulent
les mêmes structures mais compilés avec des règles de padding
différentes.
A ma connaissance, (et je crois bien qu'on en a déjà parlé), le langage C ne
définit pas d'ABI. C'est du ressort de chaque implémentation, et c'est la
jungle la plus totale.
Même avec une même implémentation, une bibliothèque compilée en mode 'packed'
ne sera pas compatible avec une application compilée 'normalement', et je ne
suis même pas sûr que le linker s'en rende compte.
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Voui, mais le calcul de l'offset est laissé à la charge du compilateur, qui définit le "padding" qui lui semble optimal, non ?
Oui, ou selon des critères définis par l'utilisateur. Par exemple en x86 mode réel 16-bit (Borland C 3.1), on peut choisir entre l'alignement byte (aka packed) et word.
A titre indicatif, voici le panneau de contrôle de génération du code de Borland C 3.1:
+-[_]------------- Code Generation -----------------+ ¦ ¦ ¦ Model Options ¦ ¦ ( ) Tiny [X] Treat enums as ints ¦ ¦ () Small [ ] Word alignment ¦ ¦ ( ) Medium [X] Duplicate strings merged ¦ ¦ ( ) Compact [ ] Unsigned characters ¦ ¦ ( ) Large [ ] Pre-compiled headers ¦ ¦ ( ) Huge [ ] Generate assembler source ¦ ¦ [ ] Compile via assembler ¦ ¦ ¦ ¦ Assume SS Equals DS ¦ ¦ () Default for memory model ¦ ¦ ( ) Never ¦ ¦ ( ) Always ¦ ¦ ¦ ¦ Defines ¦ ¦ ¦ ¦ OK _ Cancel _ Help _ ¦ ¦ ________ ________ ________ ¦ +---------------------------------------------------+
Ce que je n'arrive pas à voir (et qui doit surement être écrit quelque part), c'est si on peut lier deux codes qui manipulent les mêmes structures mais compilés avec des règles de padding différentes.
A ma connaissance, (et je crois bien qu'on en a déjà parlé), le langage C ne définit pas d'ABI. C'est du ressort de chaque implémentation, et c'est la jungle la plus totale.
Même avec une même implémentation, une bibliothèque compilée en mode 'packed' ne sera pas compatible avec une application compilée 'normalement', et je ne suis même pas sûr que le linker s'en rende compte.
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Marc Boyer
Emmanuel Delahaye wrote:
Ce que je n'arrive pas à voir (et qui doit surement être écrit quelque part), c'est si on peut lier deux codes qui manipulent les mêmes structures mais compilés avec des règles de padding différentes.
A ma connaissance, (et je crois bien qu'on en a déjà parlé), le langage C ne définit pas d'ABI. C'est du ressort de chaque implémentation, et c'est la jungle la plus totale.
Je crois que je confonds deux choses: il me semble qu'en fait, la norme qui définit le langage C ne définit pas d'ABI, mais que de fait, une force de C est que des ABI relativement stables et répandues existent pour la majorité des plateformes.
Donc, mea culpa.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Emmanuel Delahaye wrote:
Ce que je n'arrive pas à voir (et qui doit surement être écrit
quelque part), c'est si on peut lier deux codes qui manipulent
les mêmes structures mais compilés avec des règles de padding
différentes.
A ma connaissance, (et je crois bien qu'on en a déjà parlé), le langage C ne
définit pas d'ABI. C'est du ressort de chaque implémentation, et c'est la
jungle la plus totale.
Je crois que je confonds deux choses: il me semble qu'en fait,
la norme qui définit le langage C ne définit pas d'ABI, mais que
de fait, une force de C est que des ABI relativement stables
et répandues existent pour la majorité des plateformes.
Donc, mea culpa.
Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(
Ce que je n'arrive pas à voir (et qui doit surement être écrit quelque part), c'est si on peut lier deux codes qui manipulent les mêmes structures mais compilés avec des règles de padding différentes.
A ma connaissance, (et je crois bien qu'on en a déjà parlé), le langage C ne définit pas d'ABI. C'est du ressort de chaque implémentation, et c'est la jungle la plus totale.
Je crois que je confonds deux choses: il me semble qu'en fait, la norme qui définit le langage C ne définit pas d'ABI, mais que de fait, une force de C est que des ABI relativement stables et répandues existent pour la majorité des plateformes.
Donc, mea culpa.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Gabriel Dos Reis
Marc Boyer writes:
| Je crois que je confonds deux choses: il me semble qu'en fait, | la norme qui définit le langage C ne définit pas d'ABI, mais que | de fait, une force de C est que des ABI relativement stables | et répandues existent pour la majorité des plateformes. | | Donc, mea culpa.
c'est une confusion courante, malheureusement.
-- Gaby
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr> writes:
| Je crois que je confonds deux choses: il me semble qu'en fait,
| la norme qui définit le langage C ne définit pas d'ABI, mais que
| de fait, une force de C est que des ABI relativement stables
| et répandues existent pour la majorité des plateformes.
|
| Donc, mea culpa.
| Je crois que je confonds deux choses: il me semble qu'en fait, | la norme qui définit le langage C ne définit pas d'ABI, mais que | de fait, une force de C est que des ABI relativement stables | et répandues existent pour la majorité des plateformes. | | Donc, mea culpa.
c'est une confusion courante, malheureusement.
-- Gaby
Pascal
Bonjour,
Je suis régulièrement votre "groupe de discussion" et étudie le langage C ANSI avec le livre de K&R,voyant un post sur le langage assembleur,et pour ma culture générale,pouvez-vous m'indiquer un bon livre traitant du sujet?
Ps:Excuses pour le Hors-Sujet ,de plus ma config est un PC :) ,processeur Intel P4,sous environnement Windows Xp et Linux,avec compilateur Gcc 3.2.
Voilà,Merçi a tous et Bonne Année encore.
Bonjour,
Je suis régulièrement votre "groupe de discussion" et étudie le langage C
ANSI avec le livre de K&R,voyant un post sur le langage assembleur,et pour
ma culture générale,pouvez-vous m'indiquer un bon livre traitant du sujet?
Ps:Excuses pour le Hors-Sujet ,de plus ma config est un PC :) ,processeur
Intel P4,sous environnement Windows Xp et Linux,avec compilateur Gcc 3.2.
Je suis régulièrement votre "groupe de discussion" et étudie le langage C ANSI avec le livre de K&R,voyant un post sur le langage assembleur,et pour ma culture générale,pouvez-vous m'indiquer un bon livre traitant du sujet?
Ps:Excuses pour le Hors-Sujet ,de plus ma config est un PC :) ,processeur Intel P4,sous environnement Windows Xp et Linux,avec compilateur Gcc 3.2.
Voilà,Merçi a tous et Bonne Année encore.
Emmanuel Delahaye
In 'fr.comp.lang.c', "Pascal" wrote:
Je suis régulièrement votre "groupe de discussion" et étudie le langage C ANSI avec le livre de K&R,voyant un post sur le langage assembleur,et pour ma culture générale,pouvez-vous m'indiquer un bon livre traitant du sujet?
Ps:Excuses pour le Hors-Sujet ,de plus ma config est un PC :) ,processeur Intel P4,sous environnement Windows Xp et Linux,avec compilateur Gcc 3.2.
news:comp.lang.asm86 (en anglais)
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', "Pascal" <p.thisse@tiscali.fr> wrote:
Je suis régulièrement votre "groupe de discussion" et étudie le langage C
ANSI avec le livre de K&R,voyant un post sur le langage assembleur,et pour
ma culture générale,pouvez-vous m'indiquer un bon livre traitant du sujet?
Ps:Excuses pour le Hors-Sujet ,de plus ma config est un PC :) ,processeur
Intel P4,sous environnement Windows Xp et Linux,avec compilateur Gcc 3.2.
news:comp.lang.asm86 (en anglais)
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Je suis régulièrement votre "groupe de discussion" et étudie le langage C ANSI avec le livre de K&R,voyant un post sur le langage assembleur,et pour ma culture générale,pouvez-vous m'indiquer un bon livre traitant du sujet?
Ps:Excuses pour le Hors-Sujet ,de plus ma config est un PC :) ,processeur Intel P4,sous environnement Windows Xp et Linux,avec compilateur Gcc 3.2.
news:comp.lang.asm86 (en anglais)
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Guillaume L.
In 'fr.comp.lang.c', "Pascal" wrote:
Je suis régulièrement votre "groupe de discussion" et étudie le langage C ANSI avec le livre de K&R,voyant un post sur le langage assembleur,et pour ma culture générale,pouvez-vous m'indiquer un bon livre traitant du sujet?
Ps:Excuses pour le Hors-Sujet ,de plus ma config est un PC :) ,processeur Intel P4,sous environnement Windows Xp et Linux,avec compilateur Gcc 3.2.
news:comp.lang.asm86 (en anglais)
Pas plutôt news:comp.lang.asm.x86 ?
-- Guillaume Leconte "La foule est une somme d'erreurs qu'il faut corriger." WFN
In 'fr.comp.lang.c', "Pascal" <p.thisse@tiscali.fr> wrote:
Je suis régulièrement votre "groupe de discussion" et étudie le langage C
ANSI avec le livre de K&R,voyant un post sur le langage assembleur,et pour
ma culture générale,pouvez-vous m'indiquer un bon livre traitant du sujet?
Ps:Excuses pour le Hors-Sujet ,de plus ma config est un PC :) ,processeur
Intel P4,sous environnement Windows Xp et Linux,avec compilateur Gcc 3.2.
news:comp.lang.asm86 (en anglais)
Pas plutôt news:comp.lang.asm.x86 ?
--
Guillaume Leconte
"La foule est une somme d'erreurs qu'il faut corriger." WFN
Je suis régulièrement votre "groupe de discussion" et étudie le langage C ANSI avec le livre de K&R,voyant un post sur le langage assembleur,et pour ma culture générale,pouvez-vous m'indiquer un bon livre traitant du sujet?
Ps:Excuses pour le Hors-Sujet ,de plus ma config est un PC :) ,processeur Intel P4,sous environnement Windows Xp et Linux,avec compilateur Gcc 3.2.
news:comp.lang.asm86 (en anglais)
Pas plutôt news:comp.lang.asm.x86 ?
-- Guillaume Leconte "La foule est une somme d'erreurs qu'il faut corriger." WFN
Emmanuel Delahaye
In 'fr.comp.lang.c', "Guillaume L." <vect+ wrote:
news:comp.lang.asm86 (en anglais)
Pas plutôt news:comp.lang.asm.x86 ?
C'est bien possible!
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', "Guillaume L." <vect+news@nerim.net> wrote:
news:comp.lang.asm86 (en anglais)
Pas plutôt news:comp.lang.asm.x86 ?
C'est bien possible!
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/