Qu'est-ce qu'une table de branchement?
Une table de branchement est une méthode pour transférer efficacement le contrôle de programme d'une partie d'un programme à un autre, ou à un second programme chargé de manière dynamique, en envoyant une branche d'instructions ou en implémentant une instruction switch. Cette méthode, parfois appelée table de sauts, repose sur un ensemble de circonstances ou de conditions pour effectuer un saut afin de mettre en oeuvre une procédure conformément à une instruction switch d'un compilateur C +. Certains des principaux avantages des tables de branchement sont leur structure de code compacte et la réduction de la nécessité de tester les codes de retour individuellement lors de la détermination du déroulement du programme.
Dans les années 1980, les tables de branchement étaient largement utilisées dans la programmation en langage assembleur. Ils sont toujours utilisés dans la programmation d'assemblages pour le développement de systèmes intégrés et de systèmes d'exploitation. Depuis les années 1990, les langages de programmation du compilateur utilisent également le fonctionnement des tables de branchement.
Les tables de branchement consistent en une liste d'instructions inconditionnelles qui, en fonction de l'entrée, sont dérivées vers d'autres destinations. La plupart du matériel informatique peut exécuter ces instructions efficacement. Parfois, le décalage - essentiellement la distance par rapport à la destination - peut être ajouté à un registre de compteur de programme qui peut ensuite pointer sur des ensembles d'instructions de branche ou sauter entre des ensembles d'instructions de branche. Pour mettre en œuvre une table de branchement, il suffit de valider le code d'entrée, de transformer les données en un décalage et de les multiplier à une longueur d'instruction donnée.
La programmation intégrée utilise des tables de branchement car leur efficacité mémoire est supérieure à celle du code machine ou des pointeurs en matrice. Les systèmes de contrôle embarqués nécessitent des économies de mémoire. Bien que cela puisse coûter un peu en performances lors de l’accès à la table de branche, tout appel de fonction de méthode virtuelle coûterait le même niveau de performance pour un fonctionnement stable. L'accès limité au processeur et les économies de mémoire dans les systèmes intégrés nécessitent une table de branche pour les ensembles de fonctions statiques.
Les langages de programmation des compilateurs génèrent leurs propres tables de branchement lorsque cela est nécessaire, à l'aide de clés de recherche permettant d'optimiser les compilateurs. Certains programmeurs choisissent d'assister manuellement le compilateur lors de la génération de tables de branchement en fonction du contexte en donnant au compilateur des paramètres conditionnels en deux étapes à partir desquels rechercher des clés. Au cours des premières années de compilation de programmes, l’implémentation de la table de branchement était auparavant celle des commandes "GoTo" dans les langages de compilation Fortran. Les tables de branchement sont toujours utilisées pour implémenter les changements de flux de programmes dans les langages du compilateur ou pour servir de point de départ à des séquences d'instructions répétées.