| Assembleur 370 |
LM |
| Load Multiple |
Syntaxe
Paramètres
| Nom |
Description |
| R1 |
Ce paramètre permet d'indiquer le premier registre de la série à charger. |
| R3 |
Ce paramètre permet d'indiquer le dernier registre à charger. → Tous les registres de R1 à R3 inclus seront remplis depuis la mémoire (ordre croissant). |
| D2(B2) |
Ce paramètre permet d'indiquer l'adresse mémoire de départ à partir de laquelle on va charger les registres. Elle est calculée comme : adresse effective = D2 + contenu de B2. D2 : déplacement (offset), B2 : registre de base. |
Description
Cette instruction permet de charger un ensemble de registre, situé dans l'intervalle spécifié, dans une opérande.
Remarques
- LM permet de charger plusieurs registres consécutifs en une seule instruction. Cela optimise les performances par rapport à plusieurs instructions L successives.
Très utile pour restaurer des contextes ou manipuler des blocs de données.
- Les registres ciblés vont de R1 à R3, en ordre croissant, et tous sont chargés depuis la mémoire. Le nombre de registres chargés est donc : R3 - R1 + 1. Il est important
que R3 soit ≥ R1, sinon le comportement est imprévisible.
- L'adresse mémoire source est calculée avec D2 + B2, ce qui permet un adressage simple mais puissant. L'adresse pointée doit contenir suffisamment de mots pour alimenter
tous les registres à charger. Chaque registre consomme 4 octets (32 bits), donc prévoir au moins 4 × (R3 - R1 + 1) octets.
- LM est souvent utilisée pour restaurer l'état des registres sauvegardés précédemment. Elle est complémentaire de STM (Store Multiple) permettant de sauvegarder les
registres. C'est une opération courante dans les prologues et épilogues de sous-programmes.
- Cette instruction est très rapide car elle limite le nombre de cycles nécessaires à plusieurs chargements. Plutôt que 4 instructions L, un seul LM suffit pour charger
4 registres d'un coup. Cela améliore la lisibilité et l'efficacité du code assembleur.
- L'usage de LM implique que la mémoire source soit correctement alignée et initialisée. Une erreur dans les adresses ou les données peut propager des valeurs corrompues
dans plusieurs registres. La rigueur dans le positionnement des données est donc cruciale.
- LM ne modifie pas les drapeaux ou les indicateurs de condition du programme. Elle se contente de transférer des données en mémoire vers les registres. Cela permet de
l'utiliser sans perturber l'état logique du programme en cours.
- Il est préférable d'utiliser LM avec prudence pour éviter d'écraser accidentellement des registres critiques. L'écriture dans plusieurs registres d'un coup peut
entraîner des effets de bord si mal planifiée. Une bonne documentation du contenu mémoire et des registres visés est indispensable.
Dernière mise à jour : Mardi, le 22 août 2017