add L8.pdf and complement in 11.06
This commit is contained in:
52
notes/8.md
Normal file
52
notes/8.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# Dataflow Analysis
|
||||
|
||||
Optimization means improving resource utilization not changing what the program computes.
|
||||
Resource utilization means many things:
|
||||
* **Execution time**
|
||||
* Code size
|
||||
* Network messages sent.
|
||||
|
||||
## Basic Block (BB)
|
||||
|
||||
A BB is a maximum sequence of instructions with **no labels**, **no jumps**
|
||||
All instructions in a BB has fixed control flow.
|
||||
|
||||
## Control Flow Graph
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Entry --> A
|
||||
A[BB1] --> B[BB2]
|
||||
A --> C[BB3]
|
||||
B --> D[BB4]
|
||||
C --> D
|
||||
D --> E[BB5]
|
||||
E --> G[BB7]
|
||||
E --> F[BB6]
|
||||
G --> Exit
|
||||
F --> Exit
|
||||
```
|
||||
|
||||
## Local Optimization
|
||||
|
||||
### Algebraic Simplification
|
||||
|
||||
x := x + 0 -> x := 0
|
||||
y := y ** 2 -> y := y * y
|
||||
x := x * 8 -> x := x << 3
|
||||
x := x * 15 -> t := x << 4; x := t - x
|
||||
|
||||
### Constant Folding
|
||||
|
||||
x := 2 + 2 -> x := 4
|
||||
if 2 < 0 jump L -> nop
|
||||
if 2 > 0 jump L -> jump L
|
||||
|
||||
But Constant folding can be dangerous on cross-compilation (in precision).
|
||||
|
||||
|
||||
### Unreachable Code
|
||||
|
||||
### Dead Code Elimination
|
||||
|
||||
## Global Optimization
|
||||
Reference in New Issue
Block a user