SRS |
Entrepose l'état de retour |
|---|---|
| ARM | |
Syntaxe
| SRS{addr_mode}{cond} sp{!}, #modenum |
| SRS{addr_mode}{cond} #modenum{!} |
Paramètres
| Nom | Description | |
|---|---|---|
| addr_mode | Ce paramètre optionnel permet d'indiquer le mode d'adressage mémoire à utiliser : | |
| Constante | Description | |
| IA | Cette constante permet d'indiquer une incrémentation d'adresse après chaque transfère. | |
| IB | Cette constante permet d'indiquer une incrémentation d'adresse avant chaque transfère (ARM seulement). | |
| DA | Cette constante permet d'indiquer une décrémentation d'adresse après chaque transfère (ARM seulement). | |
| DB | Cette constante permet d'indiquer une décrémentation d'adresse avant chaque transfère (pile descendante complète). | |
| cond | Ce paramètre optionnel permet d'indiquer le code de condition. | |
| ! | Ce paramètre optionnel permet d'indiquer un suffixe indiquant que l'adresse est inclus dans le déplacement écrit dans le SP du mode spécifié par le paramètre modenum. | |
| #modenum | Ce paramètre permet d'indiquer le nombre de mode dont le SP banqué est utilisé comme registre de base. | |
Description
Cette instruction permet d'entreposer l'état de retour dans une pile.
Remarques
- Instruction spécifique aux exceptions et interruptions : L'instruction SRS est principalement utilisée dans les contextes d'interruption ou d'exception, où il est nécessaire de sauvegarder rapidement l'état du programme interrompu. Elle simplifie l'entreposage automatique du registre de lien (LR) et du registre d'état de programme sauvegardé (SPSR) dans une pile.
- Liée au mode de processeur : L'instruction fait appel au paramètre #modenum, qui fait référence à un mode processeur spécifique (comme IRQ, FIQ, SVC,...). Elle utilise le SP banqué de ce mode, ce qui permet d'éviter les conflits avec le pointeur de pile général du mode utilisateur ou système.
- Adressage mémoire configurable : Le champ addr_mode permet d'ajuster le comportement d'adressage mémoire lors d'entreposage dans la pile. Cela permet une grande souplesse : pile ascendante ou descendante, complète ou vide, en choisissant IA, IB, DA ou DB. Cela facilite l'intégration dans différents schémas de gestion de pile.
- Le suffixe ! a un effet critique : L'ajout du suffixe ! (point d'exclamation) indique que le pointeur de pile utilisé est mis à jour après le transfert. Cela signifie que l'adresse modifiée est immédiatement réécrite dans le SP du mode cible, ce qui est essentiel pour une pile cohérente lors de routines d'interruption imbriquées.
- Nécessite un mode privilégié : L'instruction SRS n'est accessible que depuis des modes privilégiés, tels que Supervisor (SVC), FIQ, IRQ ou Abort. Elle n'est pas disponible en mode utilisateur. Cette restriction garantit que seuls les gestionnaires du système peuvent l'utiliser pour manipuler les piles de retour.
- Remplace plusieurs instructions manuelles : Sans SRS, il faudrait plusieurs instructions pour stocker manuellement LR et SPSR dans la pile banquée du mode d'exception. L'utilisation de SRS simplifie et accélère ce processus, tout en réduisant le risque d'erreur et en améliorant la lisibilité du code.
- Souvent couplée avec RFE : SRS est fréquemment utilisée en tandem avec l'instruction RFE (Return From Exception). Alors que SRS entrepose l'état de retour dans la pile, RFE permet de le restaurer rapidement. Ensemble, elles forment un mécanisme de sauvegarde/restauration efficace pour les interruptions.
- Peu utilisée en code applicatif classique : En raison de sa nature très spécialisée, SRS est rarement rencontrée dans le code applicatif standard. Elle est principalement réservée à l'écriture de systèmes d'exploitation, de chargeur d'amorçage ou de firmware bas niveau, où la gestion fine du contexte processeur est cruciale.
Dernière mise à jour : Dimanche, le 12 novembre 2017