ISA et assembleur

Dans la convention d'appel standard de RISC-V, quels registres servent à transmettre les arguments entiers et la valeur de retour ?

  1. AArguments dans s0 à s7, valeur de retour dans ra
  2. BArguments dans a0 à a7, valeur de retour dans a0 (et a1)
  3. CTous les arguments sur la pile, valeur de retour dans sp
Afficher la réponse et l'explication

Réponse : B. Arguments dans a0 à a7, valeur de retour dans a0 (et a1)

Dans la convention d'appel standard de RISC-V, jusqu'à 8 arguments entiers sont passés dans a0 à a7 (x10 à x17), et la valeur de retour est renvoyée dans a0, ou dans a0 et a1 pour une valeur de 64 bits par exemple. Le passage par registres, plus rapides que la mémoire, réduit le coût des appels de fonction. Les arguments au-delà de 8 sont placés sur la pile. Les arguments flottants utilisent fa0 à fa7.

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

Autres questions sur ISA et assembleur

  1. 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 ?
  2. Dans la convention d'appel RISC-V, que signifie le fait que s0 à s11 soient des registres « sauvegardés par l'appelé » (callee-saved) ?
  3. Dans la convention d'appel RISC-V, t0 à t6 sont des registres « sauvegardés par l'appelant » (caller-saved). Si une fonction veut continuer à utiliser une valeur placée dans t0 après avoir appelé une autre fonction, quelle est la démarche correcte ?
  4. Dans une fonction qui n'appelle aucune autre fonction (fonction feuille), il n'est souvent pas nécessaire de sauvegarder ra sur la pile. Quelle en est la raison ?
  5. Quel est l'objectif de l'exécution de « addi sp, sp, -16 » au début d'une fonction RISC-V ?