业界专家学者倾力推荐,龙书作者Monica老师,清华大学王生原老师,CSDN暨《程序员》杂志总编刘江老师对本书给予高度评价,认为该书内容简明,容易上手,又不失全面和系统,填补了编译实践领域的空白。
编写编译器用到的知识之广是编写一般程序所无法比拟的,通过本书你将学到编译原理,数据结构与算法,C语言、Intelx86汇编语言、机器语言,目标文件格式,可执行文件格式等知识内容,是计算机专业基础课程内容的综合运用。
被广大读者看作编译原理课程zui佳配套用书,该书大大降低了学写编译器的门槛,破解了编译原理学习缺乏合适实践用例的难题。
王博俊、张宇编*的《自己动手写编译器链接器》讲述了一个真实编译器的开发过程,源语言是以C语言为蓝本,进行适当简化定义的一门新语言,称之为SC语言(简化的C语言),目标语言是大家熟悉的Intelx86机器语言。在本书中,读者将看到从SC语言定义,到SCC编译器开发的完整过程。本书介绍的SCC编译器,没有借助Lex与Yacc这些编译器自动生成工具,纯手工编写而成,*便于学习和理解。为了生成可以直接运行EXE文件,本书还实现了一个链接器。读完本书读者将知道一门全新的语言如何定义,一个真实的编译器、链接器如何编写。
本书适合各类程序员、程序开发爱好者阅读,也可作为高等院校编译原理课程的实践教材。
第1章引言
1.1HelloWorld编译过程分析
1.1.1HelloWorld程序源文件
1.1.2词法分析
1.1.3语法分析
1.1.4语义分析
1.1.5链接器
1.2SCC编译器简介
1.2.1SCC编译器架构
1.2.2SCC编译器开发环境
1.2.3SCC编译器运行环境
第2章文法知识
2.1语言概述
2.2形式语言
2.2.1字母表和符号串
2.2.2文法与语言的形式定义
2.2.3文法与语言的类型
2.2.4程序设计语言描述工具
2.3词法分析方法
2.3.1词法定义例举
2.3.2状态转换图
2.3.3词法分析程序流程图
2.4语法分析方法
2.4.1LL分析器
2.4.2LL(k)文法
2.4.3LL(1)文法
2.4.4递归子程序法
2.4.5文法的等价变换
...
第5章SC语言语法分析
第6章符号表
第7章生成COFF目标文件
第8章x86机器语言
第9章SCC语义分析
第10章链接器
第11章SC语言程序开发
参考文献
附录ASC语言文法定义中英文对照表
因为工作的关系,我经常和各企业的技术负责人交流。话题谈着谈着常常会转到他们目前共同的难题——技术人员招聘。这时不少人都会感慨,中国能做系统软件开发的技术人员太少,这方面的人太难找了。随着中国企业的发展,做系统和平台的需求不断增加,这种供需矛盾将越来越明显。
究其原因,很容易想到的是我们的高校教育、课程设置。美国顶尖大学计算机系基础课程教学里都非常重视项目实践,操作系统课往往要真的开发一个像模像样的操作系统原型,编译器课也真的要自己设计并实现一门有创新性的小语言……
在计算机科学的各门课程中,编译器的设计实践有着特殊的重要性。“龙书”的主要作者、哥伦比亚大学教授AlfredV.Aho曾经列举过编译器实践有诸多好处:
�r能让学生领悟到理论与实践的完美结合。比如编译原理所涵盖的正则表达式和自动机,在各种场合的应用是极其广泛的,对正则的掌握程度,从某种意义上讲甚至可以作为技术人员水平的一种尺度。
�r深入探索计算思维的多样性。与人类语言一样,不同类型的编程语言其实代表了不同的思维方式。只用过命令式语言的人可能没有想到,开启了大数据领域的Map与Reduce,其实在函数式语言是一种非常常见的东西。
的确,深入了解编译器和编译原理,对于技术人员更好地理解和掌握自己最常用的语言和系统,从而提升自己的内力是有极大好处的。另一方面,随着DSL(领域特定语言)的流行,需要技术人员开发自己语言的机会也越来越多。
然而,编译原理是计算机科学里公认比较难的一门课。虽然目前国外比较重要的编译理论教材(比如龙书的《编译原理》、虎书《现代编译原理》的C语言和Java版本、鲸书《高级编译器设计与实现》)基本上都有了中文版和英文影印版,但这些书往往更偏重理论,而且门槛较高,不太适合指导一线技术人员实践和自学。我认识的一位美籍华人技术专家RonaldMak在Wiley出版过一本基于Java的“WritingCompilersandInterpreters”,比较贴近实践,但部头较大,而且没有看到中文版。
偶然的机会,我得知王博俊在工作之余,写了一本以简化的C语言为例子讲述编译器和链接器实践的书。浏览了初稿之后,感觉全书内容简明,容易上手,又不失全面和系统,正好弥补了这方面的空白。特向大家推荐。
CSDN暨《程序员》杂志总编刘江
2015年1月
...
有志者,事竟成,破釜沉舟,百二秦关终属楚;
苦心人,天不负,卧薪尝胆,三千越甲可吞吴。
王博俊
2015年1月
《自己动手写编译器、链接器》这本书,我早就心心念念了,听说它能让我把那些黑箱子一样的编译和链接过程一层层剥开,就像学徒拜师一样,跟着书里的步骤一步步敲代码,感受从源代码到可执行文件的神奇蜕变。我特别期待它能带领我深入理解C语言这种底层语言是如何被翻译成机器能懂的指令的,还有那些听起来就很神秘的汇编语言,是不是会在书中以一种清晰易懂的方式呈现?我一直对计算机底层原理充满好奇,尤其是那些让程序能够运行起来的幕后英雄——编译器和链接器。很多时候,我们只是简单地调用一下`gcc`或者`clang`,然后看到编译成功,却不知道背后发生了多么精密的计算和转换。这本书的题目本身就充满了吸引力,"自己动手写"这几个字,就足以激发我想要挑战一下的冲动。我想象着,通过这本书,我能够真正掌握这些核心技术,而不是仅仅停留在表面。如果它能提供一些实际的、可运行的例子,并且解释清楚每一步背后的逻辑,那我简直就太幸运了。我甚至有点期待,读完之后,我能对现有的编译工具产生更深的理解,甚至能够针对某些特定场景进行优化或者修改。总之,这本书对于任何一个想深入理解计算机系统运作机制的程序员来说,都绝对是不可错过的宝藏。
评分我一直对编程语言的底层实现原理感到着迷,特别是编译器和链接器这两个我很少接触但又至关重要的组件。市面上关于编程语言的书籍很多,但大多数都集中在语言本身的使用和特性上,而真正深入讲解编译器和链接器如何工作的却相对较少。当我看到《自己动手写编译器、链接器》这个书名时,我感到眼前一亮。我特别希望这本书能够带领我理解一个高级语言(例如C语言或者Python的一个简化子集)是如何被解析、转换,最终生成可执行文件的。这包括词法分析、语法分析、抽象语法树的构建、中间代码的生成、以及最终的机器码生成。我渴望了解编译器内部的优化技术,以及它们是如何影响最终生成代码的性能。同时,我也对链接器的作用非常好奇,比如它如何解决符号引用、如何将多个目标文件合并成一个可执行文件,以及静态链接和动态链接的区别和实现。我期待这本书能够提供清晰的理论讲解,并且辅以大量的代码示例,让我能够亲手实践,一步一步地构建属于自己的编译器和链接器。我希望通过这本书,能够对计算机系统底层运作有一个更深刻、更直观的理解。
评分我一直以来都对计算机底层运作原理有着浓厚的兴趣,尤其是当今大部分人已经习惯于使用高级语言和现成的工具,很少有人会去深入了解这些工具是如何诞生的。这本书的题目《自己动手写编译器、链接器》瞬间就抓住了我的眼球。我想要的是那种能够让我真正理解"是什么"、"为什么"、"怎么做"的书。我期待这本书能够深入讲解编译器的工作流程,比如从词法分析到语法分析,再到语义分析、中间代码生成、代码优化以及最终的目标代码生成。我希望能够清晰地看到源代码是如何一步一步被解析、转换,最终变成机器能够执行的指令的。同时,我也对链接器的工作原理非常感兴趣,比如符号表、重定位、内存布局等等。我希望这本书能够提供一些关于这两个核心组件的全面、系统性的讲解,并且能够辅以大量的代码示例,让我能够跟随作者一起,从零开始构建一个简单的编译器和链接器。我非常看重这本书的实践性,如果能够让我亲手实现一些关键模块,并理解它们在整个流程中的作用,那将是对我最有价值的学习方式。
评分我购买《自己动手写编译器、链接器》的初衷,其实是因为在工作项目中遇到了一个棘手的性能瓶颈,而我怀疑这个瓶颈可能与编译器生成的代码效率有关。我希望通过深入了解编译器是如何将高级语言转化为机器码的,能够找到优化的方向,甚至自己动手去探索一些更高效的编译策略。这本书如果能提供一些关于编译器优化技术的介绍,比如内联、循环展开、常量折叠等等,并且解释它们是如何影响最终代码性能的,那将对我非常有帮助。我尤其关心的是,它能否讲解一些关于链接器的工作原理,比如不同目标文件是如何被合并的,符号解析是如何进行的,以及静态链接和动态链接的优缺点。我希望书中能够提供一些实际的案例,展示如何在特定场景下,通过调整编译器选项或者理解链接过程来提升程序性能。我并不期望这本书能让我成为一个编译器设计专家,但至少希望它能让我对这些底层机制有一个更深刻的认识,能够在我遇到类似问题时,有一个更清晰的思路去分析和解决。如果它还能涉及到一些现代编译器的一些新特性或者发展趋势,那更是锦上添花了。
评分这本书在我购物车里躺了很久,我一直犹豫着要不要下手。坦白说,我不是一个计算机科学科班出身的人,我对编译原理和链接过程的理解,很大程度上还停留在一些模糊的概念层面,比如词法分析、语法分析、代码生成这些名词,虽然听过,但具体是怎么一回事,就一知半解了。我特别担心这本书的难度会超出我的接受范围,毕竟"写编译器、写链接器"听起来就是一件非常高深莫测的事情。我希望这本书能够用一种非常平实、非常适合初学者的语言来讲解,尽量避免过于晦涩的学术术语,或者即便有,也能用生动形象的比喻来解释清楚。我想要的是那种手把手的指导,让我能够跟着书中的例子,一步一步地去实现,而不是看完一堆理论就束手无策。如果它能从最基础的LLVM或者GCC的某个简单子集入手,循序渐进地带领我构建一个能够处理简单语言的编译器,那简直就是我的福音了。我非常期待它能提供一些完整的代码示例,让我可以直接编译和运行,并且详细地解释每一行代码的作用,以及它们是如何协同工作的。对我来说,这本书最大的价值就在于能否让我真正"动手"起来,而不是停留在"纸上谈兵"。
评分书本很好 喜欢 一直在京东买书
评分质量不错,就是没时间看
评分书有点皱,纸张一般,软塌塌的,凑合用。
评分好好好好好好好好好好好
评分好好好好好好好好好好好
评分好!!!!!!!!!!
评分好书好书好书好书好书好书
评分质量不错,就是没时间看
评分书的质量不错,也很实用,内容也很清晰,不错。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有