Was ist eine Branchentabelle?
Eine Verzweigungstabelle ist eine Methode, um die Programmsteuerung effizient von einem Programmteil auf einen anderen oder auf ein zweites dynamisch geladenes Programm zu übertragen, indem ein Befehlszweig gesendet oder eine switch-Anweisung implementiert wird. Diese Methode, die manchmal als Sprungtabelle bezeichnet wird, basiert auf einer Reihe von Umständen oder Bedingungen, um einen Sprung auszuführen und eine Prozedur gemäß einer switch-Anweisung eines C + -Compilers zu implementieren. Einige der Hauptvorteile von Verzweigungstabellen sind ihre kompakte Codestruktur und die Verringerung der Notwendigkeit, Rückgabecodes bei der Bestimmung des Programmflusses einzeln zu testen.
In den 1980er Jahren wurden in der Assembler-Programmierung häufig Verzweigungstabellen verwendet. Sie werden weiterhin in der Assembly-Programmierung für die Entwicklung eingebetteter Systeme und Betriebssysteme verwendet. Seit den 1990er Jahren nutzen Compiler-Programmiersprachen auch die Funktion von Branch-Tables.
Verzweigungstabellen bestehen aus einer Liste bedingungsloser Anweisungen, die bei Eingabe zu anderen Zielen verzweigen. Die meiste Computerhardware kann diese Anweisungen effizient ausführen. Manchmal kann der Versatz - im Wesentlichen die Entfernung zum Ziel - zu einem Programmzählerregister hinzugefügt werden, das dann auf Sätze von Verzweigungsbefehlen zeigen oder zwischen Sätzen von Verzweigungsbefehlen springen kann. Alles, was zur Implementierung einer Verzweigungstabelle erforderlich ist, ist die Validierung des Eingabecodes, die Umwandlung der Daten in einen Offset und die Multiplikation der Daten mit einer bestimmten Befehlslänge.
Die eingebettete Programmierung verwendet Verzweigungstabellen, da sie speichereffizienter sind als die Verwendung von Maschinencode oder Array-Zeigern. Eingebettete Steuerungssysteme benötigen diese Speichereinsparungen, und obwohl dies beim Zugriff auf die Verzweigungstabelle eine geringe Leistung kostet, würde jeder Funktionsaufruf einer virtuellen Methode dieselbe Leistung für eine stabile Funktion kosten. Der eingeschränkte CPU-Zugriff und die Speichereinsparungen in eingebetteten Systemen erfordern eine Verzweigungstabelle für statische Funktionssätze.
Compiler-Programmiersprachen generieren bei Bedarf eigene Verzweigungstabellen mithilfe von Suchschlüsseln zur Optimierung von Compilern. Einige Programmierer unterstützen den Compiler manuell bei der Generierung kontextbezogener Verzweigungstabellen, indem sie dem Compiler zweistufige bedingte Parameter zum Suchen von Schlüsseln zuweisen. In den früheren Jahren des Kompilierens von Programmen waren die Verzweigungstabellenimplementierungen die "GoTo" -Befehle in Fortran-Compilersprachen. Verzweigungstabellen werden weiterhin verwendet, um Änderungen im Programmablauf in Compilersprachen umzusetzen oder Ausgangspunkt für wiederholte Befehlsfolgen zu sein.