Skip to content

Commit

Permalink
- revise CFG part
Browse files Browse the repository at this point in the history
  • Loading branch information
whtoo committed Dec 5, 2023
1 parent 0dab3c3 commit 0523e16
Showing 1 changed file with 120 additions and 64 deletions.
184 changes: 120 additions & 64 deletions ep20/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,71 +34,127 @@ graph LR

### CFG


- Original CFG
```mermaid
graph TD
subgraph L0
Q112
end
subgraph L2
Q0["t0 = 10 ;"]
Q1["@0 = t0;"]
Q2["jmp L4;"]
end
subgraph L3
Q3["t0 = @0;"]
Q4["t1 = 0 ;"]
Q5["t0 GT t1;"]
Q6["jmpIf t0,L5,L6;"]
end
subgraph L4
Q7["t0 = @0;"]
Q8["t1 = 5 ;"]
Q9["t0 GT t1;"]
Q10["jmpIf t0,L7,L8;"]
end
subgraph L5
Q11["t0 = @0;"]
Q12["call print(args:1);"]
Q13["t0 = @0;"]
Q14["t1 = 7 ;"]
Q15["t0 EQ t1;"]
Q16["jmpIf t0,L9,L10;"]
end
subgraph L6
Q17["t0 = 7 ;"]
Q18["jmp L3;"]
end
subgraph L7
Q000
end
subgraph L8
Q19["t0 = 'break' ;"]
Q20["call print(args:1);"]
Q21["t0 = @0;"]
Q22["call dec1(args:1);"]
Q23["@0 = t0;"]
Q24["jmp L4;"]
end
subgraph L9
Q25["t0 = 0 ;"]
Q26["jmp L3;"]
end
subgraph L10
Q27["halt;"]
end
L0 --> L4
L4 --> L5
L4 --> L6
L5 --> L7
L5 --> L8
L7 --> L0
L7 --> L9
L9 --> L3
L9 --> L10
L10 --> L8
L8 --> L4
L8 --> L6
L6 --> L3
subgraph L9
Q0["t0 = 7 ;"]
Q1["jmp L3;"]
end
subgraph L8
Q2["t0 = 'break' ;"]
Q3["call print(args:1);"]
Q4["t0 = @0;"]
Q5["call dec1(args:1);"]
Q6["@0 = t0;"]
Q7["jmp L4;"]
end
subgraph L7
Q8["t0 = @0;"]
Q9["call print(args:1);"]
Q10["t0 = @0;"]
Q11["t1 = 7 ;"]
Q12["t0 EQ t1;"]
Q13["jmpIf t0,L9,L8;"]
end
subgraph L6
Q14["t0 = 0 ;"]
Q15["jmp L3;"]
end
subgraph L5
Q16["t0 = @0;"]
Q17["t1 = 5 ;"]
Q18["t0 GT t1;"]
Q19["jmpIf t0,L7,L8;"]
end
subgraph L4
Q20["t0 = @0;"]
Q21["t1 = 0 ;"]
Q22["t0 GT t1;"]
Q23["jmpIf t0,L5,L6;"]
end
subgraph L3
Q24["halt;"]
end
subgraph L2
Q25[".def main: args=0 ,locals=1;"]
Q26["t0 = 10 ;"]
Q27["@0 = t0;"]
Q28["jmp L4;"]
end
L2 --> L4
L2 --> L4
L4 --> L6
L4 --> L5
L5 --> L8
L5 --> L7
L7 --> L8
L7 --> L9
L9 --> L3
L9 --> L8
L8 --> L4
L8 --> L6
L6 --> L3
L6 --> L3
```

- Optimized CFG
```mermaid
graph TD
subgraph L9
Q0["t0 = 7 ;"]
Q1["jmp L3;"]
end
subgraph L8
Q2["t0 = 'break' ;"]
Q3["call print(args:1);"]
Q4["t0 = @0;"]
Q5["call dec1(args:1);"]
Q6["@0 = t0;"]
Q7["jmp L4;"]
end
subgraph L7
Q8["t0 = @0;"]
Q9["call print(args:1);"]
Q10["t0 = @0;"]
Q11["t1 = 7 ;"]
Q12["t0 EQ t1;"]
Q13["jmpIf t0,L9,L8;"]
end
subgraph L6
Q14["t0 = 0 ;"]
end
subgraph L5
Q15["t0 = @0;"]
Q16["t1 = 5 ;"]
Q17["t0 GT t1;"]
Q18["jmpIf t0,L7,L8;"]
end
subgraph L4
Q19["t0 = @0;"]
Q20["t1 = 0 ;"]
Q21["t0 GT t1;"]
Q22["jmpIf t0,L5,L6;"]
end
subgraph L3
Q23["halt;"]
end
subgraph L2
Q24[".def main: args=0 ,locals=1;"]
Q25["t0 = 10 ;"]
Q26["@0 = t0;"]
end
L2 --> L4
L4 --> L6
L4 --> L5
L5 --> L8
L5 --> L7
L7 --> L8
L7 --> L9
L9 --> L3
L9 --> L8
L8 --> L4
L8 --> L6
L6 --> L3
```

0 comments on commit 0523e16

Please sign in to comment.