Discussion:
Le bytecode OCaml
(trop ancien pour répondre)
Fabien ROPARS
2007-07-09 21:50:23 UTC
Permalink
Comme d'autres avant moi, j'ai cherché à me renseigner sur la manière
dont était implémenté le code-octet intermédiaire d'OCaml, celui qui
peut ensuite être interprété par la machine ZINC.

Malheureusement, il semble bien que personne à l'INRIA n'ait pris le
temps de rédiger l'indispensable document de référence concernant ce
sujet si l'on en croit ce que j'ai pu lire sur les archives du forum
anglophone :

http://groups.google.com/group/fa.caml/browse_thread/thread/a009fce93900a982/999a1417b836009b?lnk=gst&rnum=5#999a1417b836009b



Les seules sources d'informations disponibles sembles être :

- Ce papier écrit par Xavier LEROY, assez ancien (1990) et très généraliste:
http://gallium.inria.fr/~xleroy/publi/ZINC.pdf

- Celui-ci, toujours de Xavier LEROY, mais bien plus récent et plus
détaillé concernant la ZAM2, spécifique à OCaml :
http://pauillac.inria.fr/~xleroy/talks/zam-kazam05.pdf

Ces deux documents très théoriques nous font voyager dans le monde
merveilleux du lambda-calcul et de la notation de de Bruijn, et se
révèlent totalement incompréhensibles pour qui n'est pas familier avec
ces notions (ce qui est mon cas).

- Enfin, ceci, qui aurait pu être la perfection absolue s'il avait été
terminé :
http://pauillac.inria.fr/~lebotlan/docaml_html/french/index.html

Mais les rédacteurs ont apparemment laissé tomber leur beau projet
depuis plusieurs années déjà, la dernière mise à jour datant de 2001 !



Devant ce constat, j'ai décidé de tenter de réaliser moi-même ce travail
en "décryptant" le code source d'OCaml.

Je ne suis pas du tout sûr de pouvoir y arriver, car ce travail n'est
pas du tout facile, d'autant plus que mon C, qui n'a jamais été très bon
(je suis totalement autodidacte) est plutôt rouillé.

Pour le moment, j'ai dégrossi le travail sur les 36 premières
instructions (sur 146 au total).

Voici donc mes questions :

Connaissez-vous d'autres documents susceptibles de m'aider dans cette
tâche ?

Auriez-vous déjà commencé un travail similaire de votre côté ?

Seriez-vous intéressé par une participation à ce projet ?


Voilà, désolé d'avoir été si long.

Fabien.
Olivier FAURAX
2007-07-29 20:56:21 UTC
Permalink
Post by Fabien ROPARS
Pour le moment, j'ai dégrossi le travail sur les 36 premières
instructions (sur 146 au total).
Seriez-vous intéressé par une participation à ce projet ?
Peut être qu'il serait intéressant de place ce travail sur un wiki :
http://www.cocan.org/

Ça permettrait par exemple à des experts passant par là de donner un
coup de main ponctuel.

Bon courage.
Olivier
Fabien ROPARS
2007-07-30 10:20:50 UTC
Permalink
Post by Olivier FAURAX
http://www.cocan.org/
Ça permettrait par exemple à des experts passant par là de donner un
coup de main ponctuel.
Ca me semble être une bonne idée.
Par contre il va falloir d'abord que je traduise en anglais ce que j'ai
fait.
Mais bon ce n'est pas ça le plus dur.
Fabien ROPARS
2007-07-31 17:15:19 UTC
Permalink
Finalement je ne suis plus si sûr que ce soit une bonne idée.
Le site en question est celui de "The OCaml Alliance Network".

Je ne suis pas certain du tout que le péquin de base que je suis soit le
mieux placé pour donner des cours aux autres!

Restons modestes.
Olivier FAURAX
2007-08-15 12:26:45 UTC
Permalink
Post by Fabien ROPARS
Je ne suis pas certain du tout que le péquin de base que je suis soit le
mieux placé pour donner des cours aux autres!
J'avais compris que le projet était plutôt un travail collaboratif et
pas un cours.

Ça, c'est encore un coup à ce que le projet passe aux oubliettes, et que
d'ici 2 ans, quelqu'un repose la même question, et que la doc soit
toujours pas plus avancée.... :/

Pauvre OCaml.
Fabien ROPARS
2007-09-17 21:32:28 UTC
Permalink
Ah, et bien voici un autre document intéressant :

http://cristal.inria.fr/~starynke/starynke_ocamljit_july2004.ps

Il décrit l'implémentation d'une machine virtuelle OCaml avec
compilation JIT. L'auteur y présente au passage le bytecode.

Comme quoi il y a bien certaines personnes qui ont accès aux infos.
Fabien ROPARS
2008-03-04 22:57:55 UTC
Permalink
Fabien ROPARS a écrit :


Bon et bien finalement le document dont je rêvais a été rédigé par les
gars de l'OCaml-Java project : http://ocamljava.x9c.fr/

Dans la rubrique consacrée a Cadmium (un portage en Java de la machine
virtuelle Zinc) on peut y trouver les fichiers PDF suivants :

- http://cadmium.x9c.fr/distrib/caml-instructions.pdf qui décrit la
machine virtuelle et ses instructions

- http://cadmium.x9c.fr/distrib/caml-formats.pdf qui décrit le format
des fichiers des programmes Ocaml compilés en bytecode


Plus la peine donc de se fatiguer à décrypter les lignes de code de
Xavier LEROY.

Loading...