Engineering A Compiler

发布于 2022-09-23 13:55:06 字数 55 浏览 26 评论 0

prolj很推荐的一本书,我刚才把它下载下来了。
我估计暂时是没有时间看了,想看的朋友可以下一下。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

以往的大感动 2022-09-30 13:55:06

把它的目录贴一下:

1 An Overview of Compilation 1
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Principles and Desires . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 High-level View of Translation . . . . . . . . . . . . . . . . . . . 5
1.4 Compiler Structure . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Summary and Perspective . . . . . . . . . . . . . . . . . . . . . . 17

2 Lexical Analysis 19
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Specifying Lexical Patterns . . . . . . . . . . . . . . . . . . . . . 20
2.3 Closure Properties of REs . . . . . . . . . . . . . . . . . . . . . . 23
2.4 Regular Expressions and Finite Automata . . . . . . . . . . . . . 24
2.5 Implementing a DFA . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6 Non-deterministic Finite Automata . . . . . . . . . . . . . . . . . 29
2.7 FromRegular Expression to Scanner . . . . . . . . . . . . . . . . 33
2.8 Better Implementations . . . . . . . . . . . . . . . . . . . . . . . 40
2.9 Related Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.10 Lexical Follies of Real Programming languages . . . . . . . . . . 48
2.11 Summary and Perspective . . . . . . . . . . . . . . . . . . . . . . 51

3 Parsing 53
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2 Expressing Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.3 Top-DownParsing . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.4 Bottom-up Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.5 Building an LR(1) parser . . . . . . . . . . . . . . . . . . . . . . 81
3.6 Practical Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.7 Summary and Perspective . . . . . . . . . . . . . . . . . . . . . . 102

4 Context-Sensitive Analysis 105
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.2 The Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.3 Attribute Grammars . . . . . . . . . . . . . . . . . . . . . . . . . 107
4.4 Ad-hoc Syntax-directed Translation . . . . . . . . . . . . . . . . 116
4.5 What Questions Should the CompilerAsk? . . . . . . . . . . . . 127
4.6 Summary and Perspective . . . . . . . . . . . . . . . . . . . . . . 128

5 Type Checking 131

6 Intermediate Representations 133
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
6.2 Taxonomy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.3 Graphical IRs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
6.4 Linear IRs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.5 Mapping Values to Names . . . . . . . . . . . . . . . . . . . . . . 148
6.6 Universal Intermediate Forms . . . . . . . . . . . . . . . . . . . . 152
6.7 Symbol Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.8 Summary and Perspective . . . . . . . . . . . . . . . . . . . . . . 161

7 The Procedure Abstraction 165
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
7.2 Control Abstraction . . . . . . . . . . . . . . . . . . . . . . . . . 168
7.3 Name Spaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.4 CommunicatingValues Between Procedures . . . . . . . . . . . . 178
7.5 Establishing Addressability . . . . . . . . . . . . . . . . . . . . . 182
7.6 Standardized Linkages . . . . . . . . . . . . . . . . . . . . . . . . 185
7.7 ManagingMemory . . . . . . . . . . . . . . . . . . . . . . . . . . 188
7.8 Object-oriented Languages . . . . . . . . . . . . . . . . . . . . . . 199
7.9 Summary and Perspective . . . . . . . . . . . . . . . . . . . . . . 199

8 Code Shape 203
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
8.2 Assigning Storage Locations . . . . . . . . . . . . . . . . . . . . . 205
8.3 Arithmetic Expressions . . . . . . . . . . . . . . . . . . . . . . . 208
8.4 Boolean and RelationalValues . . . . . . . . . . . . . . . . . . . 215
8.5 Storing andAccessing Arrays . . . . . . . . . . . . . . . . . . . . 224
8.6 Character Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
8.7 Structure References . . . . . . . . . . . . . . . . . . . . . . . . . 237
8.8 Control Flow Constructs . . . . . . . . . . . . . . . . . . . . . . . 241
8.9 Procedure Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
8.10 ImplementingObject-Oriented Languages . . . . . . . . . . . . . 249

9 Instruction Selection 251
9.1 TreeWalk Schemes . . . . . . . . . . . . . . . . . . . . . . . . . . 251
9.2 Aho & Johnson Dynamic Programming . . . . . . . . . . . . . . 251
9.3 Tree PatternMatching . . . . . . . . . . . . . . . . . . . . . . . . 251
9.4 Peephole-StyleMatching . . . . . . . . . . . . . . . . . . . . . . . 251
9.5 Bottom-up Rewrite Systems . . . . . . . . . . . . . . . . . . . . . 251
9.6 Attribute Grammars,Revisited . . . . . . . . . . . . . . . . . . . 252

