Veuillez consulter cette page à partir de l'interface principale.
CALL : Saute dans une sous-routine et sauve l'adresse de retour
Cette instruction est l'une des seules qui écrit dans deux registres en même temps :
- La source (un registre ou un immédiat) est écrite dans PC
- L'adresse de la prochaine instruction (PC+2 ou PC+4) est écrite dans le registre destination.
Cela permet effectivement de sauter dans une sous-routine en sauvant l'adresse de retour dans un
registre, que l'on peut ensuite recopier dans PC pour retourner juste après l'instruction CALL initiale.
.profile auto
; .... programme principal :
call ma_fonction R5
; ....
HALT
;...
. ma_fonction
; fonction : adresse de retour dans R5
; fait quelque chose ici
mov R5 PC ; return
Attention : utiliser le registre PC comme source ou destination n'a pas de sens :
-
CALL PC R1 : cela écrit l'adresse de l'instruction courante
dans le PC, ce qui entraine une boucle infinie et bloque le processeur !
-
CALL R1 PC écrit R1 et PC+2 dans PC,
quelle valeur devrait être choisie ?