MRS (registre de coprocesseur à registre ARM) |
Déplace le registre |
|---|---|
| ARM | |
Syntaxe
|
MRS{cond} Rn, coproc_register MRS{cond} APSR_nzcv, special_register |
Paramètres
| Nom | Description |
|---|---|
| cond | Ce paramètre optionnel permet d'indiquer le code de condition. |
| Rn | Ce paramètre permet d'indiquer le registre de destination. |
| coproc_register | Ce paramètre permet d'indiquer le nom du registre de coprocesseur. |
| special_register | Ce paramètre permet d'indiquer le nom du registre de coprocesseur dans lequel peut être écrit le APSR_nzcv. |
Description
Cette instruction permet de copier un registre ARM vers un registre de coprocesseur.
Remarques
- Transfert du coprocesseur vers le coeur ARM : L'instruction MRS, dans ce contexte, permet de copier le contenu d'un registre de coprocesseur vers un registre général ARM. Cela permet au programme principal d'accéder aux données gérées en parallèle par un coprocesseur, comme des registres système ou de contrôle spécialisés.
- Syntaxe flexible avec deux variantes distinctes : La syntaxe de MRS ici propose deux variantes : l'une pour un transfert standard de registre coprocesseur vers registre ARM (Rn), et une autre pour un cas plus spécifique, celui de la copie de registres spéciaux vers l'APSR_nzcv. Cette dualité répond à des cas d'usage précis dans la gestion de l'état du programme.
- Incohérence dans la description finale : La description indique que l'instruction permet de copier un registre ARM vers un registre de coprocesseur, ce qui contredit la syntaxe affichée (où la source est le registre de coprocesseur, et la destination est Rn). Il s'agit probablement d'une erreur de formulation qu'il faudrait corriger.
- Accès potentiellement privilégié : L'accès à certains registres de coprocesseur ou spéciaux est souvent réservé à des niveaux de privilèges élevés (mode superviseur, système,...). Ainsi, cette instruction peut ne pas être utilisable en mode utilisateur, ce qui impose une gestion attentive du contexte d'exécution.
- Interaction avec l'état conditionnel du programme : L'une des variantes permet de charger spécifiquement le registre APSR_nzcv, contenant les quatre principaux drapeaux de condition (Negative, Zero, Carry, Overflow). Cela permet à un programme de modifier ou restaurer l'état conditionnel après des traitements spécifiques, ce qui est utile dans la gestion de contexte.
- Importance dans la configuration système : L'instruction MRS est couramment utilisée pour interroger des registres système ou de configuration, comme ceux gérés par des coprocesseurs de sécurité, de gestion mémoire (MMU) ou de performances (PMU). Elle permet donc de centraliser des données de contrôle dans le flot principal du programme.
- Dépendance à l'implémentation matérielle : Tous les coproc_register ou special_register ne sont pas disponibles sur tous les microcontrôleurs ARM. Leur disponibilité dépend du profil du cour (Cortex-A, Cortex-R, Cortex-M) et du niveau de l'architecture (ARMv6, ARMv7, etc.). Il faut donc se référer à la documentation spécifique du processeur utilisé.
- Exemple typique : lecture d'un registre de performances : Un usage courant de MRS est la lecture d'un compteur de cycles ou d'un registre de performance via un coprocesseur. Cela permet de mesurer la durée d'un traitement, sans avoir à solliciter des périphériques externes comme des minuteries, améliorant ainsi la précision et la performance de l'analyse.
Dernière mise à jour : Dimanche, le 12 novembre 2017