目录
1 introduction
1.1 language processors
1.2 the structure of a compiler
1.3 the evolution of programming languages
1.4 the science of building a compiler
1.5 applications of compiler technology
1.6 programming language basics
1.7 summary of chapter 1
1.8 references for chapter 1
2 a simple syntax-directed translator
2.1 introduction
2.2 syntax definition
2.3 syntax-directed translation
2.4 parsing
2.5 a translator for simple expressions
2.6 lexical analysis
2.7 symbol tables
2.8 intermediate code generation
2.9 summary of chapter 2
3 lexical analysis
3.1 the role of the lexical analyzer
3.2 input buffering
3.3 specification of tokens
3.4 recognition of tokens
3.5 the lexical-analyzer generator lex
3.6 finite automata
3.7 from regular expressions to automata
3.8 design of a lexical-analyzer generator
3.9 optimization of dfa-based pattern matchers
3.10 summary of chapter 3
3.11 references for chapter 3
4 syntax analysis
4.1 introduction
4.2 context-free grammars
4.3 writing a grammar
4.4 top-down parsing
4.5 bottom-up parsing
4.6 introduction to lr parsing: simple lr
4.7 more powerful lr parsers
4.8 using ambiguous grammars
4.9 parser generators
4.10 summary of chapter 4
4.11 references for chapter 4
5 syntax-directed translation
5.1 syntax-directed definitions
5.2 evaluation orders for sdd's
5.3 applications of syntax-directed translation
5.4 syntax-directed translation schemes
5.5 hnplementing l-attributed sdd's
5.6 summary of chapter 5
5.7 references for chapter 5
6 intermediate-code generation
6.1 variants of syntax trees
6.2 three-address code
6.3 types and declarations
6.4 translation of expressions
6.5 type checking
6.6 control flow
6.7 backpatching
6.8 switch-statements
6.9 intermediate code for procedures
6.10 summary of chapter 6
6.11 references for chapter 6
7 run-time environments
7.1 storage organization
7.2 stack allocation of space
7.3 access to nonlocal data on the stack
7.4 heap management
7.5 introduction to garbage collection
7.6 introduction to trace-based collection
7.7 short-pause garbage collection
7.8 advanced topics in garbage collection
7.9 summary of chapter 7
7.10 references for chapter 7
8 code generation
8.1 issues m the design of a code generator
8.2 the target language
8.3 addresses in the target code
8.4 basic blocks and flow graphs
8.5 optimization of basic blocks
8.6 a simple code generator
8.7 peephole optimization
8.8 register allocation and assignment
8.9 instruction selection by tree rewriting
8.10 optimal code generation for expressions
8.11 dynamic programming code-generation
8.12 summary of chapter 8
8.13 references for chapter 8
9 machine-independent optimizations
9.1 the principal sources of optimization
9.2 introduction to data-flow analysis
9.3 foundations of data-flow analysis
9.4 constant propagation
9.5 partial-redundancy elimination
9.6 loops in flow graphs
9.7 region-based analysis
9.8 symbolic analysis
9.9 summary of chapter 9
9.10 references for chapter 9
10 instruction-level parallelism
10.1 processor architectures
10.2 code-scheduling constraints
10.3 basic-block scheduling
10.4 global code scheduling
10.5 software pipelining
10.6 summary of chapter 10
10.7 references for chapter 10
11 optimizing for parallelism and locality
11.1 basic concepts
11.2 matrix multiply: an in-depth example
11.3 iteration spaces
11.4 aftlne array indexes
11.5 data reuse
11.6 array data-dependence analysis
11.7 finding synchronization-free parallelism
11.8 synchronization between parallel loops
11.9 pipelining
11.10 locality optimizations
11.11 other uses of affine transforms
11.12 summarv of chapter 11
11.13 references for chapter 11
12 interprocedural analysis
12.1 basic concepts
12.2 why interprocedural analysis?
12.3 a logical representation of data flow
12.4 a simple pointer-analysis algorithm
12.5 context-insensitive interprocedural analysis
12.6 context-sensitive pointer analysis
12.7 datalog implementation by bdd's
12.8 summary of chapter 12
12.9 references for chapter 12
a a complete front end
a.1 the source language
a.2 main
a.3 lexical analyzer
a.4 symbol tables and types
a.5 intermediate code for expressions
a.6 jumping code for boolean expressions
a.7 intermediate code for statements
a.8 parser
a.9 creating the front end
b finding linearly independent solutions
index
【展开】
【收起】
内容简介
本书是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”。本书上一版自1986年出版以来,被世界各地的著名高等院校和研究机构(包括美国哥伦比亚大学、斯坦福大学、哈佛大学、普林斯顿大学、贝尔实验室)作为本科生和研究生的编译原理课程的教材。该书对我国高等计算机教育领域也产生了重大影响。 第2版对每一章都进行了全面的修订,以反映自上一版出版20多年来软件工程。程序设计语言和计算机体系结构方面的发展对编译技术的影响。本书全面介绍了编译器的设计,并强调编译技术在软件设计和开发中的广泛应用。每章中都包含大量的习题和丰富的参考文献。 本书适合作为高等院校计算机专业本科生和研究生的编译原理与技术课程的教材,也可供广大计算机技术人员参考。
【展开】
【收起】
下载说明
1、追日是作者栎年创作的原创作品,下载链接均为网友上传的的网盘链接!
2、相识电子书提供优质免费的txt、pdf等下载链接,所有电子书均为完整版!
下载链接
热门评论
-
一只迷妹小号的评论考完编译原理本来心情超郁闷的,去ktv唱了出道神曲之后整个人又活过来了[赞][doge]
-
邑大吐槽的评论编译原理考试: “还剩下半小时” “excuse me ???”
-
灯里灯哒的评论好好的数据库就这样成了编译原理。中间代码优化。。有毒。。嗯。就是这样。 长春·吉大南校(商圈...
-
_初音没有来_的评论想写一篇关于计算机科学工程的长长长文章,就当是给自己的本科做个总结了。也许会涉及到如下领域:离散数学,数据结构与算法,可计算理论,模拟电路,数字逻辑与系统设计,计算机系统组成,操作系统,编程语言和编译原理,信号与系统,通信原理,计算机网络基础,等等。其实写不写都无所谓了[doge]
-
异动的脉搏的评论编译原理弃疗了,明天看命了,劳资要把这些天缺的择天记补上[泪][泪][泪]
-
sky要好好写代码的评论写编译原理想起来以前写的科学计算器。。。把字符串解析成数字/函数名/运算符是词法分析,把解析完的一坨东西搞成逆波兰式是语法分析,然后扔进栈里算就算出结果来或者闪退[doge]然而我还是想说为啥这么恶心。。。[拜拜]
-
大柠ning的评论祝我生日快乐~#大柠的开心事#考完编译原理就马上出去浪,提前吃了蛋糕 明天考毛概,今天就安心刷题吧今天带了大杨送我的手表[害羞]
-
仝晓晓小文的评论“这雪碧喝着没味阿” “阿?雪碧没味是什么原理?” “编译原理” 快疯了,学的脑壳脑仁疼[拜拜][拜拜] 南京·秣陵街区
-
猫小猫Killua的评论[兔子]#猫小猫破次元墙备战ing#[兔子] 好吧。今天没学习。改了编译原理实验报告。说实话。写完了之后真的就不想再写了。本来还想那么喜欢编译原理老师希望可以考个好成绩给老师留个好印象。但是考试没考好被while循环给坑了之后就没心情了。反正考不好了也不想管了。哎。毕竟以考研为
-
充满热情的执迷鲸鱼的评论借了一本编译原理,今天开始看,发现根本看不下去[doge][doge]。浓浓的数学风味,离散数学。我的天,书名涉及到xx原理的都是难死的。