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
PowerPC® 
bcctr BO, BI, BH
bcctrl BO, BI, BH
Famille POWER ® 
ccc BO, BI, BH
bccl BO, BI, BH

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.
Dans l'architecture PowerPC® , les bits sont les suivants:
  • Le bit z indique un bit qui doit être 0. Si le bit n'est pas 0, le format d'instruction n'est pas valide.
  • Le bit y indique 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:

Tableau 1. Valeurs de zone d'objet métier utilisant le codage V2.00
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.