Qu'est-ce que Argument ?

Valeur transmise lors de l'appel d'une fonction ou d'une procédure. La variable qui reçoit la valeur dans la déclaration s'appelle le paramètre formel, et la valeur transmise lors de l'appel l'argument effectif. Les arguments peuvent être passés par valeur, ce qui copie la valeur, ou par référence, ce qui permet à la fonction appelée de désigner la variable ou le tableau eux-mêmes.

Nom japonais: 引数

« Argument » apparaît dans 26 questions d'entraînement réparties sur 9 thèmes, dont Éditeurs de liens, chargeurs et exécutables, Bases de la programmation (trace de pseudo-code), Compilateurs.

Domaine: Bases de la programmation (trace de pseudo-code)

S'entraîner : questions sur Argument

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 sur RV32 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.

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 struct par pointeur.

« Argument » dans les explications

Questions mentionnant « Argument » (26)

  1. Dans la convention d'appel standard de RISC-V, quels registres servent à transmettre les arguments entiers et la valeur de retour ?
  2. 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 ?
  3. Quel est le principal objectif de la décoration de noms (mangling), par laquelle le compilateur C++ ajoute au nom d'une fonction des informations comme le type de ses arguments pour former le nom de symbole ?
  4. Comme ci-dessus, on exécute le script s.sh avec des arguments. Quelle est la sortie ?
  5. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Quelle est la valeur de retour de la fonction f suivante appelée sous la forme f(9087) ?
  6. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Quelle est la valeur de retour de la fonction toBin suivante appelée sous la forme toBin(12) ?
  7. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Lorsque la fonction pow suivante est appelée sous la forme pow(2, 10), combien de fois pow est-elle appelée, premier appel compris ?
  8. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Le programme suivant place dans lo l'indice de la première valeur supérieure ou égale à x dans le tableau d'entiers data, trié par ordre croissant (les indices commencent à 1). x n'est pas supérieur au dernier élément de data. Que faut-il écrire à la place de 【a】 dans le programme ?
  9. Quel est le principal objectif de la définition d'une convention d'appel (calling convention) ?
  10. Quel exemple d'erreur détectée par l'analyse sémantique d'un compilateur est le plus approprié ?
  11. Quelle combinaison d'avantage et d'inconvénient de l'expansion en ligne (inlining) des fonctions est correcte ?
  12. Quel effet produit l'optimisation des appels terminaux appliquée au dernier appel récursif de la fonction ci-dessus ?
  13. Dans un langage à typage statique, quel est le principal avantage de la vérification des types par le compilateur ?
  14. Que fait le chargeur de l'OS au démarrage d'un programme (execve sous Linux notamment) ?
  15. Quelle affirmation concernant l'adresse où l'OS commence l'exécution d'un programme C (point d'entrée) est correcte ?

Termes associés

Variable Valeur de retour Pile (stack) Convention d'appel Pointeur Récursion (récursivité) Tableau struct (structure C) Éditeur de liens (linker) Point d'entrée

Retour au glossaire