Thuc notes - Jump table (branch table)

Jump table

The jump table is a method to transfer program control to another code block using a table of branch or jump instructions.

jump table

It’s a table of code addresses, that can be indexed by selector value. We can use a selector to map to a code address and jump to the code block.

Approximate translation:

target = JumpTable[selector];
goto target;

The jump table can be used by the compiler to optimize switch-case in many programming languages. Each switch case is defined as its memory address in the table jump.

switch jump table

The selector can be calculated by data (input of switch-case) and transformed into an offset that is used at the selector in the jump table. The transform can be multiplying or shifting.

selector = start-address-of-jump-table + offset
offset = option-index * memory-size-one-address
option-index = transform(data)

If a static translate table is used, this multiplying can be performed manually or by the compiler, without any run time cost.