Instruction bcctr ou bcc (Branche conditionnelle à registre de comptage)
Objectif
Branches conditionnelles à l'adresse contenue dans le registre de comptage.
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 | 528 |
| 31 | LK |
Description
Les instructions bcctr et bcc se branchent de manière conditionnelle à une instruction spécifiée par l'adresse cible de la branche contenue dans le registre de comptage. L'adresse cible de la branche est la concaténation des bits de registre de comptage 0-29 et b'00'.
Les instructions bcctr et bcc 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.
| Article | Descriptif | |||
|---|---|---|---|---|
| Formulaire de syntaxe | Bit d'adresse absolue (AA) | Registre des exceptions de point fixe | Bit de liaison (LK) | Zone de registre de condition 0 |
| bcctr | Néant | Néant | 0 | Néant |
| bcctrl | Néant | Néant | 1 | Néant |
| ccc | Néant | Néant | 0 | Néant |
| bccl | Néant | Néant | 1 | Néant |
Les deux formes de syntaxe des instructions bcctr et bcc n'affectent jamais la zone 0 du registre des exceptions fixes ou du registre des conditions. Si le bit de liaison est 1, alors l'adresse effective de l'instruction suivant l'instruction de branchement 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 à l'aide du codage pre-V2.00 :
| 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é |
| 10 | La branche est très probablement à ne pas être prise. |
| 11 | La branche est très probablement prise. |
Pour plus d'informations, voir IBM Power ISA PDF.
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. |
| BIF | Indique la zone Registre de condition qui spécifie le bit de registre de condition (LT, GT, EQ ou SO) à utiliser pour la comparaison de conditions. |
| BH | Fournit une indication sur l'utilisation de l'instruction. |
Exemples
Le code suivant se ramifie d'une adresse spécifique, dépendant d'un bit dans le registre de condition, à l'adresse contenue dans le registre de comptage, et aucune indication de branche n'est donnée:
bcctr 0x4,0,0
cror 31,31,31
# Branch occurs if LT bit in the Condition Register is 0.
# The branch will be to the address contained in
# the Count Register.
bcctrl 0xC,1,0
return: cror 31,31,31
# Branch occurs if GT bit in the Condition Register is 1.
# The branch will be to the address contained in
# the Count Register.
# The Link register now contains the address of return.