|
Postscript, PDF | Didier Rémy | Polytechnique, INRIA |
|
année 2000 |
int fact (int x) { if (x == 0) return 1; else return x * fact (x-1); }
Code Pentium :fact: pushl %ebp movl %esp,%ebp cmpl $0,8(%ebp) jne .L2 movl $1,%eax jmp .L1 .align 4 jmp .L3 .align 4 .L2: movl 8(%ebp),%eax decl %eaxpushl %eax call fact addl $4,%esp movl %eax,%eax movl %eax,%edx imull 8(%ebp),%edx movl %edx,%eax jmp .L1 .align 4 .L3: .L1: leave ret Code optimiséfact: pushl %ebp movl %esp,%ebp pushl %ebx movl 8(%ebp),%ebx testl %ebx,%ebx je .L2 leal -1(%ebx),%eax pushl %eax call fact imull %ebx,%eax jmp .L4 .align 4 .L2: movl $1,%eax .L4: movl -4(%ebp),%ebx leave ret
|
|
· | Comprendre les principes |
· | Appréhender la pratique. |
· | Apprendre quelques techniques. |
|
· | Langages formels, automates finis et analyse lexicale. |
· | Grammaires context-free et analyse syntaxique. |
· | Architecture des machines, code machine, assembleur. |
· | Sémantiques opérationnelles, interpréteurs. |
· | Code intermédiaire. Portée des variables. Environnements. |
· | Optimisation de code. Durée de vie, allocation de registres. |
· | Sélection d'instructions, génération de code. |
· | Analyses statiques des programmes. |
|
· | Langage de programmation: Ocaml |
· | Simulateur de la machine MIPS R2000:
Spim (développé à l'université de Wisconsin, USA) |
|
· | Écrire un petit compilateur complet pour un petit langage, |
· | Approfondir un bout de la chaîne de compilation. |
|
· | Ajout d'un gestionnaire mémoire; |
· | Ré-implémentation de l'allocation de registres; |
· | Extensions du langage source; |
· | Compilation vers les processeurs x86. |
|
|
|
This document was translated from LATEX by HEVEA.