Syntaxe
Paramètres
| Nom |
Description |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
| Rt |
Ce paramètre permet d'indiquer le registre de destination. Ce registre ne peut pas être PC. |
| Rt2 |
Ce paramètre permet d'indiquer le registre source. |
| Rn |
Ce paramètre optionnel permet d'indiquer l'adresse dans la mémoire. |
Description
Cette instruction permet d'échanger des données 8 bits de registre et de mémoire.
Remarques
- Échange ciblé sur un seul octet (8 bits) : L'instruction SWPB fonctionne de manière similaire à SWP, mais elle ne traite que des octets (8 bits). Cela
permet une gestion plus fine des données lorsqu'il n'est pas nécessaire de manipuler des mots complets de 32 bits, par exemple pour interagir avec des périphériques ou
des registres mémoire spécifiques.
- Utilisée pour la synchronisation sur données de petite taille : SWPB peut servir dans des cas de synchronisation fine, comme pour verrouiller ou surveiller
des drapeaux de 8 bits. Elle est donc utile dans des systèmes embarqués à ressources limitées, où chaque bit compte et où les échanges doivent rester compacts.
- Instruction dépréciée dans les architectures récentes : Tout comme SWP, SWPB est considérée comme obsolète depuis ARMv6 et totalement supprimée dans ARMv8.
L'usage de cette instruction n'est donc pas recommandé pour les nouveaux développements. Il vaut mieux opter pour LDREX/STREX couplé à des masques pour manipuler les
octets.
- Restrictions sur les registres utilisés : Le registre Rt ne peut pas être le registre PC (R15), car cela perturberait gravement le déroulement du
programme. Cette limitation empêche d'utiliser l'instruction pour effectuer un échange direct qui influerait sur le flot d'exécution, garantissant une exécution
plus sûre.
- Simple d'utilisation mais potentiellement risquée : Bien que SWPB soit facile à utiliser sur le plan syntaxique, elle implique une interaction directe avec
la mémoire. Cela exige une vigilance particulière pour éviter les accès concurrents non maîtrisés, en particulier dans les systèmes multiprocesseurs.
- Rt reçoit l'ancienne valeur mémoire, Rt2 la remplace : Lors de l'exécution de SWPB, la valeur de l'octet en mémoire à l'adresse donnée est chargée
dans Rt, et celle contenue dans Rt2 est stockée à cette même adresse. Cela permet un échange atomique en un seul cycle, sur processeur monocoeur.
- Non compatible avec les architectures sécurisées modernes : Du fait de l'évolution de la gestion des accès mémoire et du besoin croissant d'exclusivité
et de cohérence cache, cette instruction n'est plus jugée fiable ou suffisante dans les environnements multicoeurs modernes, où la cohérence mémoire est critique.
- Peut servir à implémenter de simples verrous mémoire : Même si dépassée, SWPB peut être utilisée pour mettre en place un verrou de type test-and-set sur
un seul octet, utile dans des architectures embarquées basiques ou dans certains firmwares d'initialisation où les primitives modernes ne sont pas encore disponibles.
Dernière mise à jour : Dimanche, le 12 novembre 2017