STC2 |
Transfère vers le coprocesseur |
|---|---|
| ARM | |
Syntaxe
| STC2{L}{cond} coproc, CRd, [Rn] |
| STC2{L}{cond} coproc, CRd, [Rn, #{-}offset] |
| STC2{L}{cond} coproc, CRd, [Rn, #{-}offset]! |
| STC2{L}{cond} coproc, CRd, [Rn], #{-}offset |
| STC2{L}{cond} coproc, CRd, [Rn], {option} |
Paramètres
| Nom | Description |
|---|---|
| cond | Ce paramètre optionnel permet d'indiquer le code de condition |
| L | Ce paramètre d'indiquer un suffixe spécifiant un long transfert. |
| coproc | Ce paramètre permet d'indiquer le nom de l'instruction du coprocesseur. Le nom standard doit être un entier dans l'intervalle de 0 à 15. |
| CRd | Ce paramètre permet d'indiquer le registre du coprocesseur à charger. |
| Rn | Ce paramètre permet d'indiquer le registre sur lequel l'adresse mémoire est basé. Si PC est spécifié, la valeur utilisé est l'adresse de l'instruction courante plus 8. |
| - | Ce paramètre optionnel permet d'indiquer qu'il faut soustraire le déplacement au paramètre Rn. Autrement, si le paramètre n'est pas indiquer, il additionnera le déplacement au paramètre Rn. |
| offset | Ce paramètre permet d'indiquer une expression à évaluer en la multipliant par 4, dans l'intervalle de 0 à 1020. |
| ! | Ce paramètre optionnel permet d'indiquer un suffixe indiquant que l'adresse est inclus dans le déplacement écrit dans le paramètre Rn. |
| {option} | Ce paramètre permet d'indiquer une option dans l'intervalle de 0 à 255 situé entre accolade. |
Description
Cette instruction permet de transférer des données entre la mémoire et le coprocesseur avec une architecture ARMv5T.
Remarques
- Extension de STC pour coprocesseur secondaire : L'instruction STC2 fonctionne de manière très similaire à STC, mais elle est spécifiquement destinée aux coprocesseurs numérotés à partir de CP2. Elle a été introduite pour séparer les accès vers des coprocesseurs secondaires dans des architectures plus complexes, comme celles intégrant plusieurs blocs matériels spécialisés.
- Réservée aux architectures à coprocesseurs avancés : STC2 n'est disponible qu'à partir de l'architecture ARMv5T. Elle est utilisée dans des contextes matériels spécifiques, par exemple pour des coprocesseurs d'encodage vidéo, de chiffrement, ou pour des extensions propriétaires embarquées dans des SoC complexes.
- Pas toujours activée par défaut : Sur de nombreux systèmes ARM, l'instruction STC2 n'est pas activée par défaut ou même totalement absente, sauf si un coprocesseur 2 ou plus est effectivement présent et configuré par le système. Il est donc crucial de connaître la plateforme cible avant d'utiliser cette instruction.
- Souplesse des modes d'adressage : Comme STC, STC2 supporte un large éventail de modes d'adressage?: pré-indexé, post-indexé, avec offset positif ou négatif, ainsi que l'utilisation du registre SP ou PC. Cela permet une intégration flexible dans des boucles de transfert de blocs ou de piles dédiées au coprocesseur.
- Transfert vers mémoire depuis registre coprocesseur : L'instruction sert à stocker des données provenant du coprocesseur vers la mémoire. Cela permet, par exemple, d'exporter l'état interne du coprocesseur ou de transférer des résultats calculés à haute vitesse, comme dans le cas de traitements multimédias.
- Alignement et offset en mots : Le champ offset est multiplié par 4, car l'accès mémoire est fait en mots de 32 bits. L'intervalle [0-1020] permet de cibler une plage mémoire relativement étendue en une seule instruction, ce qui est utile pour des transferts rapides.
- Option d'instruction personnalisable : Le champ {option} offre une possibilité d'extension propre à certains coprocesseurs. Il peut spécifier un comportement, un format ou une instruction interne au coprocesseur. Cela rend STC2 très dépendante de l'implémentation matérielle sous-jacente.
- Instruction potentiellement non simulable : Dans les outils de simulation ou certains environnements de développement comme QEMU, STC2 peut ne pas être pris en charge, car elle nécessite une implémentation du coprocesseur correspondant. Cette absence de prise en charge peut compliquer le test et le débogage de code qui s'y réfère.
Dernière mise à jour : Dimanche, le 12 novembre 2017