10 Register Allocation 253
10.1 The Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
10.2 Local Register Allocation and Assignment . . . . . . . . . . . . . 258
10.3 Moving beyond single blocks . . . . . . . . . . . . . . . . . . . . 262
10.4 GlobalRegister Allocation and Assignment . . . . . . . . . . . . 266
10.5 RegionalRegister Allocation . . . . . . . . . . . . . . . . . . . . 280
10.6 Harder Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
10.7 Summary and Perspective . . . . . . . . . . . . . . . . . . . . . . 284

11 Instruction Scheduling 289
11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
11.2 The Instruction Scheduling Problem . . . . . . . . . . . . . . . . 290
11.3 Local List Scheduling . . . . . . . . . . . . . . . . . . . . . . . . 295
11.4 Regional Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . 304
11.5 More Aggressive Techniques . . . . . . . . . . . . . . . . . . . . . 311
11.6 Summary and Perspective . . . . . . . . . . . . . . . . . . . . . . 315

12 Introduction to Code Optimization 317
12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
12.2 Redundant Expressions . . . . . . . . . . . . . . . . . . . . . . . 318
12.3 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
12.4 ValueNumbering over Larger Scopes . . . . . . . . . . . . . . . . 323
12.5 Lessons fromValue Numbering . . . . . . . . . . . . . . . . . . . 323
12.6 Summary and Perspective . . . . . . . . . . . . . . . . . . . . . . 323
12.7 Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
12.8 Chapter Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

13 Analysis 325
13.1 Data-flowAnalysis . . . . . . . . . . . . . . . . . . . . . . . . . . 325
13.2 Building Static SingleAssignment Form . . . . . . . . . . . . . . 325
13.3 Dependence Analysis forArrays . . . . . . . . . . . . . . . . . . . 325
13.4 Analyzing Larger Scopes . . . . . . . . . . . . . . . . . . . . . . . 326

14 Transformation 329
14.1 Example Scalar Optimizations . . . . . . . . . . . . . . . . . . . 329
14.2 Optimizing Larger Scopes . . . . . . . . . . . . . . . . . . . . . . 329
14.3 Run-timeOptimization . . . . . . . . . . . . . . . . . . . . . . . 331
14.4 Multiprocessor Parallelism . . . . . . . . . . . . . . . . . . . . . . 331
14.5 Chapter Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

15 Post-pass Improvement Techniques 333
15.1 The Idea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
15.2 Peephole Optimization . . . . . . . . . . . . . . . . . . . . . . . . 333
15.3 Post-pass Dead Code Elimination . . . . . . . . . . . . . . . . . . 333
15.4 Improving Resource Utilization . . . . . . . . . . . . . . . . . . . 333
15.5 Interprocedural Optimization . . . . . . . . . . . . . . . . . . . . 333

A ILOC 335
B Data Structures 341
B.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
B.2 Representing Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
B.3 Implementing Intermediate Forms . . . . . . . . . . . . . . . . . 341
B.4 Implementing Hash-tables . . . . . . . . . . . . . . . . . . . . . . 341
B.5 Symbol Tables for Development Environments . . . . . . . . . . 350
C Abbreviations, Acronyms, and Glossary 353
D Missing Labels 357

じее 2022-09-30 13:55:06

原帖由 cjaizss 于 2009-1-1 16:53 发表
把它的目录贴一下:

不错.
如果能点评一下起个头更好.
或者哪位大侠针对性的说一个某方面的观点就可以引起讨论了(个人认为观点能雷人也行).

[ 本帖最后由 system888net 于 2009-1-1 18:16 编辑 ]

深巷少女 2022-09-30 13:55:06

这个电子版本的不全。
中译本,纸薄,字小,书厚。
期待大牛来点评吧。

合久必婚 2022-09-30 13:55:06

原帖由 prolj 于 2009-1-1 18:53 发表
这个电子版本的不全。
中译本,纸薄,字小,书厚。
期待大牛来点评吧。

可能版本不一样吧,这个是2003年的,如果你有新的电子版,也放上来吧.

童话 2022-09-30 13:55:06

发现书架上有,以前看过prolj  说作为一门编译入门书这本书比龙书好(虽然作为初学者,我不同意),
当时买的时候就是因为看见John Hennessy的评论
至于大牛, CU这方面比prolj  和 cjaizss 貌似从来没见过

淡淡的优雅 2022-09-30 13:55:06

没有,我看的是中译本。
作者说他的课程设计是修改GCC或者ORC的后端,如果有课程相关资料相信会更好。

渡你暖光 2022-09-30 13:55:06

中文的编译器的书,都看不懂呢

失与倦" 2022-09-30 13:55:06

原帖由 prolj 于 2009-1-1 18:53 发表
这个电子版本的不全。
中译本,纸薄,字小,书厚。
期待大牛来点评吧。

有全的英文版本没有?

独守阴晴ぅ圆缺 2022-09-30 13:55:06

没有找到过,中文的不妨碍理解,我觉得。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文