| Assembleur 370 |
TRT |
| Translate and Test |
Syntaxe
Paramètres
| Nom |
Description |
| D1(L1,B1) |
Ce paramètre permet d'indiquer la zone mémoire à tester, constituée de L1+1 octets. D1 : Déplacement (offset), L1 : Longueur (codée sur 1 octet dans l'instruction ? de 1 à 256 octets), B1 : Registre de base. |
| D2(B2) |
Ce paramètre permet d'indiquer l'adresse de la table de test (256 octets). D2 : Déplacement. B2 : Registre de base pour l'adresse de la table. |
Description
Cette instruction permet de copier un octet à répétition dans un bloc de données en sélectionnant une fonction d'octets.
Remarques
- L'instruction TRT permet de traduire chaque octet d'une zone mémoire à l'aide d'une table, comme TR, mais elle effectue en plus un test sur les octets traduits selon
un critère défini par cette table. Elle est donc utile pour identifier des caractères spécifiques, comme des fins de chaîne ou des séparateurs.
- La table fournie à D2(B2) contient des indicateurs (bits de test) plutôt que des traductions. Chaque octet dans la zone mémoire est utilisé comme index dans cette
table, pour savoir s'il déclenche un test positif. Cela permet, par exemple, de détecter rapidement un caractère interdit.
- Contrairement à TR, l'instruction TRT ne modifie pas la mémoire source. Elle effectue uniquement un balayage pour identifier le premier octet problématique selon les
bits testés. C'est donc une opération de contrôle, pas de transformation.
- En cas de correspondance, TRT place l'adresse de l'octet testé dans les registres R1 et R2. R1 reçoit le déplacement relatif à la zone de départ, et R2 contient la valeur
du bit test réussi. Cela permet à un programme d'agir immédiatement sur le premier octet problématique.
- TRT est souvent utilisé pour scanner une chaîne en mémoire à la recherche de fins de mot, caractères non valides, ou codes spéciaux. Il peut remplacer des boucles
complexes avec conditions imbriquées. Sa rapidité est un avantage notable dans des traitements texte ou validation.
- La table de test doit contenir exactement 256 octets, chaque entrée correspondant à un code possible (0 à 255). Les bits dans chaque octet de la table définissent
les catégories de test (par exemple, si bit 0 est activé pour signaler un séparateur). Cette table doit être soigneusement définie pour que le test soit fiable.
- La longueur L1 indique le nombre d'octets à tester - 1, ce qui signifie qu'on teste en fait L1+1 octets. Cela permet un traitement de 1 à 256 octets sans boucle
explicite. Cette convention peut prêter à confusion si on oublie l'incrément implicite.
- TRT est très utile dans les environnements où la performance et la compacité du code sont essentiels. Elle combine lecture, traduction indirecte et détection
conditionnelle, le tout en une seule instruction. C'est un outil précieux pour la manipulation de chaînes dans les systèmes IBM.
Dernière mise à jour : Mardi, le 22 août 2017