typa:
[...]Le lieur fabrique une cible. Dans le cas que vous proposez, la cible
^^^^^
Je croyais qu'on disait « éditeur de liens » en français. Quand on ne
dit pas carrément « linker »:-).
Tiens, c'est marrant, Microsoft est 100% "Editeur de liens", Borland
100% "Lieur". Je n'avais pas remarqué.
J'essaie d'être constant, mais de là à être cohérent... "Lieur", mais
"Librarian", par exemple.
Que désigner par le mot "assembleur" ? J'avais tendance à dire que
c'est un ensemble d'outils, comprenant un compilateur de langage
assembleur.
Mais ça ne fonctionne pas chez GNU, qui utilise beaucoup d'outils dans
son processus de fabrication. La raison en est claire, elle est dans
la multiplicité des processeurs cible. Ce n'est certainement favorable
ni à la rapidité de construction, ni à l'optimisation.
A l'inverse, VC7.1 semble avoir une structure sous-jacente très
différente de la structure visible (wrappers en nombre). J'ai remarqué
que le même code source donnait lieu à la génération de plusieurs
séquences binaires.
J'avais d'abord pensé que le choix était fait à l'exécution, sans
arriver à comprendre le code, je pense maintenant que c'est plutôt à
l'édition de liens.
En fait, j'avais certainement confondu l'exe désassemblé et le .asm
correspondant au .obj. Il me faudra creuser ça à l'occasion. Borland
traite (semble-t-il) le code source directement pour fabriquer du code
objet. Les sorties préprocesseur et assembleur sont des "dérivations".
Note que de ce point de vue, des DLL ne sont pas des bibliothèques,
mais des fichiers objet.
Je n'utilisais pas le même vocabulaire pour "objet", mais je pense que
l'idée est la même. Je distingue (en C/C++/asm):
- Le code source, éditable : sources, sorties asm et préprocesseur par
exemple.
- Le code objet, du code machine aux références non résolues, non lié.
Fichiers .obj intermédiaires, fichiers .lib contenant des fonctions à
lier statiquement, ...
- Le code exécutable, c'est à dire du code lié plus tout ce qu'il faut
pour en faire un fichier correspondant à la cible (divers formats de
.exe, plugins, DLL, et bien d'autres).
kanze@gabi-soft.fr typa:
[...]
Le lieur fabrique une cible. Dans le cas que vous proposez, la cible
^^^^^
Je croyais qu'on disait « éditeur de liens » en français. Quand on ne
dit pas carrément « linker »:-).
Tiens, c'est marrant, Microsoft est 100% "Editeur de liens", Borland
100% "Lieur". Je n'avais pas remarqué.
J'essaie d'être constant, mais de là à être cohérent... "Lieur", mais
"Librarian", par exemple.
Que désigner par le mot "assembleur" ? J'avais tendance à dire que
c'est un ensemble d'outils, comprenant un compilateur de langage
assembleur.
Mais ça ne fonctionne pas chez GNU, qui utilise beaucoup d'outils dans
son processus de fabrication. La raison en est claire, elle est dans
la multiplicité des processeurs cible. Ce n'est certainement favorable
ni à la rapidité de construction, ni à l'optimisation.
A l'inverse, VC7.1 semble avoir une structure sous-jacente très
différente de la structure visible (wrappers en nombre). J'ai remarqué
que le même code source donnait lieu à la génération de plusieurs
séquences binaires.
J'avais d'abord pensé que le choix était fait à l'exécution, sans
arriver à comprendre le code, je pense maintenant que c'est plutôt à
l'édition de liens.
En fait, j'avais certainement confondu l'exe désassemblé et le .asm
correspondant au .obj. Il me faudra creuser ça à l'occasion. Borland
traite (semble-t-il) le code source directement pour fabriquer du code
objet. Les sorties préprocesseur et assembleur sont des "dérivations".
Note que de ce point de vue, des DLL ne sont pas des bibliothèques,
mais des fichiers objet.
Je n'utilisais pas le même vocabulaire pour "objet", mais je pense que
l'idée est la même. Je distingue (en C/C++/asm):
- Le code source, éditable : sources, sorties asm et préprocesseur par
exemple.
- Le code objet, du code machine aux références non résolues, non lié.
Fichiers .obj intermédiaires, fichiers .lib contenant des fonctions à
lier statiquement, ...
- Le code exécutable, c'est à dire du code lié plus tout ce qu'il faut
pour en faire un fichier correspondant à la cible (divers formats de
.exe, plugins, DLL, et bien d'autres).
typa:
[...]Le lieur fabrique une cible. Dans le cas que vous proposez, la cible
^^^^^
Je croyais qu'on disait « éditeur de liens » en français. Quand on ne
dit pas carrément « linker »:-).
Tiens, c'est marrant, Microsoft est 100% "Editeur de liens", Borland
100% "Lieur". Je n'avais pas remarqué.
J'essaie d'être constant, mais de là à être cohérent... "Lieur", mais
"Librarian", par exemple.
Que désigner par le mot "assembleur" ? J'avais tendance à dire que
c'est un ensemble d'outils, comprenant un compilateur de langage
assembleur.
Mais ça ne fonctionne pas chez GNU, qui utilise beaucoup d'outils dans
son processus de fabrication. La raison en est claire, elle est dans
la multiplicité des processeurs cible. Ce n'est certainement favorable
ni à la rapidité de construction, ni à l'optimisation.
A l'inverse, VC7.1 semble avoir une structure sous-jacente très
différente de la structure visible (wrappers en nombre). J'ai remarqué
que le même code source donnait lieu à la génération de plusieurs
séquences binaires.
J'avais d'abord pensé que le choix était fait à l'exécution, sans
arriver à comprendre le code, je pense maintenant que c'est plutôt à
l'édition de liens.
En fait, j'avais certainement confondu l'exe désassemblé et le .asm
correspondant au .obj. Il me faudra creuser ça à l'occasion. Borland
traite (semble-t-il) le code source directement pour fabriquer du code
objet. Les sorties préprocesseur et assembleur sont des "dérivations".
Note que de ce point de vue, des DLL ne sont pas des bibliothèques,
mais des fichiers objet.
Je n'utilisais pas le même vocabulaire pour "objet", mais je pense que
l'idée est la même. Je distingue (en C/C++/asm):
- Le code source, éditable : sources, sorties asm et préprocesseur par
exemple.
- Le code objet, du code machine aux références non résolues, non lié.
Fichiers .obj intermédiaires, fichiers .lib contenant des fonctions à
lier statiquement, ...
- Le code exécutable, c'est à dire du code lié plus tout ce qu'il faut
pour en faire un fichier correspondant à la cible (divers formats de
.exe, plugins, DLL, et bien d'autres).
"Pierre Maurette" a écrit dans le message
news:Borland traite (semble-t-il) le code source directement pour
fabriquer du code objet. Les sorties préprocesseur et assembleur
sont des "dérivations".
Il me semble que sur la plupart des compilateurs actuels la sortie
"assembleur" n'est que du pseudo-assembleur reconstitué à partir
des structures de données internes. Autrement dit, cette sortie
mise en forme pour homo sapiens ne sert pas à la compilation
par la suite.
En revanche il est clair que la phase préprocesseur -> C++ source
"ordinaire" est indispensable à la compilation.
"Pierre Maurette" <maurette.pierre@free.fr> a écrit dans le message
news: 38hrb09q0ocvmuu23ko4pg08bi09qkse8u@4ax.com...
Borland traite (semble-t-il) le code source directement pour
fabriquer du code objet. Les sorties préprocesseur et assembleur
sont des "dérivations".
Il me semble que sur la plupart des compilateurs actuels la sortie
"assembleur" n'est que du pseudo-assembleur reconstitué à partir
des structures de données internes. Autrement dit, cette sortie
mise en forme pour homo sapiens ne sert pas à la compilation
par la suite.
En revanche il est clair que la phase préprocesseur -> C++ source
"ordinaire" est indispensable à la compilation.
"Pierre Maurette" a écrit dans le message
news:Borland traite (semble-t-il) le code source directement pour
fabriquer du code objet. Les sorties préprocesseur et assembleur
sont des "dérivations".
Il me semble que sur la plupart des compilateurs actuels la sortie
"assembleur" n'est que du pseudo-assembleur reconstitué à partir
des structures de données internes. Autrement dit, cette sortie
mise en forme pour homo sapiens ne sert pas à la compilation
par la suite.
En revanche il est clair que la phase préprocesseur -> C++ source
"ordinaire" est indispensable à la compilation.
wrote:Traditionnellement, et dans la plupart des systèmes encore
aujourd'hui, la règle est simple : si on spécifie un fichier objet
lors de l'édition de liens, il fait partie du programme. Si en
revanche, on met l'objet dans une bibliothèque, et on spécifie la
bibliothèque, le fichier objet ne fait partie du programme que sous
certaines conditions -- en général, il faut qu'il résoud un symbole
externe qui ne serait pas résolu autrement. (Mais les détails de
comment ça marche varie énormement, et les systèmes Unix
fonctionnent bien différemment que Windows à cet égard.)
Ce qui peut être assez gênant. Quelqu'un sait-il pourquoi la norme
laisse de côté ces points qui pourtant peuvent avoir une influence sur
la sémantique d'un programme ?
kanze@gabi-soft.fr wrote:
Traditionnellement, et dans la plupart des systèmes encore
aujourd'hui, la règle est simple : si on spécifie un fichier objet
lors de l'édition de liens, il fait partie du programme. Si en
revanche, on met l'objet dans une bibliothèque, et on spécifie la
bibliothèque, le fichier objet ne fait partie du programme que sous
certaines conditions -- en général, il faut qu'il résoud un symbole
externe qui ne serait pas résolu autrement. (Mais les détails de
comment ça marche varie énormement, et les systèmes Unix
fonctionnent bien différemment que Windows à cet égard.)
Ce qui peut être assez gênant. Quelqu'un sait-il pourquoi la norme
laisse de côté ces points qui pourtant peuvent avoir une influence sur
la sémantique d'un programme ?
wrote:Traditionnellement, et dans la plupart des systèmes encore
aujourd'hui, la règle est simple : si on spécifie un fichier objet
lors de l'édition de liens, il fait partie du programme. Si en
revanche, on met l'objet dans une bibliothèque, et on spécifie la
bibliothèque, le fichier objet ne fait partie du programme que sous
certaines conditions -- en général, il faut qu'il résoud un symbole
externe qui ne serait pas résolu autrement. (Mais les détails de
comment ça marche varie énormement, et les systèmes Unix
fonctionnent bien différemment que Windows à cet égard.)
Ce qui peut être assez gênant. Quelqu'un sait-il pourquoi la norme
laisse de côté ces points qui pourtant peuvent avoir une influence sur
la sémantique d'un programme ?
Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
a écrit dans le message news:Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
Je te crois évidemment, mais j'ai du mal à comprendre :
1) je repère et je développe les directives commençant
par un #, et elles seules, et je les intègre au reste qui
n'est pas du tout analysé ;
<kanze@gabi-soft.fr> a écrit dans le message news:
d6652001.0406030010.1588404c@posting.google.com...
Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
Je te crois évidemment, mais j'ai du mal à comprendre :
1) je repère et je développe les directives commençant
par un #, et elles seules, et je les intègre au reste qui
n'est pas du tout analysé ;
a écrit dans le message news:Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
Je te crois évidemment, mais j'ai du mal à comprendre :
1) je repère et je développe les directives commençant
par un #, et elles seules, et je les intègre au reste qui
n'est pas du tout analysé ;
a écrit dans le message news:Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
Je te crois évidemment, mais j'ai du mal à comprendre :
1) je repère et je développe les directives commençant
par un #, et elles seules, et je les intègre au reste qui
n'est pas du tout analysé ;
<kanze@gabi-soft.fr> a écrit dans le message news:
d6652001.0406030010.1588404c@posting.google.com...
Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
Je te crois évidemment, mais j'ai du mal à comprendre :
1) je repère et je développe les directives commençant
par un #, et elles seules, et je les intègre au reste qui
n'est pas du tout analysé ;
a écrit dans le message news:Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
Je te crois évidemment, mais j'ai du mal à comprendre :
1) je repère et je développe les directives commençant
par un #, et elles seules, et je les intègre au reste qui
n'est pas du tout analysé ;
a écrit dans le message news:Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
Je te crois évidemment, mais j'ai du mal à comprendre :
1) je repère et je développe les directives commençant
par un #, et elles seules, et je les intègre au reste qui
n'est pas du tout analysé ;
2) l'analysateur du compilateur reçoit ce source, et
commence la "tokenisation".
<kanze@gabi-soft.fr> a écrit dans le message news:
d6652001.0406030010.1588404c@posting.google.com...
Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
Je te crois évidemment, mais j'ai du mal à comprendre :
1) je repère et je développe les directives commençant
par un #, et elles seules, et je les intègre au reste qui
n'est pas du tout analysé ;
2) l'analysateur du compilateur reçoit ce source, et
commence la "tokenisation".
a écrit dans le message news:Une phase
préprocesseur séparé est très coûteuse en temps de compilation ; il
exige de faire le même boulot (la découpe en tokens) deux fois.
Je te crois évidemment, mais j'ai du mal à comprendre :
1) je repère et je développe les directives commençant
par un #, et elles seules, et je les intègre au reste qui
n'est pas du tout analysé ;
2) l'analysateur du compilateur reçoit ce source, et
commence la "tokenisation".
Loïc Joly wrote in messageCe qui peut être assez gênant. Quelqu'un sait-il pourquoi la norme
laisse de côté ces points qui pourtant peuvent avoir une influence sur
la sémantique d'un programme ?
Parce que la façon d'invoquer un programme et de lui passer des
paramètres dépend de toute façon étroitement du système où on se trouve.
Sous Unix, par exemple, j'ai typiquement toutes ses informations dans
mes fichiers de make, que j'édite avec vim ou emacs. Sous Windows, avec
Visual Studio, il est plus fréquent de définir un projet avec
l'interface graphique. Comment veux-tu formuler quoique ce soit qui
permet des modèles de spécification aussi différents ?
Loïc Joly <loic.actarus.joly@wanadoo.fr> wrote in message
Ce qui peut être assez gênant. Quelqu'un sait-il pourquoi la norme
laisse de côté ces points qui pourtant peuvent avoir une influence sur
la sémantique d'un programme ?
Parce que la façon d'invoquer un programme et de lui passer des
paramètres dépend de toute façon étroitement du système où on se trouve.
Sous Unix, par exemple, j'ai typiquement toutes ses informations dans
mes fichiers de make, que j'édite avec vim ou emacs. Sous Windows, avec
Visual Studio, il est plus fréquent de définir un projet avec
l'interface graphique. Comment veux-tu formuler quoique ce soit qui
permet des modèles de spécification aussi différents ?
Loïc Joly wrote in messageCe qui peut être assez gênant. Quelqu'un sait-il pourquoi la norme
laisse de côté ces points qui pourtant peuvent avoir une influence sur
la sémantique d'un programme ?
Parce que la façon d'invoquer un programme et de lui passer des
paramètres dépend de toute façon étroitement du système où on se trouve.
Sous Unix, par exemple, j'ai typiquement toutes ses informations dans
mes fichiers de make, que j'édite avec vim ou emacs. Sous Windows, avec
Visual Studio, il est plus fréquent de définir un projet avec
l'interface graphique. Comment veux-tu formuler quoique ce soit qui
permet des modèles de spécification aussi différents ?