| Assembleur 370 |
CH |
| Compare Halfword |
Syntaxe
Paramètres
| Nom |
Description |
| R1 |
Ce paramètre permet d'indiquer un registre contenant une valeur sur 32 bits (signée). |
| D2(X2,B2) |
Ce paramètre permet d'indiquer l'adresse effective pointant vers une valeur mémoire de 2 octets (signée). |
Description
Cette instruction permet d'effectuer la comparaison d'une chaîne de données et d'un registre de taille de 2 octets (simple mot).
Remarques
- L'instruction CH compare un registre de 32 bits (R1) à une valeur mémoire de 16 bits signée, ce qui implique un élargissement de signe avant la comparaison.
Cela permet de traiter des entiers courts tout en conservant la cohérence avec des registres plus larges. C'est particulièrement utile pour les comparaisons entre
registres et structures mémoire compactes.
- CH est souvent utilisée dans des structures de contrôle où les variables d'état ou de boucle sont entreposées en demi-mot (halfword) pour économiser de l'espace mémoire.
Cela permet une gestion fine de la mémoire tout en maintenant la compatibilité avec les opérations sur registre. Elle est efficace pour les tableaux d'entiers courts.
- L'adresse mémoire est calculée via le triplet D2(X2,B2), ce qui permet une grande souplesse d'adressage. On peut ainsi parcourir dynamiquement des structures indexées
en mémoire. Cela rend CH utile pour la navigation dans des tableaux ou tampons à pas court.
- Le résultat de la comparaison n'est pas entreposé, mais reflété dans le code condition du programme. Ce code est utilisé par d'autres instructions comme BC (Branch
on Condition) pour prendre des décisions. CH est donc typiquement utilisée en préambule de branchement conditionnel.
- Comme la valeur mémoire est signée sur 2 octets, il est important que le développeur tienne compte du signe lors des comparaisons. Un oubli peut entraîner des erreurs
logiques ou des branches incorrectes. Cela demande une attention particulière au format des données.
- CH permet de comparer rapidement une constante stockée en mémoire avec un registre, sans devoir charger la constante dans un autre registre. Cela optimise le nombre
d'instructions nécessaires et réduit la pression sur les registres. C'est un bon choix pour des comparaisons simples et fréquentes.
- L'instruction ne modifie aucune donnée ni aucun registre, ce qui en fait une opération non destructive. Elle peut être utilisée en toute sécurité dans des sections
critiques sans risque d'effets secondaires. Cela la rend adaptée aux tests logiques enchaînés.
- CH est complémentaire de l'instruction C (Compare), mais avec une granularité différente : 2 octets contre 4 octets. Le choix entre CH et C dépend de la taille de
l'opérande mémoire. Une mauvaise sélection pourrait causer des erreurs de comparaison ou des interprétations incorrectes.
Dernière mise à jour : Mardi, le 22 août 2017