ISA et assembleur
Le code ci-dessus est le début (prologue) d'une fonction. Que fait cette partie ?
addi sp, sp, -16
sw ra, 12(sp)
sw s0, 8(sp)
- AElle réserve une zone sur la pile et y sauvegarde l'adresse de retour (ra) et s0, sauvegardé par l'appelé
- BElle lit sur la pile les arguments ra et s0 de la fonction
- CElle libère la pile pour revenir de la fonction
Afficher la réponse et l'explication
Réponse : A. Elle réserve une zone sur la pile et y sauvegarde l'adresse de retour (ra) et s0, sauvegardé par l'appelé
La 1re ligne diminue sp de 16 pour réserver le cadre de pile, la 2e y écrit l'adresse de retour ra, et la 3e s0, sauvegardé par l'appelé. Cette fonction appelant d'autres fonctions, elle doit protéger ra, et utilisant s0, elle doit préserver sa valeur d'origine. L'épilogue en fin de fonction restaure dans l'ordre inverse : « lw s0, 8(sp) », « lw ra, 12(sp) », « addi sp, sp, 16 », « ret ».