| Assembleur 370 |
MVCIN |
| Move Inverse |
Syntaxe
Paramètres
| Nom |
Description |
| D1(L,B1) |
Ce paramètre permet d'indiquer la destination (adresse mémoire où écrire). D1 : déplacement, L : longueur (en octets) - on copie L+1 octets, B1 : registre de base de la destination. |
| D2(B2) |
Ce paramètre permet d'indiquer la source (adresse mémoire à lire). D2 : déplacement, B2 : registre de base de la source. |
Description
Cette instruction permet de copier un bloc de données dans une autre bloc de données dans le sens inverse.
Remarques
- L'instruction MVCIN effectue une copie inversée d'un bloc de mémoire, de droite à gauche. Contrairement à MVC, la copie n'est pas séquentielle vers l'avant, mais
inverse l'ordre des octets. Elle est utile pour traiter des données en ordre décroissant.
- Le paramètre D1(L,B1) désigne l'adresse de destination, où seront placés les octets. La longueur spécifiée est L+1, ce qui signifie qu'un octet de plus que prévu est
copié. Cette particularité nécessite d'ajuster L avec soin pour éviter un débordement.
- Le paramètre D2(B2) indique l'adresse source, qui sera lue en partant de la fin. Le premier octet copié en destination sera le dernier octet de la source. Cela permet
une inversion complète du bloc.
- MVCIN est souvent utilisée pour réorganiser des données, notamment des chaînes ou des tableaux. Elle peut servir dans des routines de renversement de chaînes (reverse
string). Cela évite de coder une boucle manuelle pour faire l'inversion.
- Cette instruction est précieuse dans le traitement de formats où l'ordre des octets doit être inversé (big endian vs little endian). Elle permet une transformation
directe de l'ordre mémoire sans recalcul complexe. Elle s'applique souvent dans les contextes de communication entre systèmes hétérogènes.
- Comme pour MVC, il n'y a aucune vérification des limites mémoire. Une mauvaise longueur ou de mauvaises adresses peuvent entraîner un comportement imprévisible.
Une vigilance est nécessaire pour éviter tout accès mémoire invalide.
- L'utilisation de L+1 pour la longueur peut surprendre : cette convention vient du fait que L est stocké sur un octet (0 à 255), mais désigne une longueur réelle de L+1
octets. Cela suit la logique de certaines instructions S/370. Il faut donc bien anticiper ce +1 lors de la programmation.
- MVCIN est une instruction relativement rare comparée à MVC, mais très efficace dans les cas de réarrangement de données binaires. Elle réduit le nombre d'instructions
nécessaires à une inversion. C'est un exemple d'optimisation classique en assembleur S/370.
Dernière mise à jour : Mardi, le 22 août 2017