Mis on harutabel?

Harutabel on meetod programmi juhtimise tõhusaks ülekandmiseks ühest programmi osast teise või teise programmi, mis on dünaamiliselt laaditud, saates käskude haru või rakendades lülituslause. See meetod, mida mõnikord nimetatakse hüpatabeliks, tugineb asjaolude või tingimuste kogumile, et sooritada hüpe, et rakendada protseduuri vastavalt C+-kompilaatori lülituslausele. Harutabelite peamisteks eelisteks on nende kompaktne koodistruktuur ja vähenenud vajadus testida programmivoo määramisel eraldi tagastuskoode.

1980. aastatel kasutati haru tabeleid laialdaselt assemblerkeeles programmeerimisel. Neid kasutatakse endiselt manussüsteemide koosteprogrammeerimisel ja operatsioonisüsteemide arendamiseks. Alates 1990. aastatest on kompilaatorite programmeerimiskeeled kasutanud ka haru tabelite toimimist.

Harutabelid koosnevad tingimusteta juhiste loendist, mis sisendi korral hargnevad teistesse sihtkohtadesse. Enamik arvuti riistvara suudab neid juhiseid tõhusalt täita. Mõnikord saab nihke – sisuliselt kauguse sihtkohani – lisada programmi loenduri registrisse, mis võib seejärel osutada harukäskude komplektidele või hüpata harukäskude komplektide vahel. Haru tabeli rakendamiseks on vaja ainult sisendkoodi valideerimist, andmete teisendamist nihkeks ja andmete korrutamist etteantud käsu pikkusega.

Manustatud programmeerimine kasutab haru tabeleid, kuna need on mälutõhusamad kui masinkoodi või massiivi osutite kasutamine. Manustatud juhtimissüsteemid vajavad seda mälu kokkuhoidu ja kuigi see võib harutabelisse juurdepääsu ajal maksta vähesel määral jõudlust, maksaks iga virtuaalse meetodi funktsiooni kutsumine stabiilse toimimise jaoks sama palju jõudlust. Manussüsteemide piiratud protsessori juurdepääs ja mälu kokkuhoid vajavad staatiliste funktsioonikomplektide jaoks haru tabelit.

Kompilaatorite programmeerimiskeeled genereerivad vajaduse korral oma haru tabeleid, kasutades kompilaatorite optimeerimisel otsinguklahve. Mõned programmeerijad otsustavad abistada kompilaatorit kontekstipõhise haru tabeli genereerimisel käsitsi, andes kompilaatorile võtmete otsimiseks kaheastmelised tingimuslikud parameetrid. Varasematel programmide koostamise aastatel kasutati Fortrani kompilaatorikeeltes haru tabelite juurutamiseks käske “GoTo”. Harutabeleid kasutatakse endiselt kompilaatorikeeltes programmivoo muudatuste rakendamiseks või korduvate käsujadade lähtepunktiks.