Wat is een filiaal?
Een vertakkingstabel is een methode om op efficiënte wijze programmabesturing over te dragen van het ene deel van een programma naar een ander, of naar een tweede programma dat dynamisch is geladen, door een tak van instructies te verzenden of door een schakelopdracht te implementeren. Deze methode, soms een springtabel genoemd, is afhankelijk van een reeks omstandigheden of voorwaarden om een sprong uit te voeren om een procedure te implementeren volgens een schakelinstructie van een C + compiler. Enkele van de belangrijkste voordelen van vertakkingstabellen zijn hun compacte codestructuur en een vermindering van de noodzaak om retourcodes afzonderlijk te testen bij het bepalen van de programmaflow.
In de jaren tachtig werden filiaaltafels op grote schaal gebruikt bij het programmeren van assemblagetalen. Ze worden nog steeds gebruikt in assemblageprogrammering voor de ontwikkeling van embedded systemen en besturingssystemen. Sinds de jaren negentig maken compiler-programmeertalen ook gebruik van de werking van vertakkingen.
Vertakkingstabellen bestaan uit een lijst met onvoorwaardelijke instructies die, gegeven invoer, aftakken naar andere bestemmingen. De meeste computerhardware kan deze instructies efficiënt uitvoeren. Soms kan de offset - in wezen de afstand tot de bestemming - worden toegevoegd aan een programmatellerregister dat vervolgens kan wijzen naar sets van aftakkingsinstructies of kan springen tussen sets van aftakkingsinstructies. Het enige dat nodig is om een vertakkingstabel te implementeren, is validatie van de invoercode, het transformeren van de gegevens in een offset en het vermenigvuldigen van de gegevens tot een gegeven instructielengte.
Ingebedde programmering maakt gebruik van vertakkingstabellen omdat ze geheugenefficiënter zijn dan het gebruik van machinecode of array-pointers. Ingebouwde besturingssystemen hebben geheugenbesparing nodig, en hoewel het tijdens de toegang tot de vertakkingstabel een kleine hoeveelheid prestaties kan kosten, zou elke functieoproep voor een virtuele methode evenveel prestaties kosten voor een stabiele werking. De beperkte CPU-toegang en geheugenbesparingen in ingebedde systemen hebben een vertakkingstabel nodig voor statische functiesets.
Compiler programmeertalen genereren indien nodig hun eigen vertakkingstabellen met behulp van zoeksleutels bij het optimaliseren van compilers. Sommige programmeurs kiezen ervoor om de compiler handmatig te helpen bij het genereren van contexttakken door de compiler in twee stappen voorwaardelijke parameters te geven van waaruit sleutels kunnen worden gezocht. In de eerdere jaren van het compileren van programma's waren de vertakkingstabelimplementatie de "GoTo" -opdrachten in Fortran-compilertalen. Branch-tabellen worden nog steeds gebruikt om wijzigingen in de programmastroom in compilertalen te implementeren of als een startpunt voor herhaalde instructiereeksen.