Le projets en compilation

En majeure 2 on vous demande un « projet ». Les enseignants de chaque cours proposent des sujets de projet. Voici d'abord comment je conçois un projet, puis les projets de compilation.

Choisir son projet.


Comment ça marche

Les projets typiques sont des modifications du compilateur zyva.

Le projet est réussi quand le programme fonctionne et que vous pouvez m'en convaincre. Au mininimum, le programme doit passer les tests de zyva (fournis avec les sources), ainsi que de nouveaux tests par vous conçus si il y a lieu.
Un slogan à retenir : « ça doit marcher ! »
Le projet est réussi quand vous pouvez présenter lors de l'oral une vision synthétique de vos modifications, ainsi que les principales difficultés rencontrées et vos méthodes pour les résoudre.
Un slogan à retenir : « je sais pourquoi ça marche ! »
Le projet est votre oeuvre, mais vous n'êtes pas tout seul. Vous pouvez me contacter (ou François Pottier) à tout moment, de visu lors des TD par exemple ou par courier electronique. Dans ce dernier cas, vos questions (et mes réponses) sont mises à disposition de tout le monde sur la page de suivi.

Enfin, deux details. Les projets se font à priori en monôme, sauf le projet B qui lui s'adresse à un binôme. Il est possible de proposer son propre sujet de projet, en ce qui me concerne, il doit évidemment avoir un rapport avec la compilation et représenter un travail équivalent aux projets que je propose.

A  Recibler zyva

Il s'agit de produire un compilateur de Pseudo-Pascal vers une machine réelle (et non plus vers un simulateur).

Vu l'état du monde, cette machine réelle sera probablement un PC. On apprend facilement le peu d'assembleur x86/IA32 nécessaire en cherchant un peu sur le web (un point de départ http://linuxassembly.org/howto/Assembly-HOWTO.html, les annexes de ce livre semblent remplies d'informations pertinentes). Intel fournit pas mal de manuels divers sur son architecture IA32. La lecture en diagonale de deux d'entre eux ``A-32 Intel® Architecture Software Developer's Manual, Volume 1: Basic Architecture'' et ``IA-32 Intel® Architecture Optimization Reference Manual'' aidera pour comprendre les idiosyncrasies de cette architecture et selectionner les instructions (il y a une section sur ce thème à la page 2-67 du deuxième manuel). Toutefois le matériel présenté est à mon avis un peu abondant...

Par ailleurs on peut confier le codage des primitives (de zyva) l'assemblage et l'édition de lien au compilateur C. En effet, on peut donner un fichier écrit en assembleur en argument à gcc. Pour se faire une idée du style accepté, compiler du C avec l'option -S. Bref, on pourra se concentrer sur la vraie question : générer du code assembleur x86, avec ses opération « deux-adresses », ses registres à géométrie variable etc.

B  Zyva en bytecode

Concevoir un système complet en bytecode. Ce projet se divise naturellement en deux parties : Le bytecode doit être un vrai code machine (c'est à dire une suite d'entiers). Dès lors il est logique de coder la machine virtuelle en C, mais au fond ça n'a rien d'obligatoire.

Ce projet est idéal pour un binôme, il faut dans une phase initiale bien collaborer sur la définition du byte code.

Une bonne référence sur le bytecode est le rapport Zinc.

C  Zyva par variable

En deux temps : Ce projet demande une bonne compréhension de la sémantique des langages de programmation en général, ou la forte envie d'acquerir cette bonne compréhension.


This document was translated from LATEX by HEVEA.