RFE |
Retourne d'une exception |
|---|---|
| ARM | |
Syntaxe
| RFE{addr_mode}{cond} Rn{!} |
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 | |
| Rn | Ce paramètre permet d'indiquer le registre de base | |
| ! | Ce paramètre optionnel permet d'indiquer un suffixe indiquant que l'adresse final est inclus dans le déplacement écrit du paramètre Rn. | |
Description
Cette instruction permet de retourner d'une exception.
Remarques
- Instruction dédiée à la gestion des exceptions : RFE est spécifiquement utilisée pour reprendre l'exécution normale après le traitement d'une exception (interruption, saut logiciel, etc.). Elle est essentielle dans le cadre d'un système d'exploitation embarqué ou tout programme gérant des interruptions matérielles ou logicielles.
- Restauration automatique de l'état du processeur : Cette instruction ne se contente pas de changer le compteur de programme. Elle restaure automatiquement l'état du processeur, notamment les registres de statut du programme (CPSR/SPSR), permettant de revenir exactement dans l'environnement d'exécution précédant l'exception.
- S'intègre avec différents modes de pile via addr_mode : Le paramètre addr_mode permet d'adapter le comportement de la lecture mémoire selon le mode de pile utilisé (piles ascendantes ou descendantes, pré ou post-décrément/incrément). Cela permet à RFE de s'intégrer dans divers schémas de gestion mémoire typiques dans les systèmes ARM.
- Peut fonctionner avec ou sans mise à jour du registre base : Grâce à la présence optionnelle du suffixe !, l'instruction peut soit laisser intact le registre de base (Rn), soit le mettre à jour automatiquement après le retour d'exception. Cela permet une plus grande souplesse dans la gestion de la pile ou du contexte.
- Souvent utilisée en paire avec une instruction SRS ou STM : Dans les routines d'interruption, RFE est habituellement précédée par une instruction comme SRS (Store Return State) ou STM (Store Multiple) pour sauvegarder l'état du programme interrompu. Elle complète ainsi un mécanisme de sauvegarde/restauration d'état robuste.
- Non disponible en mode Thumb : L'instruction RFE est spécifique au ensemble d'instructions ARM et n'est pas disponible en mode Thumb. Cela signifie que son utilisation suppose que le code d'exception est exécuté en mode ARM, ou que des transitions doivent être gérées explicitement si l'application alterne entre modes.
- Utilisation potentiellement dangereuse si mal configurée : Une mauvaise utilisation de RFE, par exemple avec un registre Rn pointant vers une mauvaise adresse mémoire ou un mode d'adressage inadapté, peut conduire à des comportements imprévus, comme un saut vers une adresse invalide ou un état processeur corrompu. Elle requiert donc une très grande rigueur.
- Utile dans les systèmes temps réel et embarqués : Dans un environnement temps réel ou embarqué, le retour rapide d'une exception tout en restaurant l'état avec exactitude est crucial pour garantir la continuité du système. RFE offre ce retour rapide et sécurisé, en minimisant les cycles processeur nécessaires pour retrouver un état stable.
Dernière mise à jour : Dimanche, le 12 novembre 2017