"la prochaine exécution n'est pas forcement celle qui vient juste après en mémoire."
correction: je voulais dire la prochaine instruction.
pour l'implementation des mov conditionel: ils se font si l'etat du flag cible est 1 ou 0.
sachant qu'avec le complément à deux, la valeur -1 met tous les bits sur 1, on peut faire
x := (x AND DEC(flag)) OR (new_value AND NEG(flag))
ainsi pas besoin de prédiction, de correction et compagnie (mais c'est pas forcement plus efficace).
par example, CMOVe (if equal) se fait si ZF = 1
si ZF = 1
x := (x AND DEC(1)) OR (new_value AND NEG(1))
x := (x AND 0) OR (new_value AND -1)
x := 0 OR new_value
X := new_value
si ZF = 0
x := (x AND DEC(0)) OR (new_value AND NEG(0))
x := (x AND -1) OR (new_value AND 0)
x := x OR 0
x := x