Einer Sprung-Tabelle kann entweder ein array von Zeigern auf Funktionen oder eine Reihe von Computer-code jump-Anweisungen. Wenn Sie ein relativ statisches set von Funktionen (wie system-Aufrufe oder virtuelle Funktionen für eine Klasse), dann erstellen Sie diese Tabelle einmal an und rufen Sie die Funktionen mit einem einfachen index in das array. Dies würde bedeuten, abrufen der Zeiger und das aufrufen einer Funktion oder springen auf den Maschinen-code abhängig von der Art der Tabelle verwendet.
Vorteile dies zu tun, in der embedded-Programmierung sind:
Indizes sind mehr Speicher effizienter als Maschinen-code oder Zeiger, es gibt also ein Potenzial für speicherintensive in eingeschränkten Umgebungen.
Für eine bestimmte Funktion der index stabil bleiben wird, und die änderung der Funktion erfordert lediglich den Austausch der Funktions-Zeiger.
Wenn kostet Sie ein klein wenig performance für den Zugriff auf die Tabelle, aber das ist nicht schlimmer als jede andere virtual function call.
Einer Sprung-Tabelle, auch bekannt als ein Zweig der Tabelle ist eine Reihe von Anweisungen, die alle bedingungslos Verzweigung zu einer anderen Stelle im code.
Können Sie von Ihnen denken, als ein Schalter (oder select) - Anweisung, wo alle die Fälle sind gefüllt:
Beachten Sie, dass es kein zurück mehr - der code, springt Sie auf ausführen wird, die Rückkehr, und es wird springen zurück zu, wo immer myjump genannt wurde.
Dies ist nützlich für state machines, wo Sie ausführen bestimmter code auf der Basis von state-variable. Es gibt viele, viele andere verwendet, aber dies ist eine der wichtigsten Verwendungen.
Es ist verwendet werden, wo Sie nicht wollen, Zeit zu verschwenden, das hantieren mit dem Stapel, und Sie speichern möchten code Raum. Es ist vor allem der Einsatz in interrupt-Handler, wo die Geschwindigkeit ist extrem wichtig, und die Peripherie, die den interrupt ausgelöst haben, ist nur bekannt durch eine einzelne variable. Dies ist ähnlich wie die Vektor-Tabelle, in der Prozessoren mit interrupt-Controller.
Einer Verwendung wäre unter einem $0.60 mikrocontroller und erzeugen ein composite - (TV -) signal für video-Anwendungen. die micro ist nicht mächtig - in der Tat ist es gerade noch schnell genug zu schreiben, jeder scan-Linie. Eine jump-Tabelle verwendet werden würde, um zu zeichnen, Zeichen, denn es würde zu lange dauern zum laden einer bitmap aus dem Speicher, und verwenden Sie eine for () - Schleife, schieben Sie die bitmap aus. Stattdessen gibt es einen separaten Klick auf das Brief-und scan-Linie, und dann 8 oder so Anweisungen, die tatsächlich schreiben die Daten direkt an den port.
Einer Sprung-Tabelle wird beschrieben hieraber kurz gesagt, es ist ein array von Adressen die CPU sollte springen, um basierend auf bestimmten Bedingungen. Als ein Beispiel, ein C switch-Anweisung wird oft als Sprung-Tabelle, wobei jeder Eintrag springen gehen Sie zu einem bestimmten "case" - label.
In embedded-Systemen, bei denen Speicher-Nutzung an einer Prämie ist, viele Konstrukte sind besser gedient werden, durch die Verwendung eines Sprung-Tabelle, anstatt mehr Speicher-intensive Methoden (wie eine riesige if-else-if).
In computer-Programmierung, ein Zweig
Tabelle (manchmal bekannt als ein Sprung
Tabelle) ist ein Begriff verwendet, um zu beschreiben, eine
die effizienteste Methode der übertragung von
Programmsteuerung (Verzweigungen) zu anderen
Teil eines Programms (oder einer anderen
Programm, eventuell dynamisch
geladen) mit einer Tabelle von Zweig
Anweisungen. Die branch-Tabelle
Konstruktion wird Häufig verwendet, wenn
Programmierung in Assembler, aber
kann auch vom compiler erzeugt.
... Die Verwendung von branch-Tabellen und andere Rohstoffe
Verschlüsselung der Daten wurde Häufig in den frühen
Tage Rechenzeit, wenn der Speicher war
teuer wurden die CPUs langsamer und
kompakte Darstellung der Daten-und
effiziente Auswahl der alternativen wurden
wichtig. Heutzutage sind Sie Häufig
in embedded Programmierung und
Betriebssystem-Entwicklung.
In anderen Worten, es ist ein nützliches Konstrukt zu verwenden, wenn Ihr system ist extrem Speicher und/oder CPU-limitiert, wie oft der Fall in einer embedded-Plattform.
In computer-Programmierung, ein Zweig
Tabelle (manchmal bekannt als ein Sprung
Tabelle) ist ein Begriff verwendet, um zu beschreiben, eine
die effizienteste Methode der übertragung von
Programmsteuerung (Verzweigungen) zu anderen
Teil eines Programms (oder einer anderen
Programm, eventuell dynamisch
geladen) mit einer Tabelle von Zweig
Anweisungen. Die branch-Tabelle
Konstruktion wird Häufig verwendet, wenn
Programmierung in Assembler, aber
kann auch vom compiler erzeugt.
Einer Verzweigungsseite besteht aus einem seriellen
Liste der bedingungslose Zweig
Anweisungen, der sich verzweigt in
über einen offset erstellt durch Multiplikation
ein sequentieller index mit der Anweisung
Länge (Anzahl von bytes im Speicher
besetzt von jedem Sprungbefehl).
Es macht Gebrauch von der Tatsache, dass die Maschine
code Anweisungen für Verzweigungen haben
fixe Länge und kann ausgeführt werden
extrem effizient von den meisten
hardware, und ist besonders nützlich, wenn
der Umgang mit raw-Daten-Werte, die
einfach umgerüstet werden, um sequentiell
index-Werte. Angesichts solcher Daten, eine
Zweig Tisch kann sehr
effizient; es besteht in der Regel aus der
folgende Schritte: Optional Validierung
die input-Daten zu gewährleisten, ist es
akzeptabel; die Umwandlung der Daten in
ein offset in der Filiale Tisch
in der Regel beinhaltet die Multiplikation bzw.
schalten Sie zu berücksichtigen, die
Unterricht Länge; und das verzweigen in
eine Adresse aus der Basis des
Tabelle und die erzeugten offset: dieser
oft mit einem Zusatz von
offset auf der Programm-Zähler
registrieren.
Springen, Tabellen, häufiger bekannt als eine Verzweigungsseite, sind in der Regel nur die Maschine.
Erstellt der compiler eine Liste aller labels in einem Assembler-Programm und verbindet alle Etiketten auf eine memory location. Eine jump-Tabelle ist ziemlich genau eine Referenz-Karte zu, wo eine Funktion oder variable oder was auch immer das label vielleicht, ist im Speicher gespeichert.
So, wie eine Funktion ausgeführt wird, es zu beenden springt zurück zu seiner vorherigen Position im Speicher oder springt zur nächsten Funktion, usw. an.
Ist und Wenn Ihr reden über das, was ich denke, Sie sind, Sie müssen nicht nur Sie in embedded-Systemen, sondern in jeder Art von kompiliert/interpretiert Umgebung.
Einer Sprung-Tabelle kann entweder ein array von Zeigern auf Funktionen oder eine Reihe von Computer-code jump-Anweisungen. Wenn Sie ein relativ statisches set von Funktionen (wie system-Aufrufe oder virtuelle Funktionen für eine Klasse), dann erstellen Sie diese Tabelle einmal an und rufen Sie die Funktionen mit einem einfachen index in das array. Dies würde bedeuten, abrufen der Zeiger und das aufrufen einer Funktion oder springen auf den Maschinen-code abhängig von der Art der Tabelle verwendet.
Vorteile dies zu tun, in der embedded-Programmierung sind:
Wenn kostet Sie ein klein wenig performance für den Zugriff auf die Tabelle, aber das ist nicht schlimmer als jede andere virtual function call.
InformationsquelleAutor der Antwort Josh Segall
Einer Sprung-Tabelle, auch bekannt als ein Zweig der Tabelle ist eine Reihe von Anweisungen, die alle bedingungslos Verzweigung zu einer anderen Stelle im code.
Können Sie von Ihnen denken, als ein Schalter (oder select) - Anweisung, wo alle die Fälle sind gefüllt:
Beachten Sie, dass es kein zurück mehr - der code, springt Sie auf ausführen wird, die Rückkehr, und es wird springen zurück zu, wo immer myjump genannt wurde.
Dies ist nützlich für state machines, wo Sie ausführen bestimmter code auf der Basis von state-variable. Es gibt viele, viele andere verwendet, aber dies ist eine der wichtigsten Verwendungen.
Es ist verwendet werden, wo Sie nicht wollen, Zeit zu verschwenden, das hantieren mit dem Stapel, und Sie speichern möchten code Raum. Es ist vor allem der Einsatz in interrupt-Handler, wo die Geschwindigkeit ist extrem wichtig, und die Peripherie, die den interrupt ausgelöst haben, ist nur bekannt durch eine einzelne variable. Dies ist ähnlich wie die Vektor-Tabelle, in der Prozessoren mit interrupt-Controller.
Einer Verwendung wäre unter einem $0.60 mikrocontroller und erzeugen ein composite - (TV -) signal für video-Anwendungen. die micro ist nicht mächtig - in der Tat ist es gerade noch schnell genug zu schreiben, jeder scan-Linie. Eine jump-Tabelle verwendet werden würde, um zu zeichnen, Zeichen, denn es würde zu lange dauern zum laden einer bitmap aus dem Speicher, und verwenden Sie eine for () - Schleife, schieben Sie die bitmap aus. Stattdessen gibt es einen separaten Klick auf das Brief-und scan-Linie, und dann 8 oder so Anweisungen, die tatsächlich schreiben die Daten direkt an den port.
-Adam
InformationsquelleAutor der Antwort Adam Davis
Einer Sprung-Tabelle wird beschrieben hieraber kurz gesagt, es ist ein array von Adressen die CPU sollte springen, um basierend auf bestimmten Bedingungen. Als ein Beispiel, ein C switch-Anweisung wird oft als Sprung-Tabelle, wobei jeder Eintrag springen gehen Sie zu einem bestimmten "case" - label.
In embedded-Systemen, bei denen Speicher-Nutzung an einer Prämie ist, viele Konstrukte sind besser gedient werden, durch die Verwendung eines Sprung-Tabelle, anstatt mehr Speicher-intensive Methoden (wie eine riesige if-else-if).
InformationsquelleAutor der Antwort Jim Buck
Wikipedia fasst es ganz gut zusammen:
In anderen Worten, es ist ein nützliches Konstrukt zu verwenden, wenn Ihr system ist extrem Speicher und/oder CPU-limitiert, wie oft der Fall in einer embedded-Plattform.
InformationsquelleAutor der Antwort Jason Etheridge
Aus Wikipedia:
InformationsquelleAutor der Antwort Eric Haskins
Springen, Tabellen, häufiger bekannt als eine Verzweigungsseite, sind in der Regel nur die Maschine.
Erstellt der compiler eine Liste aller labels in einem Assembler-Programm und verbindet alle Etiketten auf eine memory location. Eine jump-Tabelle ist ziemlich genau eine Referenz-Karte zu, wo eine Funktion oder variable oder was auch immer das label vielleicht, ist im Speicher gespeichert.
So, wie eine Funktion ausgeführt wird, es zu beenden springt zurück zu seiner vorherigen Position im Speicher oder springt zur nächsten Funktion, usw. an.
Ist und Wenn Ihr reden über das, was ich denke, Sie sind, Sie müssen nicht nur Sie in embedded-Systemen, sondern in jeder Art von kompiliert/interpretiert Umgebung.
Brian Gianforcaro
InformationsquelleAutor der Antwort Brian Gianforcaro
Sprung-Tabellen sind Häufig (aber nicht ausschließlich) in finite-state-machines machen Sie Daten-getrieben.
Statt verschachtelte switch/case
können Sie einen 2d-array oder eine Funktion Zeiger und rufen
handleEvent[state][event]
InformationsquelleAutor der Antwort Mawg