In computer programming, a branch table or jump table is a method of transferring program control (branching) to another part of a program (or a different program that may have been dynamically loaded) using a table of branch or jump instructions. It is a form of multiway branch. The branch table construction is commonly used when programming in assembly language but may also be generated by compilers, especially when implementing optimized switch statements whose values are densely packed together.

Property Value
dbo:abstract
  • Eine Sprungtabelle (auch Verzweigungstabelle oder Sprungleiste genannt; englisch jump table) ist in der Programmierung eine Methode, bei der eine Verzweigung den Programmflusses durch eine Tabelle von Sprunganweisungen realisiert wird. (de)
  • En programación, se denomina tabla de saltos a un método eficiente de transferencia de control de programas saltando a otra parte del código mediante una tabla de instrucciones de salto. Este sistema es utilizado normalmente en la programación en ensamblador aunque estas tablas también pueden ser generadas por un compilador. Una tabla de saltos consiste en una lista de instrucciones de que se ejecutan utilizando un offset creado mediante la multiplicación de un índice por la longitud de la instrucción (los bytes que ocupa en memoria cada instrucción). Se basa en el hecho de que las instrucciones de salto en código máquina tienen una longitud fija y pueden ser ejecutadas de forma extremadamente eficiente por la mayoría del hardware, además de ser más útil cuando se trabaja con datos sin formato fácilmente convertibles a valores secuenciales de índice. Dados estos datos, una tabla de saltos suele ser bastante eficiente, siguiendo normalmente estos pasos: opcional de los datos de entrada, transformación de los mismos en un offset dentro de la tabla de saltos (esto suele necesitar multiplicarlos o desplazarlos para su longitud coincida con las instrucciones de salto) y salto a una dirección obtenida a partir de la base de la tabla y el offset generado (esta operación suele incluir la suma del offset al registro del contador de programa). Otro método de implementación de las tablas de saltos consiste en un array de direcciones desde las cuales es capturada la dirección necesaria para saltar. Este método suele implicar un menor tamaño del código y evita los saltos indirectos. Normalmente el método empleado para construir la tabla de saltos suele venir determinada por la arquitectura del procesador en el cual va a ser ejecutado el código. Las tablas de saltos suelen usarse en el desarrollo de sistemas operativos. Tanto las llamadas al sistema como las funciones de biblioteca pueden ser referenciadas mediante un índice entero de una tabla de saltos. Con esto se consigue una mejora de la compatibilidad con las versiones siguientes: si el código de una función y la dirección de su destino de salto son modificados, solamente hará falta reajustar la instrucción de salto en la tabla, de este modo todas las aplicaciones compiladas utilizando código de la biblioteca y/o sistema operativo en cuestión no necesitan modificación alguna. Además, las llamadas a funciones por su número (el índice en la tabla) pueden ser útiles en ciertos programas. (es)
  • In computer programming, a branch table or jump table is a method of transferring program control (branching) to another part of a program (or a different program that may have been dynamically loaded) using a table of branch or jump instructions. It is a form of multiway branch. The branch table construction is commonly used when programming in assembly language but may also be generated by compilers, especially when implementing optimized switch statements whose values are densely packed together. (en)
  • テーブルジャンプは計算機プログラムの制御方式の一つである。テーブルジャンプに使用するテーブルをジャンプテーブルと呼ぶ。 ジャンプ命令を実行する際、ジャンプ先の番地(アドレス)を予め表の形でメモリに記憶させておき、それを参照してジャンプする方式。自己書き換えなどのテクニックと併用して使われる。複数の分岐先がある場合でも、短時間でジャンプが可能となる。 高級言語にもジャンプテーブルによる実装を考慮したものがあった。Pascalのcase文が変数に順序型のみを許容しているのが一例である。 UNIX系オペレーティングシステムのダイナミックリンクライブラリは、ロードされるアドレスが固定されていない。このため一種のテーブルジャンプでライブラリ内のサブルーチンにジャンプするようになっている。実行プログラムをロードした当初、そのジャンプテーブルは全てローダー(loader)にジャンプするように設定されている。ローダーはジャンプに使用されたテーブルのエントリに対応するライブラリルーチンにジャンプするのだが、その際にジャンプテーブル自身を書き換えて次回のコールからは直接ライブラリルーチンにジャンプするように変更する。 カーネルモードで実行されるデバイスドライバやファイルシステムもテーブルジャンプを使用してカーネル本体とのインターフェイスを実装していることが多い。open()、close()、read()、write()といったシステムコールの処理は最終的に個別のドライバやファイルシステムのコードを呼び出す。しかし、いずれも種類が豊富であるし、カーネルにリンクして構成されない場合もあるため、直接呼び出すことはできず、テーブルジャンプで呼び出すようになっている。例えば、UNIX系では仮想ファイルシステムが個別のファイルシステムのサブルーチンを登録するジャンプテーブルを管理する。ただし、この種の実装では単なる配列にアドレスを登録するのではなく、ドライバやファイルシステムの管理データ構造にジャンプテーブルが格納されている。従って、これはオブジェクト指向でいうカプセル化やポリモーフィズムに近い。 (ja)
  • 컴퓨터 프로그래밍에서, 분기 테이블(branch table) 또는 점프 테이블(jump table)은 분기나 점프 명령어들을 이용해서, 프로그램의 제어를 프로그램의 다른 부분으로 옮기는 방법이다. 이것은 의 형태이다. 분기 테이블 구조는 주로 Switch 문을 구현하는, 컴파일러에 의해 생성된 어셈블리어 프로그램에 사용된다. (ko)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 6894800 (xsd:integer)
