| Assembleur 370 |
MVC |
| Move Characters |
Syntaxe
Paramètres
| Nom |
Description |
| D1(L,B1) |
Ce paramètre permet d'indiquer une adresse de destination (où copier les caractères). D1 : déplacement (offset), L : longueur (en octets) à copier (maximum 256), B1 : registre de base pour le calcul de l'adresse de destination. |
| D2(B2) |
Ce paramètre permet d'indiquer l'adresse source (où lire les caractères). D2 : déplacement (offset), B2 : registre de base pour calculer l'adresse source. |
Description
Cette instruction permet de copier un bloc de données dans une autre bloc de données.
Remarques
- L'instruction MVC sert à copier un bloc de caractères d'une zone mémoire source vers une zone mémoire destination. Elle peut déplacer jusqu'à 256 octets en une
seule instruction. C'est l'équivalent d'un memcpy en langage C.
- Le paramètre D1(L,B1) désigne l'adresse de destination, avec un déplacement, une longueur et un registre de base. C'est dans cette zone mémoire que seront copiés les
octets depuis la source. Il est essentiel que la longueur L corresponde à la taille exacte du bloc à copier.
- Le paramètre D2(B2) indique l'adresse source à partir de laquelle les octets seront lus. Il se compose d'un déplacement D2 et d'un registre de base B2. La source
n'est pas modifiée, seule la destination est impactée.
- L'instruction MVC est idéale pour initialiser ou transférer des zones mémoire, comme des structures de données ou des chaînes. Elle est souvent utilisée dans des
routines d'initialisation ou de manipulation de tampons. Elle évite d'avoir recours à une boucle manuelle de copie.
- Même si la syntaxe spécifie une longueur, MVC ne fait aucun test de dépassement mémoire. Il est donc de la responsabilité du programmeur de s'assurer que les adresses
sont valides. Une mauvaise gestion peut entraîner des erreurs mémoire critiques.
- La copie byte par byte respecte l'ordre de la mémoire, sans conversion ni transformation. Cela garantit une fidélité binaire entre source et destination.
C'est crucial pour des copies exactes de zones binaires (exemple : formats de fichiers, tables,...).
- L'instruction peut être utilisée pour remplir une zone avec un caractère constant, en combinant avec une pseudo-zone source contenant un seul octet. On appelle cela
un "fill" ou un "reset" en assembleur. C'est une alternative à MVC utilisée comme effaceur de zone.
- MVC est une instruction non conditionnelle : elle est toujours exécutée si atteinte. Cela la rend prévisible dans les blocs d'instructions séquentielles, et facile
à intégrer dans un algorithme. Elle est l'une des instructions les plus utilisées en traitement de chaînes en assembleur 370.
Dernière mise à jour : Mardi, le 22 août 2017