Qu'est-ce que Pointeur de pile ?

Registre pointant sur l'adresse du sommet actuel de la pile. En RISC-V, c'est sp (x2). Dans de nombreuses ISA, la pile croît vers les adresses basses.

Nom japonais: スタックポインタ

« Pointeur de pile » apparaît dans 5 questions d'entraînement réparties sur 4 thèmes, dont ISA et assembleur, CPU et architecture, Éditeurs de liens, chargeurs et exécutables.

Domaine: ISA et assembleur

S'entraîner : questions sur Pointeur de pile

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 ?

  1. AParce que l'OS ne démarre pas si la capacité de la pile n'est pas un multiple de 16 octets
  2. BParce que le numéro de la fonction est enregistré dans les 4 bits de poids faible de sp
  3. CPour que des données de grande taille, jusqu'à 16 octets, placées sur la pile puissent être lues et écrites efficacement sans franchir de frontière
Afficher la réponse et l'explication

Réponse : C. Pour que des données de grande taille, jusqu'à 16 octets, placées sur la pile puissent être lues et écrites efficacement sans franchir de frontière

Une donnée placée à une adresse multiple de sa taille (alignée) peut être lue ou écrite en un seul accès sans franchir de frontière. En maintenant sp toujours multiple de 16, l'alignement est préservé même pour un double de 8 octets ou un long double de 16 octets placé sur la pile. Les fonctions réservent donc des cadres dont la taille est un multiple de 16, et utilisent « addi sp, sp, -16 » même pour un seul registre à sauvegarder.

« Pointeur de pile » dans les explications

Questions mentionnant « Pointeur de pile » (5)

  1. 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 ?
  2. Quelle zone est généralement utilisée pour sauvegarder temporairement l'adresse de retour, entre autres, lors de l'appel d'un sous-programme (fonction) ?
  3. 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 ?
  4. Où est placée pendant l'exécution une variable locale (variable automatique) sans static déclarée dans une fonction C ?
  5. Lors d’un changement de contexte, que faut-il sauvegarder pour le processus quitté ?

Comparatifs incluant ce terme

Termes associés

Convention d'appel Adresse de retour Débordement (spill) Cadre de pile (stack frame) Changement de contexte Table des pages ABI (interface binaire d'application) Adressage relatif au PC Architecture load-store Assembleur

Retour au glossaire