dbo:wikiPageLength
  • 15875 (xsd:integer)
dbo:wikiPageRevisionID
  • 986590583 (xsd:integer)
dbo:wikiPageWikiLink
dbp:wikiPageUsesTemplate
dct:subject
rdf:type
rdfs:comment
  • Eine Sprungtabelle (auch Verzweigungstabelle oder Sprungleiste genannt; englisch jump table) ist in der Programmierung eine Methode, bei der eine Verzweigung den Programmflusses durch eine Tabelle von Sprunganweisungen realisiert wird. (de)
  • In computer programming, a branch table or jump table is a method of transferring program control (branching) to another part of a program (or a different program that may have been dynamically loaded) using a table of branch or jump instructions. It is a form of multiway branch. The branch table construction is commonly used when programming in assembly language but may also be generated by compilers, especially when implementing optimized switch statements whose values are densely packed together. (en)
  • 컴퓨터 프로그래밍에서, 분기 테이블(branch table) 또는 점프 테이블(jump table)은 분기나 점프 명령어들을 이용해서, 프로그램의 제어를 프로그램의 다른 부분으로 옮기는 방법이다. 이것은 의 형태이다. 분기 테이블 구조는 주로 Switch 문을 구현하는, 컴파일러에 의해 생성된 어셈블리어 프로그램에 사용된다. (ko)
  • En programación, se denomina tabla de saltos a un método eficiente de transferencia de control de programas saltando a otra parte del código mediante una tabla de instrucciones de salto. Este sistema es utilizado normalmente en la programación en ensamblador aunque estas tablas también pueden ser generadas por un compilador. (es)
  • テーブルジャンプは計算機プログラムの制御方式の一つである。テーブルジャンプに使用するテーブルをジャンプテーブルと呼ぶ。 ジャンプ命令を実行する際、ジャンプ先の番地(アドレス)を予め表の形でメモリに記憶させておき、それを参照してジャンプする方式。自己書き換えなどのテクニックと併用して使われる。複数の分岐先がある場合でも、短時間でジャンプが可能となる。 高級言語にもジャンプテーブルによる実装を考慮したものがあった。Pascalのcase文が変数に順序型のみを許容しているのが一例である。 UNIX系オペレーティングシステムのダイナミックリンクライブラリは、ロードされるアドレスが固定されていない。このため一種のテーブルジャンプでライブラリ内のサブルーチンにジャンプするようになっている。実行プログラムをロードした当初、そのジャンプテーブルは全てローダー(loader)にジャンプするように設定されている。ローダーはジャンプに使用されたテーブルのエントリに対応するライブラリルーチンにジャンプするのだが、その際にジャンプテーブル自身を書き換えて次回のコールからは直接ライブラリルーチンにジャンプするように変更する。 (ja)
rdfs:label
  • Sprungtabelle (de)
  • Branch table (en)
  • Tabla de saltos (es)
  • テーブルジャンプ (ja)
  • 분기 테이블 (ko)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageDisambiguates of
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is rdfs:seeAlso of
is foaf:primaryTopic of