En s'inspirant de la mise en pile, on peut remplacer chaque occurrence d'un
temporaire contraint par un temporaire éphémère. Plus précisément, pour
chaque instruction instr de type Oper
:
-
on remplace chaque occurrence contrainte i d'un temporaire t dans instr
par un temporaire éphémère ti;
- on mémorise les contraintes portant sur ti dans instr;
- si ti est utilisé en lecture, on ajoute une instruction
move ti, t avant instr;
- si ti est utilisé en écriture, on ajoute une instruction
move t, ti après instr;
L'instruction move d, s est une abréviation pour
Move ("move_^d0,_^s0", d, s)
.
En fait, on pourrait ne considérer que les temporaires qui apparaissent au
moins une fois dans le code avec des contraintes incompatibles, ce qui en
pratique sera assez peu fréquent.