ISA et assembleur

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 ?

  1. As0 et s1
  2. Bt0 et t1
  3. CSur la pile
Afficher la réponse et l'explication

Réponse : C. Sur la pile

Les registres d'arguments étant au nombre de 8 (a0 à a7), à partir du 9e, l'appelant les empile, et l'appelé les lit à une position fixe par rapport au pointeur de pile. Les accès mémoire augmentant, une fonction à très nombreux arguments est un peu plus lente. On réduit souvent le nombre d'arguments, par exemple en passant une grande structure par pointeur.

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

Autres questions sur ISA et assembleur

  1. Dans la convention d'appel RISC-V, que signifie le fait que s0 à s11 soient des registres « sauvegardés par l'appelé » (callee-saved) ?
  2. 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 ?
  3. 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 ?
  4. Quel est l'objectif de l'exécution de « addi sp, sp, -16 » au début d'une fonction RISC-V ?
  5. La convention d'appel standard de RISC-V exige que le pointeur de pile sp soit un multiple de 16 octets à l'entrée d'une fonction. Quelle en est la raison la plus pertinente ?