Vad är en grenstabell?
En grenstabell är en metod för att effektivt överföra programstyrning från en del av ett program till ett annat, eller till ett andra program som har laddats dynamiskt, genom att skicka en gren av instruktioner eller genom att implementera ett switch-uttalande. Denna metod, ibland kallad ett hoppbord, förlitar sig på en uppsättning omständigheter eller förhållanden för att utföra ett hopp för att implementera en procedur enligt ett switch-uttalande från en C + -kompilator. Några av de viktigaste fördelarna med grenstabeller är deras kompakta kodstruktur och en minskning av behovet av att testa returkoder individuellt vid bestämning av programflödet.
På 1980-talet användes grenstabeller i stor utsträckning i programmeringsspråk för montering. De används fortfarande i monteringsprogrammering för inbäddade system och utveckling av operativsystem. Sedan 1990-talet har kompileringens programmeringsspråk också använt filialtabellens funktion.
Filialtabeller består av en lista med ovillkorliga instruktioner som, givet input, förgrenar sig till andra destinationer. De flesta hårdvara kan utföra dessa instruktioner effektivt. Ibland kan förskjutningen - i huvudsak avståndet till destinationen - läggas till ett programräknaregister som sedan kan peka på uppsättningar av greninstruktioner eller hoppa mellan uppsättningar av greninstruktioner. Allt som är nödvändigt för att implementera en grenstabell är validering av inmatningskoden, omvandling av data till en förskjutning och multiplicering av data till en given instruktionslängd.
Inbyggd programmering använder grenstabeller eftersom de är mer minneseffektiva än att använda maskinkod eller matriserade pekare. Inbyggda styrsystem behöver det minnesbesparande, och även om det kan kosta en liten mängd prestanda under åtkomst till grenstabellen, skulle varje samtal för virtuell metodfunktion kosta samma prestanda för stabil funktion. Den begränsade CPU-åtkomsten och minnesbesparingarna i inbäddade system behöver en grenstabell för statiska funktionsuppsättningar.
Kompilatorprogrammeringsspråk genererar sina egna grenstabeller vid behov med hjälp av söktangenter för optimering av kompilatorer. Vissa programmerare väljer att manuellt hjälpa kompilatorn med kontekstgrenstabellgenerering genom att ge kompilatorn tvåstegs villkorade parametrar för att söka nycklar. Under de tidigare åren med sammanställning av program brukade grenstabellimplementeringarna vara "GoTo" -kommandona på Fortran-kompilatorspråk. Grentabeller används fortfarande för att implementera förändringar i programflödet i kompilatorspråk eller för att vara en utgångspunkt för upprepade instruktionssekvenser.