¿Qué es una tabla de ramas?

Una tabla de bifurcaciones es un método para transferir de manera eficiente el control del programa de una parte de un programa a otra, o a un segundo programa que se ha cargado dinámicamente, enviando una bifurcación de instrucciones o implementando una instrucción de conmutación. Este método, a veces llamado tabla de salto, se basa en un conjunto de circunstancias o condiciones para realizar un salto para implementar un procedimiento de acuerdo con una declaración de cambio de un compilador de C +. Algunas de las principales ventajas de las tablas de bifurcaciones son su estructura de código compacta y una reducción en la necesidad de probar los códigos de retorno individualmente al determinar el flujo del programa.

En la década de 1980, las tablas de ramas se usaban ampliamente en la programación en lenguaje ensamblador. Todavía se utilizan en la programación de ensamblajes para sistemas integrados y desarrollo de sistemas operativos. Desde la década de 1990, los lenguajes de programación de compiladores también han hecho uso del funcionamiento de tablas de bifurcaciones.

Las tablas de bifurcaciones consisten en una lista de instrucciones incondicionales que, dada la entrada, se bifurcan a otros destinos. La mayoría del hardware de la computadora puede ejecutar estas instrucciones de manera eficiente. A veces, el desplazamiento, esencialmente la distancia al destino, se puede agregar a un registro de contador de programa que luego puede apuntar a conjuntos de instrucciones de bifurcación o saltar entre conjuntos de instrucciones de bifurcación. Todo lo que se necesita para implementar una tabla de bifurcaciones es la validación del código de entrada, la transformación de los datos en un desplazamiento y la multiplicación de los datos a una longitud de instrucción determinada.

La programación incrustada usa tablas de ramas, ya que son más eficientes en memoria que el uso de código de máquina o punteros en matriz. Los sistemas de control integrados necesitan ese ahorro de memoria y, aunque puede costar una pequeña cantidad de rendimiento durante el acceso a la tabla de sucursales, cualquier llamada de función de método virtual costaría la misma cantidad de rendimiento para un funcionamiento estable. El acceso limitado a la CPU y el ahorro de memoria en los sistemas integrados necesitan una tabla de bifurcaciones para conjuntos de funciones estáticas.

Los lenguajes de programación de compiladores generan sus propias tablas de ramas cuando es necesario mediante el uso de claves de búsqueda para optimizar compiladores. Algunos programadores optan por ayudar manualmente al compilador con la generación de tablas de ramas en contexto, proporcionando al compilador parámetros condicionales de dos pasos desde los que buscar claves. En los primeros años de compilación de programas, la implementación de la tabla de ramas solía ser los comandos «GoTo» en los lenguajes de compilación de Fortran. Las tablas de rama todavía se utilizan para implementar cambios en el flujo del programa en los lenguajes de compilación o para ser un punto de partida para secuencias de instrucciones repetidas.