OVH Cloud OVH Cloud

Compilateur et implémentation

55 réponses
Avatar
azoulayi
Bonjour tout le monde,

Je suis à la recherche de code source d'un compilateur écrit en lex
et bison.
je voudrai avoir de la documentation sur la partie d'adressage
mémoire, sur la maniere d'implémenter l'allocation de mémoire (stack,
heap) et les structures de blocs dépendament de la machine

vous auriez des adresses de site concernant cela?

merci bien

10 réponses

2 3 4 5 6
Avatar
Vincent Lefevre
Dans l'article ,
Gabriel Dos Reis écrit:

Vincent Lefevre <vincent+ writes:

| Si tu veux un autre exemple: il y a quelques années, l'installation
| de base de Solaris ne comprenait pas de compilo C

c'est toujours le cas, non ? Ils ont changé de politique ?


Ça ne m'étonnerait pas que ce soit toujours le cas...

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Vincent Lefevre
Dans l'article ,
Emmanuel Delahaye écrit:

In 'fr.comp.lang.c', Vincent Lefevre <vincent+ wrote:

Dans l'article ,
Erwan David écrit:

Marc Boyer écrivait :

Sur Linux, malloc/free sont dans libc, et pas dans GCC.
J'ai donc tendance à considérer que c'est dans l'OS plus que
dans le compilateur. Ou plante mon raisonnement ?


Que libc c'est la lib du C, c'est pas une partie de l'OS.


Tout dépend de comment on définit un OS: si c'est juste le noyau
ou le noyau + d'autres choses.



Je ne vois pas pourquoi l'OS serait lié à un langage particulier.


