Cherche exemple

Salut,

Je cherche un exemple de code, pour illustrer un compilateur. enfin bref, j’aurai besoin d’un programme qui serve à quelque chose. mais qui puisse illustrer certains aspects du compilateur sur lequel je travaille.

Il faudrait que le code puisse se faire optimiser, par 4 optimisations assez simple :

  • Propagation de constante : a=1;b=2;c=a+b devient a=1;b=2;c=3
  • CSE : a=x+y;b=x+y devient a+x+y;b=x
  • Elimination des branches du if : if(true){blabla}else{bloblo} devient blabla
  • Dead Code Elimination

Le truc compliqué c’est de trouver du code qui s’optimise. Pour contourner le problème je me sers du préprocesseur C,
Pour mettre des macros, ce qui permet d’introduire des entiers dans mon code, genre un bon #define ITER 300, et propagation de constante optimise le code. Si j’ai un ITER+2 par exemple.

Le second GROS problème, c’est que je dois ensuite prouver le programme, donc faut pas que les propriétés à prouver soit pas trop compliquée, sinon je passe des jours entier à prouver et c’est pas trop le but…
Surtout que c’est vraiment compliqué et je suis pas sur d’avoir assez d’expérience pour prouver ce que je veux…

Pour le moment j’ai codé une file de priorité avec un tableau, et c’est pas trop compliqué à prouvé, mais le code est tellement simple qu’il ne s’optimise pas…

Donc j’ai essayé de faire des files avec priorité et là c’est le merde parce que faut prouver que le tableau reste trié tout le temps et ya de quoi devenir fou…

Mais je pense essayer quand même, de mixer les deux files, de mettre un macro pour choisir avec ou sans priorité, comme çà l’optimisation Élimination des branches du if et dead code élimination feront quelque chose.

Mes encadrants ont déjà codé et prouvé quicksort, mais le programme ne s’optimise pas, et on pas lui foutre des macros…

Donc je voulais savoir si vous avez des exemples de programme ALACON qui s’optimisent un peu sans que le code soit dégueulasse. Mais je trouve pas d’autre maniere que le Macros, et qui soit pas trop compliqué.
Faut penser aux assertions qui vont avec le programme aussi car c’est grâce à ça que je prouve le programme.

Merci.
à votre imagination :slight_smile:

PS : je pourrais ajouter aussi d’autres optims qui marchent sur beaucoup plus de programme, mais c’est assez chiant à rajouter dans le compilo.