Branche indirecte
Une branche indirecte (également connu sous le nom de saut calculé par , saut indirect et saut enregistrer-indirect de ) est un type d'instruction de commande de programme actuelle dans quelques ensembles d'instruction de langage machine de du que plutôt que spécifiant l'adresse de la prochaine instruction au exécutent , comme dans une branche directe , l'argument spécifie où l'adresse est localisée. Ainsi un exemple pourrait être « de sauter indirect sur le registre du r1 » signifierait que la prochaine instruction d'être exécuté serait à l'adresse dont la valeur est dans le registre r1. L'adresse à sauter à n'est pas connue jusqu'à ce que l'instruction soit exécutée. Les branches indirectes peuvent également dépendre de la valeur d'un endroit de mémoire .
Une branche indirecte peut être utile pour faire une branche conditionnelle, particulièrement une branche de multi-manière. Par exemple, basé sur le programme le a entré , une valeur pourrait être recherché dans une table de saut de des indicateurs au code pour traiter les divers cas implicites par la valeur de données. La valeur des données a pu être ajoutée à l'adresse de la table, avec le résultat stocké dans un registre. Un saut indirect a pu alors être fait basé sur la valeur de ce registre, expédiant efficacement la commande de programme au code approprié à l'entrée.
D'une façon semblable, les instructions d'appel de la sous-routine peuvent être indirectes, avec l'adresse de la sous-routine à s'appeler spécifique dans un endroit de registre ou de mémoire.
Exemples :
SPARC : jmpl %o7
MIPS : jmpl %ra
X86 : jmp %eax
BRAS : PC de mouvements, r2
IA64 : br.few rp
ompu-prog-moignon .
| Random links: | Terry Reid | Hanekind cent | Rollins A. Emerson | Pont de Ventura | Rama_indirecta |