Assembleur SuperH | BF/S |
---|---|
SuperH | Branch if False with Delay Slot |
Syntaxe
BF/S label |
Description
Cette instruction permet d'effectuer une branchement conditionnel si le bit T vaut 0 en effectuant un délai de fente. Si T = 1, alors BF/S exécute l'instruction suivante. La destination du branchement est une adresse spécifiée par PC + déplacement. Cependant, dans ce cas, il est utilisé pour le calcul de l'adresse. Le PC est l'adresse 4 octets après cette instruction. Le déplacement à 8 bits à les signes étendue et est doublé. Par conséquent, l'intervalle relatif de la destination du branchement est compris entre -256 et +254 octets. Si le déplacement est trop court pour atteindre la destination du branchement, utilisez BF avec l'instruction BRA ou quelque chose de similaires.
Algorithme
MODULE BFS(d) * BF/S disp SI d ∩ 80h = 0 ALORS disp ← 000000FFh ∩ (long)d SINON disp ← FFFFFF00h U (long)d FIN SI SI T = 0 ALORS PC ← PC + (disp << 1) Delay_Slot(temp + 2) SINON PC ← PC + 2 FIN SI |
Remarque
- Comme il s'agit d'une instruction de branche avec un délai, l'instruction suivant immédiatement est exécutée avant le branchement. Aucune interruption ni erreur d'adresse n'est acceptée entre cette instruction et l'instruction suivante. Lorsque l'instruction suivant immédiatement est une instruction de branchement, elle est reconnue comme une instruction de fente illégale. Lors du branchement, il s'agit d'une instruction à 2 cycles d'horloge; tandis que lorsqu'il n'y a pas de branchement, c'est un cycle d'horloge.
Mnémonique
Instruction | Abstrait | Opcode | Cycle |
---|---|---|---|
BF/S label | Quand T = 0, PC ← disp × 2 + PC, Quand T = 1, nop | 10001111dddddddd | 2/1 |
Dernière mise à jour : Mardi, le 28 juillet 2015