CDP |
Opérations de données de coprocesseurs |
| ARM |
Syntaxe
|
CDP{cond} coproc, #opcode1, CRd, 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 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 avec condition.
Remarques
- Fonction spécifique à un environnement matériel : L'instruction CDP est spécifiquement utilisée pour exécuter des opérations de traitement de données sur
un coprocesseur. Elle ne concerne donc pas directement le cour principal du processeur ARM, mais plutôt des unités comme le FPU (Floating Point Unit) ou des coprocesseurs
personnalisés. Cela implique que sa validité dépend fortement de l'architecture du système et des coprocesseurs présents.
- Syntaxe flexible avec condition d'exécution : La présence du champ optionnel {cond} montre que cette instruction peut être conditionnelle, une
particularité puissante des instructions ARM. Cela permet d'éviter des branchements explicites dans certains cas, en intégrant directement une logique de décision
dans l'exécution de l'instruction.
- Paramètres riches mais techniques : Les paramètres comme #opcode1, #opcode2, ou encore CRd, CRn, et CRm montrent que cette instruction offre une grande
souplesse. Cependant, cela la rend aussi complexe à maîtriser, car il faut connaître en détail le fonctionnement interne du coprocesseur ciblé pour pouvoir l'utiliser
correctement.
- Utilisation spécifique dans les systèmes embarqués : Dans la plupart des cas, CDP est utilisée dans des systèmes embarqués spécialisés où les
coprocesseurs sont dédiés à des tâches précises (exemple : cryptographie, traitement du signal). Dans les environnements de développement général, elle est
rarement rencontrée, ce qui en fait une instruction de niche.
- Pas de transfert de données classique : Contrairement à des instructions comme MRC ou MCR qui servent à transférer des données entre le processeur
principal et le coprocesseur, CDP sert uniquement à traiter des données à l'intérieur du coprocesseur. Cela signifie que ses effets ne sont pas immédiatement visibles
depuis le processeur ARM principal.
- Utilisation de registres spécifiques au coprocesseur : Les registres CRd, CRn, CRm ne sont pas les registres standards ARM (comme R0 à R15), mais des
registres internes au coprocesseur. Cela signifie qu'il faut une bonne connaissance de l'interface et des spécifications du coprocesseur pour utiliser ces registres
correctement.
- Opcode1 et Opcode2 définissent l'opération précise : Les champs #opcode1 (4 bits) et #opcode2 (3 bits) servent à sélectionner précisément l'opération à
effectuer dans le coprocesseur. Cette granularité permet une grande variété d'opérations, mais nécessite de bien comprendre la table des opérations de chaque coprocesseur
pour coder correctement.
- Instruction peu documentée dans les manuels grand public : Comme elle est spécifique et rarement utilisée dans le développement généraliste, CDP est
souvent peu documentée dans les ressources classiques ARM. Il faut souvent consulter la documentation du fabricant du coprocesseur pour comprendre exactement quelles
opérations peuvent être effectuées avec cette instruction.
Dernière mise à jour : Dimanche, le 12 novembre 2017