CDP2 |
Opérations de données de coprocesseurs 2 |
| ARM |
Syntaxe
|
CDP2 coproc, #opcode1, CRd, CRn, CRm{, #opcode2}
|
Paramètres
| Nom |
Description |
| coproc |
Ce paramètre permet d'indiquer le nom de l'instruction de coprocesseur. |
| #opcode1 |
Ce paramètre permet d'indiquer un opcode de 4 bits de coprocesseur. |
| #opcode2 |
Ce paramètre permet d'indiquer un opcode de 3 bits de coprocesseur. |
| CRd, CRn, CRm |
Ce paramètre permet d'indiquer un des registres du coprocesseurs |
Description
Cette instruction permet d'effectuer des opérations de données de coprocesseur.
Remarques
- Instruction spécifique à l'architecture ARMv7 avec extensions de sécurité : CDP2 est une variante de CDP utilisée principalement dans des contextes
sécurisés, comme ceux supportant l'extension ARM TrustZone. Cette instruction permet d'exécuter des opérations sur des coprocesseurs dans un environnement sécurisé,
séparé du mode normal, ce qui est essentiel dans les systèmes embarqués critiques.
- Absence du champ conditionnel : Contrairement à l'instruction CDP, CDP2 ne propose pas de champ {cond} pour une exécution conditionnelle. Cela peut
s'expliquer par les contraintes imposées dans les contextes d'exécution sécurisés, où l'on souhaite que certaines opérations soient exécutées de manière déterministe et
sans ambiguïté.
- Même structure que CDP, mais contexte différent : La structure de l'instruction CDP2 est presque identique à celle de CDP : mêmes paramètres, mêmes
types d'opcodes et registres. Cependant, la différence clef réside dans le contexte d'exécution : CDP2 est utilisée dans un environnement où l'accès aux coprocesseurs
peut être régulé ou restreint.
- Support dépendant du processeur et du système : Tous les processeurs ARM ne supportent pas CDP2. Cette instruction dépend non seulement de l'architecture
(au moins ARMv7), mais aussi de la configuration logicielle du système, notamment si un hyperviseur ou une couche de virtualisation est utilisée. Cela limite son usage
aux plateformes avancées.
- Utilisation potentielle dans les hyperviseurs ou les OS sécurisés : CDP2 peut être utilisée par un hyperviseur ou un système d'exploitation sécurisé
pour exécuter des opérations sur des coprocesseurs auxquels les applications en mode utilisateur n'ont pas accès. Cela favorise l'isolation des ressources et le contrôle
précis du matériel.
- Instruction orientée vers la virtualisation ou la sécurité : Avec l'essor des systèmes embarqués virtualisés et sécurisés (comme ceux dans les
téléphones intelligents ou objets connectés), CDP2 trouve son utilité dans les contextes où le coprocesseur est partagé entre plusieurs mondes (sécurisé et non sécurisé).
Elle permet alors d'assurer une séparation stricte des exécutions.
- Requiert des connaissances approfondies sur le coprocesseur : Comme pour CDP, l'utilisation de CDP2 suppose de bien comprendre les registres du
coprocesseur (CRd, CRn, CRm) ainsi que la signification des opcodes. Une documentation spécifique du coprocesseur est donc indispensable pour savoir comment coder
l'instruction correctement.
- Instruction peu rencontrée dans le développement courant : CDP2 est très rarement utilisée dans les applications ARM classiques ou même embarquées
standards. Elle est surtout présente dans les couches basses du système, dans des firmwares, des OS temps réel ou des hyperviseurs. Pour un développeur classique, elle
est plus une curiosité technique qu'un outil quotidien.
Dernière mise à jour : Dimanche, le 12 novembre 2017