instruction bclr ou bcr (Branch Conditionnel Link Register)
Objectif
Branches conditionnelles à une adresse contenue dans le registre des liens.
Syntaxe
| Bits | Valeur |
|---|---|
| 0 - 5 | 19 |
| 6 - 10 | objet métier |
| 11 - 15 | solutions d"aide à la décision |
| 16 - 18 | /// |
| 19 à 20 | BH |
| 21 - 30 | 16 |
| 31 | LK |
Description
Les instructions bclr et bcr sont associées à une instruction spécifiée par l'adresse cible de la branche. L'adresse cible de la branche est la concaténation des bits 0-29 du registre de liaison et b'00'.
Les instructions bclr et bcr ont deux formes de syntaxe. Chaque forme de syntaxe a un effet différent sur le bit de lien et sur le registre de lien.
| Formulaire de syntaxe | Bit d'adresse absolue (AA) | Registre des exceptions de point fixe | Bit de liaison (LK) | Zone de registre de condition 0 |
|---|---|---|---|---|
| bclr | Néant | Néant | 0 | Néant |
| bclrl | Néant | Néant | 1 | Néant |
| bcr | Néant | Néant | 0 | Néant |
| bcrl | Néant | Néant | 1 | Néant |
Les deux formes de syntaxe de l'instruction bclr et bcr n'affectent jamais la zone 0 du registre des exceptions fixes ou du registre des conditions. Si le bit de liaison (LK) est 1, alors l'adresse effective de l'instruction qui suit l'instruction de branche est placée dans le registre de liaison.
Le champ Option de succursale (BO) permet de combiner différents types de succursales en une seule instruction. Des mnémoniques étendues sont fournies pour définir automatiquement la zone Option de branche.
Le codage de la zone BO est défini dans l'architecture PowerPC® . La liste suivante fournit de brèves descriptions des valeurs possibles pour cette zone:
| objet métier | Descriptif |
|---|---|
| 0000y | Décrémenter le CTR ; puis le branchement si le CTR décrémenté n'est pas 0 et que la condition est False. |
| 0001y | Décrémenter le CTR ; puis créer une branche si le CTR décrémenté est 0 et que la condition est False. |
| 001zy | Branche si la condition est False. |
| 0100y | Décrémenter le CTR ; puis ramifier si bits le CTR décrémenté n'est pas 0 et la condition est True. |
| 0101y | Décrémenter le CTR ; puis se ramifier si le CTR décrémenté est 0 et que la condition est True. |
| 011zy | Branche si la condition est True. |
| 1z00y | Décrémente le CTR ; puis branche si le CTR décrémenté n'est pas 0. |
| 1z01y | Décrémenter le CTR, puis le séparer si le CTR décrémenté est 0. |
| 1z1zz | Branche toujours. |
- Le bit
zindique un bit qui doit être 0. Si le bit n'est pas 0, le format d'instruction n'est pas valide. - Le bit
yindique si une branche conditionnelle est susceptible d'être utilisée. La valeur de ce bit peut être 0 ou 1. La valeur par défaut est 0.
Dans l'architecture de la famille POWER ®, les bits z et y peuvent être 0 ou 1.
Le codage de la zone BO utilisant le codage V2.00 est brièvement décrit ci-dessous:
| objet métier | Descriptif |
|---|---|
| 0000z | Décrémenter le CTR ; puis le branchement si le CTR décrémenté n'est pas 0 et que la condition est False. |
| 0001z | Décrémenter le CTR ; puis créer une branche si le CTR décrémenté est 0 et que la condition est False. |
| 001at | Branche si la condition est False. |
| 0100z | Décrémenter le CTR ; puis ramifier si bits le CTR décrémenté n'est pas 0 et la condition est True. |
| 0101z | Décrémenter le CTR ; puis se ramifier si le CTR décrémenté est 0 et que la condition est True. |
| 011at | Branche si la condition est True. |
| 1a00t | Décrémente le CTR ; puis branche si le CTR décrémenté n'est pas 0. |
| 1a01t | Décrémenter le CTR, puis le séparer si le CTR décrémenté est 0. |
| 1z1zz | Branche toujours. |
Les bits a et t de la zone BO peuvent être utilisés par le logiciel pour indiquer si une branche est susceptible d'être utilisée, comme illustré ci-dessous:
| at | Conseil |
|---|---|
| 00 | Aucun indice n'est donné. |
| 01 | Réservé |
| 01 | La branche est très probablement à ne pas être prise. |
| 11 | La branche est très probablement prise. |
Le champ BH (Branch Hint) est utilisé pour fournir une indication sur l'utilisation de l'instruction, comme illustré ci-dessous:
| BH | Conseil |
|---|---|
| 00 | L'instruction n'est pas un retour de sous-programme ; l'adresse cible est probablement la même que l'adresse cible utilisée lors de la prise de la branche précédente. |
| 01 | Réservé |
| 10 | Réservé |
| 11 | L'adresse cible n'est pas prévisible. |
Paramètres
| Article | Descriptif |
|---|---|
| objet métier | Indique la zone d'option de branche. |
| solutions d"aide à la décision | Indique le bit dans le registre de condition pour la comparaison de conditions. |
| BH | Fournit une indication sur l'utilisation de l'instruction. |
Exemples
bclr 0x0,0,0
# The Count Register is decremented.
# A branch occurs if the LT bit is set to zero in the
# Condition Register and if the Count Register
# does not equal zero.
# If the conditions are met, the instruction branches to
# the concatenation of bits 0-29 of the Link Register and b'00'.