MCRR2 |
Déplace du coprocesseur au registre 2 |
| ARM |
Syntaxe
|
MCRR2{cond} coproc, #opcode, Rt, Rt2, CRn
|
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 |
| #opcode |
Ce paramètre permet d'indiquer le opcode de coprocesseur en 4 bits. |
| Rt |
Ce paramètre permet d'indiquer le premier registre source ARM. Le registre ne doit pas être PC. |
| Rt2 |
Ce paramètre permet d'indiquer le deuxième registre source ARM. Le registre ne doit pas être PC. |
| CRn |
Ce paramètre permet d'indiquer une opérande de registre de coprocesseur. |
Description
Cette instruction permet de déplacer des données du coprocesseur vers un registre ARM pour l'architecture ARMv6.
Remarques
- Variante de MCRR pour Coprocesseur 2 : MCRR2 est une version spécifique de MCRR destinée à interagir avec un second espace de coprocesseur. Cette
instruction existe notamment dans certains contextes de virtualisation ou d'extension matérielle, où les coprocesseurs sont différenciés pour isoler les fonctions
systèmes de celles accessibles aux hyperviseurs ou invités.
- Transfert de 64 bits depuis deux registres : L'instruction déplace une valeur 64 bits contenue dans deux registres ARM (Rt et Rt2) vers un registre
de coprocesseur (désigné par CRn). Cette opération est indispensable lorsqu'un seul registre ARM (32 bits) ne suffit pas pour transmettre une donnée complète.
- Registres PC interdits : Comme pour MCRR, l'usage du registre PC (R15) est strictement interdit pour Rt et Rt2. Cela évite des conflits avec le
flot d'exécution, car le PC est utilisé pour gérer l'adresse courante du programme, et ne peut pas être manipulé dans ce type de transfert.
- Instruction privilégiée : MCRR2 est une instruction privilégiée, ce qui signifie qu'elle ne peut être exécutée que dans des niveaux de privilège
supérieurs (mode superviseur, hyperviseur,...). Elle est donc typiquement utilisée dans des environnements comme les noyaux d'OS, les firmware, ou les moniteurs
hyperviseurs.
- Dépendances avec l'environnement matériel : La signification du champ #opcode ainsi que le rôle du registre CRn dépendent du coprocesseur ciblé. Ces
valeurs peuvent varier selon qu'il s'agisse d'un coprocesseur de cryptographie, de virtualisation, de performance monitoring, etc. La documentation matérielle
spécifique est essentielle.
- Importance de l'ordre des registres : L'ordre des registres ARM Rt et Rt2 est fondamental : Rt contient la partie basse des 64 bits, et Rt2 la partie
haute. Une inversion involontaire provoquerait un transfert incohérent, ce qui pourrait rendre les données invalides côté coprocesseur.
- Peu courante mais utile en contexte spécifique : L'instruction MCRR2 est peu utilisée dans les programmes standards, mais elle est utile dans des
contextes comme l'émulation de coprocesseur, le développement de systèmes embarqués personnalisés ou la configuration d'hyperviseurs utilisant des coprocesseurs
virtualisés.
- Complément de MRRC2 : Comme MCRR a pour équivalent en lecture MRRC, MCRR2 est souvent associée à MRRC2, qui lit 64 bits depuis un registre de
coprocesseur 2 vers deux registres ARM. Cela permet un transfert bidirectionnel complet, très utile pour configurer ou interroger des coprocesseurs étendus.
Dernière mise à jour : Dimanche, le 12 novembre 2017