MSR (registre ARM à registre de coprocesseur) |
Déplace le registre |
| ARM |
Syntaxe
|
MSR{cond} coproc_register, Rn
|
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 source. |
| coproc_register |
Ce paramètre permet d'indiquer le nom du registre de coprocesseur. |
Description
Cette instruction permet de copier un registre du système de coprocesseur à un registre ARM.
Remarques
- Sens du transfert mal formulé dans la description : La description actuelle indique que la copie se fait du registre de coprocesseur vers un registre ARM,
ce qui est inexact. En réalité, la syntaxe MSR coproc_register, Rn effectue une écriture du registre ARM (Rn) vers le registre du coprocesseur, et non l'inverse. Il s'agit
donc d'une erreur importante à corriger pour éviter les confusions.
- Instruction complémentaire de MRS : L'instruction MSR est généralement utilisée en complément de MRS, lisant un registre système. Ensemble, ces deux
instructions permettent de manipuler l'état interne du processeur ou des coprocesseurs en lisant (MRS) et écrivant (MSR) dans leurs registres dédiés.
- Accès souvent restreint aux registres système : La possibilité d'écrire dans un coproc_register via MSR est souvent réservée à des privilèges système
ou superviseur. Cela garantit que les programmes utilisateur ne puissent pas altérer des registres critiques tels que ceux du système d'interruption ou du contrôle
mémoire.
- Utilisation dans la configuration système bas-niveau : Cette instruction est cruciale pour configurer des fonctionnalités système avancées :
activation de la MMU, gestion des caches, contrôle des privilèges ou des interruptions,... Elle permet donc au firmware ou à l'OS de mettre en place l'environnement
d'exécution.
- Écriture dans l'état du programme : Dans certaines variantes (non listées ici), MSR permet aussi d'écrire dans des Program Status Registers (comme
le CPSR ou SPSR) pour modifier les drapeaux de condition, le mode processeur, ou les interruptions. C'est une opération critique qui doit être utilisée avec prudence.
- Syntaxe à deux opérandes bien structurée : La syntaxe MSR coproc_register, Rn est claire : l'ordre des paramètres reflète bien le flux de données (de Rn
vers coproc_register). Toutefois, il serait utile de compléter la documentation avec des exemples concrets de registres de coprocesseur utilisables, selon l'architecture
ciblée.
- Instruction utile pour la mise au point : Dans un contexte de développement bas-niveau, MSR est souvent utilisée pour modifier dynamiquement des
comportements du processeur pendant le débogage ou l'analyse des performances. Par exemple, activer ou désactiver des compteurs internes ou des fonctions de trace.
- Portabilité dépendante de l'architecture ARM : Tous les registres de coprocesseur ne sont pas présents sur toutes les variantes ARM. Il est donc crucial
de consulter le manuel du processeur ciblé pour vérifier la compatibilité et l'effet de l'instruction MSR, en particulier si l'on vise plusieurs plateformes (ARMv6,
ARMv7, Cortex-A vs Cortex-M,...).
Dernière mise à jour : Dimanche, le 12 novembre 2017