| Assembleur 370 |
MVCL |
| Move Characters Long |
Syntaxe
Paramètres
| Nom |
Description |
| R1 |
Ce paramètre permet d'indiquer le registre de destination. Il contient l'adresse de départ pour la zone mémoire où les données seront copiées. R1 contient donc l'adresse de début de la destination, mais l'instruction utilise aussi R1+1 pour contenir la longueur du bloc copié (si l'adresse de source ou de destination dépasse une seule adresse de registre). |
| R2 |
Ce paramètre permet d'indiquer le registre de source. Il contient l'adresse de départ pour la zone mémoire contenant les données à copier. R2 contient donc l'adresse de début de la source. L'instruction va copier les données depuis cette adresse vers la destination en gérant dynamiquement la longueur. |
Description
Cette instruction permet de copier un bloc de données de grande taille dans autre une bloc de données.
Remarques
- L'instruction MVCL permet de copier de très grands blocs de mémoire, bien au-delà de la limite des 256 octets de MVC. Elle utilise deux paires de registres :
R1/R1+1 pour la destination et R2/R2+1 pour la source. Cela permet une gestion plus flexible et dynamique des longueurs.
- Le registre R1 contient l'adresse de destination, et R1+1 la longueur du bloc à remplir. Même logique pour R2 (adresse source) et R2+1 (longueur disponible à copier).
Cela rend l'instruction autonome pour manipuler des blocs sans intervention constante du programmeur.
- Si la source est plus courte que la longueur indiquée en destination, le reste est rempli avec des zéros. Cela garantit que la mémoire cible est toujours correctement
initialisée. C'est particulièrement utile pour nettoyer des zones mémoire ou initialiser des structures.
- Le contenu des registres R1+1 et R2+1 est mis à jour après l'opération, pour indiquer le nombre d'octets restant non traités. Cela permet de chaîner plusieurs MVCL
ou de suivre l'avancement des copies. Très utile dans les boucles de traitement.
- Cette instruction est précieuse dans la gestion des chaînes variables, des tampons ou des tampons. Elle permet de copier dynamiquement des zones dont la taille est
connue à l'exécution. Elle évite les boucles explicites et améliore les performances.
- L'instruction MVCL est plus coûteuse en cycles que MVC, car elle traite des cas plus complexes. Elle vérifie l'état des longueurs, remplit éventuellement des octets,
et met à jour les registres. Elle doit donc être utilisée avec discernement, surtout dans des boucles intensives.
- L'alignement des adresses en mémoire n'est pas strictement requis, mais des accès mal alignés peuvent ralentir l'exécution. Il est recommandé d'utiliser des adresses
sur des frontières de mots (multiples de 4) si possible. Cela améliore la performance sur certaines implémentations matérielles.
- MVCL est une instruction très adaptée aux systèmes transactionnels ou aux applications en COBOL, où la gestion de zones
mémoire variables est fréquente. Elle reflète l'approche système du S/370, orientée vers la manipulation directe de la mémoire. Elle montre la puissance des instructions
complexes dans cet environnement.
Dernière mise à jour : Mardi, le 22 août 2017