Thuc notes - Jump table (branch table)
The jump table is a method to transfer program control to another code block using a table of branch or jump instructions.
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.
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.
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 = jump-table-address + offset offset = option-index * memory 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.