Traduction d'une boucle faire tant que en assembleur 68K |
Le dictionnaire des variables est correspondant à l'algorithme est (visualiser l'algorithme):
Le choix de l'allocation est arbitraire. Ce choix est généralement guidé par les contraintes imposées par le cahier des charges. La notation entier.b n'est pas normalisée. Elle est appliquée au choix qui est fait ici d'implanté cet algorithme en assembleur 68K. Enfin, le fait qu'en assembleur, il est possible que de faire une opération par instruction, il est nécessaire d'ajouter une variable intermédaire denum.result allouée dans d3. La traduction de l'algorithme donne : début : move.b
#$ff,d2 *
result <- 0 * faire faire: add.b
#$1,d2 * result <- result + 1 move.b d2,d3 * d3
<- result mulu.b
d1,d3 * d3 <- result.denum cmp.b d0,d3 bcs faire * si (result.denum < a) alors cmp.b d3,d0 bcs alors * finsi retour rts * fin du code alors : sub.b
#$1,d2 * result <- result – 1 bra retour |