-
Notifications
You must be signed in to change notification settings - Fork 0
/
Compilers.html
230 lines (184 loc) · 7.61 KB
/
Compilers.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Qingkai Shi's Homepage</title>
<meta name="keywords" content="Qingkai Shi, QingkaiShi, Pinpoint, Static Code Analyzer, Program Analysis and Testing">
<meta name="viewport" content="initial-scale=1, maximum-scale=3, minimum-scale=1, user-scalable=no">
<link rel="icon" type="image/x-icon" href="images/favicon.ico">
<link href="fontawesome/css/fontawesome.css" rel="stylesheet">
<link href="fontawesome/css/brands.css" rel="stylesheet">
<link href="fontawesome/css/solid.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css">
<link href="style.css" rel="stylesheet">
<script src="auto.js"></script>
</head>
<body>
<div id="container"><div id="main">
<h1>Compilers</h1>
<div id="content">
<p>The course designers and instructors deeply appreciate researchers in the
community for their inspiring works, which provide rich materials for developing
the course and advancing the research in this direction.<br />
<br />
<a href="/">Back to Homepage</a> · <a href="/Teaching.html">Previous Page</a></p>
<hr />
<div><br />
</div>
<div style="float:right; display:inline-block; margin:15px;"><img
src="/images/dragonbook.png" width="150px" /><br />
<strong>Fig 1. The textbook.</strong></div>
<p>Welcome to our comprehensive course on compilers! This course will delve into
the intricate world of programming language translation and execution. Compilers
are the backbone of modern software development, translating human-readable code
into machine-executable instructions. Whether you're a beginner or an
experienced developer looking to deepen your understanding, this course will
equip you with the knowledge and skills of designing, implementing, and
optimizing compilers.</p>
<p>Throughout this journey, we'll cover various topics, including lexical
analysis, syntax parsing, semantic analysis, code generation, and optimization
techniques. You'll learn about compiler architectures, compiler construction
tools, and practical strategies for building efficient compilers for various
programming languages.</p>
By the end of this course, you'll have a solid grasp of how compilers work under
the hood and gain practical experience through hands-on projects and
assignments. So, let's embark on this exciting exploration of compilers
together!
<p><strong>Prerequisites</strong>: Before registering for this course, a student
must check if he has basic knowledge of data structures, algorithms, and
fundamental programming languages such as C/C++ and Java.</p>
<h2 id="toc-lectures">Lectures</h2>
<p>The course slides are listed below. They cover most but selective parts of
the Dragon Book, with Chapter 11 intentionally excluded and much more not
covered in the textbook. Contact the instructor if you have any questions or
suggestions.</p>
<p>The course designers deeply appreciate instructors and researchers in the
community for their inspiring works, which provide rich materials for developing
the course slides.<br />
<br />
</p>
<table id="course-isre" class="tg" style="width:100%">
<thead>
<tr>
<th class="tg-fymr">Lectures</th>
<th class="tg-fymr">Materials</th>
</tr>
</thead>
<tr>
<td class="tg-0pky">Ch1/Ch2 Introduction to Compilers<br />
- Basic Concepts of Programming Languages and Compilers<br />
</td>
<td class="tg-0pky"><br />
<a href="https://box.nju.edu.cn/f/8363454c2d64416b8eb0/">Slides-1</a></td>
</tr>
<tr>
<td class="tg-0pky" colspan="2">
<center><strong>Front End</strong></center>
</td>
</tr>
<tr>
<td class="tg-0pky">Ch3 Lexical Analysis<br />
- DFA / DFA Minimization and Bisimulation / NFA / NFA → DFA<br />
- Regular Language and Expression / Pumping Lemma / Lexical Analysis</td>
<td class="tg-0pky"><br />
<a href="https://box.nju.edu.cn/f/4ba716d7e59d4d30950a/">Slides-1</a><br />
<a href="https://box.nju.edu.cn/f/48514e0e90a34b1db637/">Slides-2</a></td>
</tr>
<tr>
<td class="tg-0pky">Ch4 Syntax Analysis<br />
- Context-Free Language / Push-Down Automata / Pumping Lemma for CFL<br />
- Top-Down and LL Parsing / Precedence Climbing Parser</td>
<td class="tg-0pky"><br />
<a href="https://box.nju.edu.cn/f/f50e8630cbed4f0bb8b1/">Slides-1</a><br />
<a href="https://box.nju.edu.cn/f/b7f6e5a991664883b29c/">Slides-2</a></td>
</tr>
<tr>
<td class="tg-0pky">Ch5/Ch6 Intermediate Representation<br />
- Three Address Code / Syntax-Directed Definition / IR Generation<br />
- Translation into SSA / LLVM IR</td>
<td class="tg-0pky"><br />
<a href="https://box.nju.edu.cn/f/3df10fbbf20541f1bed3/">Slides-1</a><br />
<a href="https://box.nju.edu.cn/f/39890bfb28b0494abe03/">Slides-2</a></td>
</tr>
<tr>
<td class="tg-0pky" colspan="2">
<center><strong>Back End</strong></center>
</td>
</tr>
<tr>
<td class="tg-0pky">Ch7/Ch8 Target Code Generation<br />
- Memory Model / Instruction Selection / Peephole Optimization<br />
- Translation out of SSA<br />
- Local Register Allocation / Global Register Allocation</td>
<td class="tg-0pky"><br />
<a href="https://box.nju.edu.cn/f/dc3d5529ec894e6f91c3/">Slides-1</a><br />
<a href="https://box.nju.edu.cn/f/92035e6c343f49b19858/">Slides-2</a><br />
<a href="https://box.nju.edu.cn/f/f0a02e727b5a4c7a81c3/">Slides-3</a></td>
</tr>
<tr>
<td class="tg-0pky">Ch10 Instruction Scheduling<br />
- Scheduling Constraints / Local Scheduling / Global Scheduling</td>
<td class="tg-0pky"><br />
<a href="https://box.nju.edu.cn/f/74f0cf02030640018ce4/">Slides-1</a></td>
</tr>
<tr>
<td class="tg-0pky" colspan="2">
<center><strong>Middle End</strong></center>
</td>
</tr>
<tr>
<td class="tg-0pky">Ch9 Dataflow Analysis<br />
- Dataflow Analysis / Sparse Dataflow Analysis<br />
- Symbolic Execution / Satisfiability<br />
</td>
<td class="tg-0pky"><br />
<a href="https://box.nju.edu.cn/f/c2aa60827df648eea6ad/">Slides-1</a><br />
<a href="https://box.nju.edu.cn/f/795729530c8d4850b6c8/">Slides-2</a></td>
</tr>
<tr>
<td class="tg-0pky">Ch12 Interprocedural Analysis<br />
- Context Sensitivity / IFDS / CFL-Reachability<br />
- Pointer Analysis / Datalog-Based Analysis<br />
</td>
<td class="tg-0pky"><br />
<a href="https://box.nju.edu.cn/f/7b8e27d763aa457e8170/">Slides-1</a><br />
<a href="https://box.nju.edu.cn/f/28ee7beb81da4d31a754/">Slides-2</a></td>
</tr>
</table>
<div><br />
</div>
<h2 id="toc-labs">Labs</h2>
<p>(TBA)</p>
<h2 id="toc-grading-scheme">Grading Scheme</h2>
<p>(TBA)</p>
<h2 id="toc-teaching-assistants">Teaching Assistants</h2>
<p>(TBA)</p>
<h2 id="toc-online-discussion">Online Discussion</h2>
<p>(TBA)</p>
<h2 id="toc-office-hours">Office Hours</h2>
<p>By appointment. Feel free to email TAs or the instructors to claim a
time slot.</p>
<div><br />
</div>
<!-- by Texy2! --> </div>
</div></div>
<div id="footer-container">
<div id="footer">
Copyright 2024 Qingkai Shi. Last modified: 2024.10. <br>
<div id="edit">
<a href="./?edit=Compilers">Edit page</a> |
<a href="./cv.php" target="_blank">Edit resume</a> |
<a href="./fileupload.php" target="_blank">Upload files</a> |
<a href="./?edit=">Create new page</a> <br>
</div>
<br>
<a href='https://clustrmaps.com/site/1a3c7' title='Visit tracker' id='tracker-link'>
<img src='images/map_v2.png' id='tracker-img'/>
</a>
<div class="vl"></div>
<img src='images/QR.jpg' height=90px id='weixin-img'/>
</div>
<style onload="complete_load()"></style>
</div>
</body>
</html>