This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Indirect branch" – news · newspapers · books · scholar · JSTOR(May 2018) (Learn how and when to remove this message)
Machine code
General concepts
Instruction set
Opcode
Illegal opcode
Opcode table
Operand
Instructions
NOP
Branch
Indirect branch
Repeat instruction
Execute instruction
v
t
e
An indirect branch (also known as a computed jump, indirect jump and register-indirect jump) is a type of program control instruction present in some machine language instruction sets. Rather than specifying the address of the next instruction to execute, as in a direct branch, the argument specifies where the address is located. An example is 'jump indirect on the r1 register', which means that the next instruction to be executed is at the address in register r1. The address to be jumped to is not known until the instruction is executed. Indirect branches can also depend on the value of a memory location.
An indirect branch can be useful to make a conditional branch, especially a multiway branch. For instance, based on program input, a value could be looked up in a jump table of pointers to code for handling the various cases implied by the data value. The data value could be added to the address of the table, with the result stored in a register. An indirect jump could then be made based on the value of that register, efficiently dispatching program control to the code appropriate to the input.
In a similar manner, subroutine call instructions can be indirect, with the address of the subroutine to be called specified in memory. Function Pointers are typically implemented with indirect subroutine calls.
Indirect branches were one of the attack surfaces of Spectre. To mitigate the attack GCC 8.1 introduced the following new options: -mindirect-branch=, -mfunction-return= and -mindirect-branch-register.[1][nb 1]
^Cite error: The named reference GCC_2018_Spectre was invoked but never defined (see the help page).
Cite error: There are <ref group=nb> tags on this page, but the references will not show without a {{reflist|group=nb}} template (see the help page).
An indirectbranch (also known as a computed jump, indirect jump and register-indirect jump) is a type of program control instruction present in some...
Indirectbranch tracking (IBT), also known as branch target identification (BTI) is a control flow integrity mechanism implemented on some Intel x86-64...
nearly all cases the body that controls the executive branch (such as a cabinet) is elected indirectly. This includes the cabinets of most parliamentary systems;...
result in saving one machine instruction, and avoids the indirect jump (to one of the branch instructions). The resulting list of pointers to functions...
Conditionally branch to another location if a certain condition holds. Indirectlybranch to another location. Call another block of code, while saving the...
the first one. L2 BTB increased to 7K entries. Improved direct and indirectbranch predictors. OP cache size increased by 68%, to 6.75K OPs. The OP cache...
may refer to: International Business Reply Service, a postal service IndirectBranch Restricted Speculation, an extended feature flag for the x86 architecture...
of shifter ALUs 4 Load/Store Units 2 Integer pipe buffer size 48 Number of branch units 2 Indirectbranch units 1 Branch pipe buffer size 24 FP ALUs 3...
branch records (LBRs) Hypervisor-managed linear address translation (HLAT) Control-flow enforcement technology (CET), including support for indirect branch...
memory-indirect addressing could itself have an indirect flag set to indicate another memory indirect cycle. This flag is referred to as an indirection bit...
International Buddhist Confederation, Republic of India IBC Root Beer IndirectBranch Control, information returned by the CPUID instruction for the Intel...
CPU cores TAGE-like directional branch predictor (with a global history size of 194 taken branches) Indirectbranch tracking and CET shadow stack Intel...
Subprograms return to wherever they were called on that occasion using an indirectbranch through that first word of the subprogram. Placing the return address...
mobile network operator to process clients’ transactions. Rather than a branch teller, it is the owner or an employee of the retail outlet who conducts...
2018). Branch Target Injection (Technical report). Retrieved 2024-03-06. Two mitigation techniques have been developed ...: indirectbranch control mechanisms...
optimized branch predictor Sandy Bridge retains the four branch predictors found in Nehalem: the branch target buffer (BTB), indirectbranch target array...