Co to jest tabela oddziałów?

Tablica rozgałęzień to metoda wydajnego przenoszenia sterowania programem z jednej części programu do innej lub do drugiego programu, który został załadowany dynamicznie, poprzez wysłanie rozgałęzienia instrukcji lub zaimplementowanie instrukcji switch. Ta metoda, czasami nazywana tabelą skoku, opiera się na zestawie okoliczności lub warunków do wykonania skoku w celu zaimplementowania procedury zgodnie z instrukcją switch z kompilatora C+. Niektóre z głównych zalet tabel rozgałęzień to ich zwarta struktura kodu oraz zmniejszenie konieczności indywidualnego testowania kodów powrotnych podczas określania przebiegu programu.

W latach 1980-tych tablice rozgałęzień były szeroko stosowane w programowaniu w języku asemblerowym. Są nadal używane w programowaniu w asemblerze dla systemów wbudowanych i rozwoju systemów operacyjnych. Od lat 1990. języki programowania kompilatorów również wykorzystywały funkcję tablicy rozgałęzień.

Tabele rozgałęzień składają się z listy bezwarunkowych instrukcji, które po podaniu danych wejściowych rozgałęziają się do innych miejsc docelowych. Większość sprzętu komputerowego może wydajnie wykonywać te instrukcje. Czasami przesunięcie — zasadniczo odległość do miejsca docelowego — można dodać do rejestru licznika programu, który może następnie wskazywać zestawy instrukcji rozgałęzień lub przeskakiwać między zestawami instrukcji rozgałęzień. Jedyne, co jest potrzebne do zaimplementowania tablicy rozgałęzień, to walidacja kodu wejściowego, przekształcenie danych na przesunięcie i pomnożenie danych do określonej długości instrukcji.

Programowanie osadzone wykorzystuje tabele rozgałęzień, ponieważ są one bardziej wydajne pod względem pamięci niż używanie kodu maszynowego lub wskaźników tablicowych. Wbudowane systemy sterowania wymagają oszczędności pamięci i chociaż może to kosztować niewielką ilość wydajności podczas dostępu do tabeli rozgałęzień, każde wywołanie funkcji metody wirtualnej kosztowałoby taką samą ilość wydajności dla stabilnego działania. Ograniczony dostęp do procesora i oszczędność pamięci w systemach wbudowanych wymagają tabeli rozgałęzień dla statycznych zestawów funkcji.

Języki programowania kompilatorów generują w razie potrzeby własne tabele rozgałęzień, korzystając z kluczy wyszukiwania w optymalizacji kompilatorów. Niektórzy programiści wybierają ręczne wspomaganie kompilatora w generowaniu kontekstowych tabel rozgałęzień, podając kompilatorowi dwustopniowe parametry warunkowe, z których można wyszukiwać klucze. We wcześniejszych latach kompilowania programów implementacją tabeli rozgałęzień były polecenia „GoTo” w językach kompilatora Fortran. Tabele rozgałęzień są nadal używane do wprowadzania zmian w przepływie programu w językach kompilatorów lub jako punkt wyjścia dla powtarzających się sekwencji instrukcji.