Je ne vois pas pourquoi la libc serait lié à un langage particulier
(et au cas où tu ne le saurais pas, libc != bibliothèque standard
du C, et on n'a d'ailleurs même pas d'inclusion, que ce soit dans
un sens ou dans l'autre).

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA




Avatar
Vincent Lefevre
Dans l'article <bg3foo$bnf$,
Marc Boyer écrit:

Et pour en revenir à la question initiale: malloc/free, OS ou pas
OS ?


Tout dépend à quel niveau tu te places. Au niveau du langage C, c'est
un appel de fonction. Au niveau de la programmation sous Linux (par
exemple) avec gcc, c'est un appel à une fonction d'une bibliothèque
qui fait partie de l'OS. Mais il n'en est pas forcément de même sur
toutes les plateformes.

L'OS se contente-il d'offrir un/plusieurs segments de taille
variable (brk/sbrk) ou a-t-il en charge une gestion plus fine
(malloc/free).


L'OS fournit à la fois des appels système et des bibliothèques...

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', Vincent Lefevre <vincent+ wrote:

Je ne vois pas pourquoi l'OS serait lié à un langage particulier.


Je ne vois pas pourquoi la libc serait lié à un langage particulier


Le 'c' de libc?

(et au cas où tu ne le saurais pas, libc != bibliothèque standard
du C, et on n'a d'ailleurs même pas d'inclusion, que ce soit dans
un sens ou dans l'autre).


Si les choses sont claires comme ça, il n'y a aucun problème!

--
-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/


Avatar
Vincent Lefevre
Dans l'article ,
Gabriel Dos Reis écrit:

Vincent Lefevre <vincent+ writes:
| Donc la différenciation automatique / dynamique est propre à toi.

Non. Pour t'en apercevoir, il aurait fallu que tu lises mon message.


Je l'ai lu, et tu n'as rien dit de spécial.

La mémoire dynamique, c'est ce que tu as avec malloc()/calloc() et
consort. Mais pas alloca.


Encore une fois, d'où sors-tu cette définition de "dynamique" (source
officielle)?

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Vincent Lefevre
Dans l'article ,
Emmanuel Delahaye écrit:

In 'fr.comp.lang.c', Vincent Lefevre <vincent+ wrote:

Je ne vois pas pourquoi l'OS serait lié à un langage particulier.


Je ne vois pas pourquoi la libc serait lié à un langage particulier


Le 'c' de libc?


Cela indique seulement un lien, mais la bibliothèque est utilisable
par d'autres langages. Tout comme avec GCC, on peut compiler autre
chose que du C.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA



Avatar
Gabriel Dos Reis
Emmanuel Delahaye writes:
| > (et au cas où tu ne le saurais pas, libc != bibliothèque standard
| > du C, et on n'a d'ailleurs même pas d'inclusion, que ce soit dans
| > un sens ou dans l'autre).
|
| Si les choses sont claires comme ça, il n'y a aucun problème!

sauf qu'elles ne le sont pas, d'où les problèmes :-)

-- Gaby
Avatar
Vincent Lefevre
Dans l'article ,
Gabriel Dos Reis écrit:

Sauf que dans le cas de GCC, c'est clair : GCC ne compile pas. GCC ! > gcc. GCC est une collection de compilateurs (GNU Compiler Collection).


Ah, d'accord. Alors autre exemple: utiliser gcc pour assembler
(même si au final, il appelle un autre programme, tout ceci est
transparent à l'utilisateur). Je ne sais pas si de même, on peut
compiler du Fortran en appelant gcc (pas essayé, mais le man
mentionne les fichiers source Fortran et la possibilité de
fournir d'autres langages que le C).

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Gabriel Dos Reis
Vincent Lefevre <vincent+ writes:

| transparent à l'utilisateur). Je ne sais pas si de même, on peut
| compiler du Fortran en appelant gcc (pas essayé, mais le man

si tu as le bon suffixe, gcc (c'est en réalité un driver) va appeler
f77 avec les bonnes options.

| mentionne les fichiers source Fortran et la possibilité de
| fournir d'autres langages que le C).

là tu décris un driver générique. Le front end C s'appelle cc1 (celui
de C++ s'appelle cc1plus) -- ne me demande pas comment ils ont trouvé
les noms ; peut-être la prochaine fois ils prendront le code md5 du
compilateur.

-- Gaby
Avatar
Vincent Lefevre
Dans l'article ,
Gabriel Dos Reis écrit:

Vincent Lefevre <vincent+ writes:

| Dans l'article ,
| Gabriel Dos Reis écrit:
|
| > Vincent Lefevre <vincent+ writes:
| > | Donc la différenciation automatique / dynamique est propre à toi.
| >
| > Non. Pour t'en apercevoir, il aurait fallu que tu lises mon message.
|
| Je l'ai lu, et tu n'as rien dit de spécial.

Donc, tu ne l'as pas lu.


Je te cite ton message (ce que tu as ajouté):

------------------------------------------------------------------------
Puisque alloca n'est pas standard, tu ne veux pas une définition
officielle qui s'applique à alloca, n'est-il pas ?

Autrement tu peux jeter un coup d'oeil à

6.2.4 Storage durations of objects
------------------------------------------------------------------------

Pas de différenciation automatique / dynamique...

Elle est utilisée dans la communauté C (et C++) et la communauté de
l'implémenation C. (Je vois également que la définition officielle de
C++ l'utilise. 3.7.3).


Peux-tu faire une citation?

Et si tu avais fait ton devoir de maison -- par exemple en demandant à
Google -- tu aurais eu des réponses.
Le premier lien que j'ai me donne

http://www.accu.org/bookreviews/public/reviews/c/c000314.htm

De manière assez surprenante, je m'aperçois que la documentation de la
glibc (avec laquelle je suis souvent en désaccord, pour d'autres
raisons) a la même position que moi -- elle décrit alloca comme
faisant de « automatic storage with variable size ».


Cela ne contredit en rien ma position, qui est que "dynamic"
regroupe les termes "automatic" et "allocated" du C (la norme
C n'utilisant pas le terme "dynamic" pour le stockage).

--
Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

2 3 4 5 6