MAR |
Déplace un accumulateur à registre |
| ARM |
Syntaxe
MAR{cond} Acc, RdLo, RdHi
|
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
| Acc |
Ce paramètre permet d'indiquer le registre accumulateur interne. Le nom standard est «accx», où x indique un entier dans l'intervalle entre 0 et n. La valeur n dépend du microprocesseur. La valeur 0 indique le microprocesseur courant. |
| RdLo |
Ce paramètre permet d'indiquer le registre de la partie basse. |
| RdHi |
Ce paramètre permet d'indiquer le registre de la partie haute. |
Description
Cette instruction permet de copier un registre dans un accumulateur de 40 bits.
Remarques
- Cette instruction est uniquement disponible sur les microprocesseur XScale du fabricant Intel.
- L'instruction MAR sert à transférer une valeur large d'un accumulateur vers deux registres : L'objectif de MAR est de déplacer une valeur contenue dans
un accumulateur interne vers deux registres généraux (RdLo et RdHi). Cette séparation en deux registres est nécessaire lorsqu'on travaille avec des données plus
larges que la taille classique de 32 bits d'un registre ARM.
- L'instruction est utile dans les opérations de multiplication longue ou accumulateurs 64 bits : MAR est généralement utilisée après des instructions de
multiplication longue ou d'accumulation étendue, où le résultat ne tient pas dans un seul registre. Elle permet de capturer un résultat de 64 bits ou plus réparti dans
un accumulateur et de le stocker dans des registres standards.
- Le registre Acc est un accumulateur interne spécifique au microprocesseur : Le paramètre Acc fait référence à un registre interne spécial
n'étant pas accessible directement dans les opérations standards. Sa syntaxe (accx) laisse entendre que plusieurs accumulateurs peuvent coexister, ce qui est courant dans
certaines extensions DSP ou SIMD.
- La valeur de Acc dépend du microprocesseur et peut ne pas être universelle : Tous les microprocesseurs ARM ne disposent pas nécessairement de ces
accumulateurs internes. Leur nombre (acc0 à accn) est dépendant du modèle (comme ARM Cortex-R, Cortex-M avec extensions, ou certains processeurs spécialisés).
- RdLo et RdHi reçoivent respectivement la partie basse et haute de l'accumulateur : La valeur contenue dans Acc est divisée en deux moitiés : la
partie basse (bits 0 à 31) est transférée vers RdLo, et la partie haute (bits 32 à 63) vers RdHi. Cela permet de reconstruire facilement une valeur entière de grande
taille.
- L'instruction peut être conditionnelle grâce au paramètre cond : Comme beaucoup d'instructions ARM, MAR accepte un suffixe conditionnel (cond) permettant
de n'exécuter l'instruction que si une condition spécifique est remplie, ce qui améliore l'efficacité sans branchement supplémentaire.
- MAR est typiquement utilisée pour manipuler des résultats intermédiaires : Lors d'opérations mathématiques complexes, notamment dans le traitement du
signal, les résultats sont stockés temporairement dans des accumulateurs. MAR est alors utilisée pour transférer ces résultats vers des registres classiques pour un
traitement ultérieur ou un entreposdage en mémoire.
- L'usage de MAR nécessite une bonne gestion de la paire de registres RdLo/RdHi : Il est crucial de choisir correctement les registres de destination pour
éviter les conflits ou l'écrasement de données. Le développeur doit s'assurer que ces registres sont disponibles et que leur contenu peut être remplacé sans conséquences
sur le reste du programme.
Dernière mise à jour : Dimanche, le 12 novembre 2017