ISA et assembleur
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 ?
- AParce que l'OS ne démarre pas si la capacité de la pile n'est pas un multiple de 16 octets
- BParce que le numéro de la fonction est enregistré dans les 4 bits de poids faible de sp
- 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.