jeudi 11 septembre 2014

Les sous-routines [fr]

Enfin un nouvel article aujourd'hui ! Excusez-moi, je suis assez occupé ces temps-ci !

Toujours dans la continuité des labels, nous allons étudier les sous-routines maintenant.

Vous avez tous ou presque certainement entendu parlé des GOTO et autres GOSUB dans le langage Basic. Et bien, ils ont un équivalent en assembleur 68k.

Les GOTO sont des bra (pour branch) ou jmp (pour jump) et les GOSUB des bsr (branch subroutine) ou jsr (jump subroutine).

Alors déjà commençons par les bra qui ne sont en fait que des sauts à d'autres endroits de votre programmes, tout simplement ! Avec cet exemple, vous voyez que notre bra va sauter le deuxième move pour aller donc exécuter le troisième ! C'est tout con :

En traçant pas à pas, le résultat dans d0 sera 2 !

Notez que les labels de saut comme celui-ci se précède d'un point (.) pour mieux les reconnaitre et les différencier des autres d'un simple coup d'oeil.

Bien sûr, vous pouvez aussi utiliser les bra pour aller plus en avant, ou alors après comme dans notre exemple. Sachez enfin que les jmp sont identiques dans l'utilisation, sauf qu'ils ont une petite particularité : nous y reviendrons plus tard, certaines choses doivent être expliquées avant...

Maintenant passons aux bsr : identique aux bra, enfin presque : dès que l'instruction rts est rencontrée après le saut, et bien l'exécution du programme revient après le bsr en question.

Un petit exemple clair pour illustrer tout cela :

En exécutant le bsr, le programme va atterrir à _MaSousRoutine et mettre successivement 4 et 5 dans d0. Ensuite, il rencontre le rts et donc revient au move.l #$00000003,d0 !

Là encore, les jsr sont identiques à nos bsr, avec une subtilité...

Nouveau cours très simple, j'espère que vous avez apprécié !!