ISA et assembleur

Quel est le fonctionnement correct de l'instruction RISC-V « jal ra, func » ?

  1. AEnregistrer l'adresse de l'instruction suivante dans ra, puis sauter à func
  2. BPlacer seulement l'adresse de func dans ra, sans sauter
  3. CRevenir à l'adresse contenue dans ra
Afficher la réponse et l'explication

Réponse : A. Enregistrer l'adresse de l'instruction suivante dans ra, puis sauter à func

jal (jump and link) écrit l'adresse de l'instruction qui la suit (PC+4) dans le registre spécifié (lien), puis saute à l'adresse visée. La convention d'appel plaçant l'adresse de retour dans ra (x1), un appel de fonction s'écrit « jal ra, func », ou « call func » en pseudo-instruction. La fonction appelée revient à l'adresse contenue dans ra à la fin de son traitement. Avec x0 comme destination, c'est un simple saut.

S'entraîner sur ce thème Retour au thème

Autres questions sur ISA et assembleur

  1. En quelle instruction la pseudo-instruction RISC-V « ret » est-elle réellement exécutée ?
  2. Quel est le principal objectif de la définition d'une convention d'appel (calling convention) ?
  3. Dans la convention d'appel standard de RISC-V, quels registres servent à transmettre les arguments entiers et la valeur de retour ?
  4. Dans la convention d'appel standard de RISC-V, lors de l'appel d'une fonction à 10 arguments entiers, où sont transmis les 9e et 10e arguments ?
  5. Dans la convention d'appel RISC-V, que signifie le fait que s0 à s11 soient des registres « sauvegardés par l'appelé » (callee-saved) ?