www.wikidata.de-de.nina.az
Eine Sprungtabelle auch Verzweigungstabelle oder Sprungleiste genannt englisch jump table ist in der Programmierung eine Methode bei der eine Verzweigung des Programmflusses durch eine Tabelle von Sprunganweisungen realisiert wird Inhaltsverzeichnis 1 Einsatzzwecke 1 1 Nutzung fur Funktionsaufrufe 2 Switch Anweisung 3 Implementierung 4 BeispieleEinsatzzwecke BearbeitenNutzung fur Funktionsaufrufe Bearbeiten Eine Sprungtabelle kann genutzt werden um eine bestimmte Auswahl von Funktionen aus einem Betriebssystem oder aus einer Funktionsbibliothek bequem und kompatibilitatssicher aufrufen zu konnen Dazu sind die Aufrufe oder manchmal auch nur die nackten Funktionsadressen mit konstanter Lange hintereinander wie in einer Tabelle im Speicher angeordnet Sie bestehen typischerweise aus einfachen Sprungbefehlen an die Stelle im ROM oder innerhalb der Funktionsbibliothek wo der eigentliche Programmcode steht Auf diese Weise werden mehrere Zwecke gleichzeitig erfullt Man erreicht dadurch Kompatibilitat zwischen aufeinanderfolgenden Softwareversionen Auch wenn sich der eigentliche Code einer oder mehrerer Funktionen verandert und sich die Adresslage der Funktionseinsprunge dadurch andert wird nur die Adresse in den Sprungbefehlen der Sprungtabelle geandert wogegen die Anwendungssoftware die diese Sprungtabelle benutzt eben nicht angepasst werden muss Man kann diese Funktionen praktisch uber eine Nummer ihren Index innerhalb der Tabelle ansprechen was die Programmierung in bestimmten Bereichen vereinfacht Manche Mikroprozessoren unterstutzen solche Konstrukte auch durch spezielle Befehle die solche indizierten Sprunge implementieren Switch Anweisung BearbeitenSprungtabellen konnen auch durch Compiler erzeugt werden hauptsachlich bei der optimierten Implementierung von Switch Anweisungen bei denen die Werte eng zusammen liegen Implementierung BearbeitenImplementierungsprinzip einer Programmbibliothek in 6502 Assembler Syntax Bibliotheksbasis JMP Funktion0 Sprungleiste JMP Funktion1 Jede dieser Sprunganweisungen JMP Funktion2 belegt genau 3 Bytes im ROM JMP Funktionn Funktion0 Implementierung Funktion 0 RTS Rucksprung aus Funktionsroutine Funktion1 Implementierung Funktion 1 RTS Rucksprung aus Funktionsroutine Funktionn Implementierung Funktion n RTS Rucksprung aus Funktionsroutine Aufruf einer Funktion n aus so einer Bibliothek uber ihre Nummer JSR Bibliotheksbasis 3 n Bei einem 68k Prozessor belegt ein Sprungbefehl 6 statt 3 Bytes entsprechend muss im Aufruf dann mit 6 multipliziert werden Auf Hochsprachenebene erledigt die jeweilige Laufzeitbibliothek die Umrechnung eines Funktionsnamens oder einer nummer in so einen Sprungbefehl Hier erkennt man auch den Vorteil der Methode Wird bei einer Uberarbeitung der Funktionsbibliothek beispielsweise die Implementierung der Funktion1 erweitert so dass sie mehr Raum im ROM belegt verschieben sich die Einsprungspunkte der hoheren Funktionsnummern nach hinten Die Sprungleiste ganz am Beginn andert ihre Struktur aber nicht so dass auch der Aufruf aus dem Anwendungsprogramm nicht geandert werden muss Beispiele Bearbeiten nbsp Sprungtabelle des CBM KernalsDas Betriebssystem des Commodore PET 2001 und seiner Nachfolger bis hin zum C64 hatte am Ende seines ROMs so eine Sprungtabelle fur die wichtigsten Betriebssystemaufrufe Beispielsweise stand in allen genannten Betriebssystemen auf Adresse FFD2 ein Sprung in die Routine zur Ausgabe eines einzelnen Zeichens das im Akkumulator zu ubergeben war auf den Bildschirm Die Shared Libraries Funktionsbibliotheken des AmigaOS verfugen alle an ihrem Anfang uber so eine Sprungtabelle uber die standardmassig alle Aufrufe ihrer Funktionen erfolgen Abgerufen von https de wikipedia org w index php title Sprungtabelle amp oldid 204767707