Check out my first novel, midnight's simulacra!
Compiler Design
From dankwiki
Control Flow
- A control flow graph is a multigraph G defined by vertices corresponding to basic blocks, and edges corresponding to transitions between those basic blocks.
- Basic block: Largest sequence of instructions that can only be entered via the first (leader) instruction, and only exited by the last instruction. The first instruction of the program is a leader, as is every target of a branch, and every instruction following a branch (including conditional branches and procedure returns) is a leader. An edge exists from block a to block b if and only if:
- either b immediately follows a, and a does not end in an unconditional branch,
- or a ends in a branch, and b is a target (note that an indirect branch might completely fragment the CFG!).
- Basic block: Largest sequence of instructions that can only be entered via the first (leader) instruction, and only exited by the last instruction. The first instruction of the program is a leader, as is every target of a branch, and every instruction following a branch (including conditional branches and procedure returns) is a leader. An edge exists from block a to block b if and only if: