Mnemotécnicos ampliados para la predicción de ramificaciones
El programa fuente ensamblador puede tener información sobre la instrucción condicional de ramificación añadiendo un sufijo de predicción de ramificación al nemotécnico de la instrucción.
Si se conoce el resultado probable (bifurcación o caída) de una determinada instrucción condicional de bifurcación, el programador puede incluir esta información en el programa fuente del ensamblador añadiendo un sufijo de predicción de bifurcación al nemotécnico de la instrucción. El ensamblador utiliza la información de predicción de ramificación para determinar el valor de un bit en la instrucción de máquina. El uso de un sufijo de predicción de ramificación puede mejorar el rendimiento promedio de una instrucción condicional de ramificación.
Se pueden añadir los siguientes sufijos a cualquier nemotécnico condicional de ramificación, ya sea básico o ampliado:
| Elemento | Descripción |
|---|---|
| + | Predecir ramificación que se va a tomar |
| - | Predecir ramificación que no se debe tomar (caer a través) |
El sufijo de predicción de ramificación debe colocarse inmediatamente después del resto del nemotécnico (sin carácter separador). Debe utilizarse un carácter separador (espacio o tabulador) entre el sufijo de predicción de ramificación y los operandos.
Si no se incluye ningún sufijo de predicción de ramificación en el mnemotécnico, el ensamblador utiliza los siguientes supuestos predeterminados en la construcción de la instrucción de máquina:
- Para ramas relativas o absolutas ( bc[l] [a]) con campos de desplazamiento negativo, se predice que se tomará la rama.
- Para las ramas relativas o absolutas ( bc[l] [a]) con campos de desplazamiento no negativo, se prevé que la rama no se tomará (se caerá a través de la pronosticada).
- Para las ramificaciones a una dirección en el LR o CTR (bclr[l]) o (bcctr[l]), se predice que la ramificación no se tomará (caerá hasta pronosticarse).
La parte de la instrucción de máquina controlada por el sufijo de predicción de ramificación es el bit y del campo BO . El bit y se establece de la siguiente manera:
- Si no se especifica ningún sufijo de predicción de ramificación, o si se utiliza el sufijo que es el mismo que el supuesto predeterminado, el bit y se establece en 0.
- Si se especifica un sufijo de predicción de ramificación que es el opuesto al supuesto predeterminado, el bit y se establece en 1.
Los ejemplos siguientes ilustran el uso de sufijos de predicción de ramificaciones:
- Ramificación si CR0 refleja una condición menor que. La ejecución de la instrucción normalmente dará como resultado una ramificación.
blt+ target - Ramificación si CR0 refleja una condición menor que. La dirección de destino está en el registro de enlace. La ejecución de la instrucción normalmente dará como resultado que se pase a la siguiente instrucción.
bltlr-
A continuación se muestra una lista de las instrucciones de predicción de ramificación soportadas por el ensamblador AIX® :
bc+ bc- bca+ bca-
bcctr+ bcctr- bcctrl+ bcctrl-
bcl+ bcl- bcla+ bcla-
bclr+ bclr- bclrl+ bclrl-
bdneq+ bdneq- bdnge+ bdnge-
bdngt+ bdngt- bdnle+ bdnle-
bdnlt+ bdnlt- bdnne+ bdnne-
bdnns+ bdnns- bdnso+ bdnso-
bdnz+ bdnz- bdnza+ bdnza-
bdnzf+ bdnzf- bdnzfa+ bdnzfa-
bdnzfl+ bdnzfl- bdnzfla+ bdnzfla-
bdnzflr+ bdnzflr- bdnzflrl+ bdnzflrl-
bdnzl+ bdnzl- bdnzla+ bdnzla-
bdnzlr+ bdnzlr- bdnzlrl+ bdnzlrl-
bdnzt+ bdnzt- bdnzta+ bdnzta-
bdnztl+ bdnztl- bdnztla+ bdnztla-
bdnztlr+ bdnztlr- bdnztlrl+ bdnztlrl-
bdz+ bdz- bdza+ bdza-
bdzeq+ bdzeq- bdzf+ bdzf-
bdzfa+ bdzfa- bdzfl+ bdzfl-
bdzfla+ bdzfla- bdzflr+ bdzflr-
bdzflrl+ bdzflrl- bdzge+ bdzge-
bdzgt+ bdzgt- bdzl+ bdzl-
bdzla+ bdzla- bdzle+ bdzle-
bdzlr+ bdzlr- bdzlrl+ bdzlrl-
bdzlt+ bdzlt- bdzne+ bdzne-
bdzns+ bdzns- bdzso+ bdzso-
bdzt+ bdzt- bdzta+ bdzta-
bdztl+ bdztl- bdztla+ bdztla-
bdztlr+ bdztlr- bdztlrl+ bdztlrl-
beq+ beq- beqa+ beqa-
beqctr+ beqctr- beqctrl+ beqctrl-
beql+ beql- beqla+ beqla-
beqlr+ beqlr- beqlrl+ beqlrl-
bf+ bf- bfa+ bfa-
bfctr+ bfctr- bfctrl+ bfctrl-
bfl+ bfl- bfla+ bfla-
bflr+ bflr- bflrl+ bflrl-
bge+ bge- bgea+ bgea-
bgectr+ bgectr- bgectrl+ bgectrl-
bgel+ bgel- bgela+ bgela-
bgelr+ bgelr- bgelrl+ bgelrl-
bgt+ bgt- bgta+ bgta-
bgtctr+ bgtctr- bgtctrl+ bgtctrl-
bgtl+ bgtl- bgtla+ bgtla-
bgtlr+ bgtlr- bgtlrl+ bgtlrl-
ble+ ble- blea+ blea-
blectr+ blectr- blectrl+ blectrl-
blel+ blel- blela+ blela-
blelr+ blelr- blelrl+ blelrl-
blt+ blt- blta+ blta-
bltctr+ bltctr- bltctrl+ bltctrl-
bltl+ bltl- bltla+ bltla-
bltlr+ bltlr- bltlrl+ bltlrl-
bne+ bne- bnea+ bnea-
bnectr+ bnectr- bnectrl+ bnectrl-
bnel+ bnel- bnela+ bnela-
bnelr+ bnelr- bnelrl+ bnelrl-
bng+ bng- bnga+ bnga-
bngctr+ bngctr- bngctrl+ bngctrl-
bngl+ bngl- bngla+ bngla-
bnglr+ bnglr- bnglrl+ bnglrl-
bnl+ bnl- bnla+ bnla-
bnlctr+ bnlctr- bnlctrl+ bnlctrl-
bnll+ bnll- bnlla+ bnlla-
bnllr+ bnllr- bnllrl+ bnllrl-
bns+ bns- bnsa+ bnsa-
bnsctr+ bnsctr- bnsctrl+ bnsctrl-
bnsl+ bnsl- bnsla+ bnsla-
bnslr+ bnslr- bnslrl+ bnslrl-
bnu+ bnu- bnua+ bnua-
bnuctr+ bnuctr- bnuctrl+ bnuctrl-
bnul+ bnul- bnula+ bnula-
bnulr+ bnulr- bnulrl+ bnulrl-
bnz+ bnz- bnza+ bnza-
bnzctr+ bnzctr- bnzctrl+ bnzctrl-
bnzl+ bnzl- bnzla+ bnzla-
bnzlr+ bnzlr- bnzlrl+ bnzlrl-
bso+ bso- bsoa+ bsoa-
bsoctr+ bsoctr- bsoctrl+ bsoctrl-
bsol+ bsol- bsola+ bsola-
bsolr+ bsolr- bsolrl+ bsolrl-
bt+ bt- bta+ bta-
btctr+ btctr- btctrl+ btctrl-
btl+ btl- btla+ btla-
btlr+ btlr- btlrl+ btlrl-
bun+ bun- buna+ buna-
bunctr+ bunctr- bunctrl+ bunctrl-
bunl+ bunl- bunla+ bunla-
bunlr+ bunlr- bunlrl+ bunlrl-
bz+ bz- bza+ bza-
bzctr+ bzctr- bzctrl+ bzctrl-
bzl+ bzl- bzla+ bzla-
bzlr+ bzlr- bzlrl+ bzlrl-