MRC |
Déplace le registre au coprocesseur |
| ARM |
Syntaxe
|
MRC{cond} coproc, #opcode1, Rt, CRn, CRm{, #opcode2}
|
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
| coproc |
Ce paramètre permet d'indiquer le nom de l'instruction de coprocesseur. |
| #opcode1 |
Ce paramètre permet d'indiquer le opcode de coprocesseur en 3 bits. |
| #opcode2 |
Ce paramètre optionnel permet d'indiquer le opcode de coprocesseur en 3 bits. |
| Rt |
Ce paramètre permet d'indiquer le premier registre source ARM. Le registre ne doit pas être PC. |
| CRn |
Ce paramètre permet d'indiquer le premier opérande de registre de coprocesseur. |
| CRm |
Ce paramètre permet d'indiquer le deuxième opérande de registre de coprocesseur. |
Description
Cette instruction permet de copier les registres ARM vers le coprocesseur pour une architecture ARMv6 et les variants E d'une architecture ARMv5T.
Remarques
- Sens de transfert : du coprocesseur vers ARM : Contrairement à ce que son nom peut laisser entendre, l'instruction MRC permet de lire une donnée à partir
d'un coprocesseur vers un registre ARM. Elle complète l'instruction MCR, qui effectue le transfert inverse (de ARM vers le coprocesseur).
- Interaction avec les coprocesseurs spécialisés : Cette instruction est cruciale pour interagir avec des coprocesseurs tels que le système de contrôle
(CP15), ou d'autres unités comme un coprocesseur de sécurité ou de calcul flottant. Elle permet de lire des registres système ou de configuration internes au matériel.
- Accès restreint selon le mode processeur : Dans certains cas, l'utilisation de MRC est réservée aux niveaux de privilège élevés, comme le mode
superviseur. Des accès non autorisés peuvent entraîner des exceptions. Cela limite l'instruction aux tâches de bas niveau ou au système d'exploitation.
- Codage précis avec plusieurs opcodes : La syntaxe de MRC est complexe et permet un adressage fin grâce aux champs opcode1, opcode2, CRn, CRm, sélectionnant
précisément quel registre du coprocesseur doit être lu. Cela offre une grande flexibilité mais exige une bonne connaissance de la documentation du coprocesseur.
- Restriction sur l'utilisation du registre PC : Le registre ARM Rt ne peut pas être le registre PC, ce qui signifie qu'on ne peut pas effectuer de saut
conditionné ou indirect directement via cette instruction. Cela évite certains comportements imprévisibles, notamment en lecture de registre de statut ou de
configuration.
- Utilisée pour lire des registres système : Une utilisation courante de MRC est la lecture des registres du CP15, par exemple pour consulter la configuration
du cache, les états de contrôle du processeur, ou le niveau d'accès mémoire. C'est un outil précieux pour l'optimisation système.
- Essentielle dans la programmation bas niveau : MRC est omniprésente dans le code d'initialisation des OS, les pilotes bas niveau, et les routines
d'amorçage, car elle permet de récupérer des informations critiques sur l'état du processeur ou du coprocesseur, nécessaires à une configuration fine.
- Attention aux effets de synchronisation : Selon le coprocesseur ciblé, la lecture effectuée par MRC peut avoir des effets de synchronisation ou de
latence. Par exemple, lire un état de pipeline ou de cache peut nécessiter que l'unité ait terminé ses cycles internes, ce qui introduit des retards potentiels.
Dernière mise à jour : Dimanche, le 12 novembre 2017