返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:
本店所有商品

  • 正版图书 编译器之旅 打造自己的编程语言(微课视频版) 于东亮 清华大学出版社 浏览器 浏览器插件 前端技术
  • 新商品上架
    • 作者: 于东亮著
    • 出版社: 清华大学出版社
    • 出版时间:1
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    句字图书专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品分类

    商品参数
    • 作者: 于东亮著
    • 出版社:清华大学出版社
    • 出版时间:1
    • ISBN:9787302667223
    • 版权提供:清华大学出版社

     书名:  编译器之旅——打造自己的编程语言(微课视频版)
     出版社:  清华大学出版社
     出版日期  2024-08
     ISBN号:  9787302667223
    计算机技术开发与应用丛书
    编译器之旅
    打造自己的编程语言(微课视频版)
    于东亮著
    内 容 简 介本书以简单的算法、清晰的架构讲述了把高级语言转换成Linux程序的全过程,以及其中蕴含的数学原理。
    本书共12章,按照源码编译的顺序分为入门篇和进阶篇。入门篇(第1~4章)详细介绍词法分析、语法分析、语义分析,涵盖编译器前端的所有内容。进阶篇(第5~12章)进一步说明怎么把抽象语法树转换成可执行程序的全过程,包含三地址码的生成、中间代码优化、寄存器分配、机器码的生成、ELF文件格式、连接器和虚拟机的实现,以及作者对泛编译器问题的进一步思考。
    本书适合初学者学习编译原理,也可用作资深程序员在开发一门新语言时的技术资料,还可用作高等院校和培训机构的教学参考书。
    版权所有,侵权必究。举报: 01062782989,beiqinquan@tup.tsinghua.edu.cn。图书在版编目(CIP)数据
    编译器之旅 : 打造自己的编程语言 : 微课视频版 /
    于东亮著.  北京 : 清华大学出版社, 2024. 7.
    (计算机技术开发与应用丛书).  ISBN 9787302
    667223
    Ⅰ. TP312
    中国国家版本馆CIP数据核字第20247U6A14号
    责任编辑: 赵佳霓
    封面设计: 吴刚
    责任校对: 时翠兰
    责任印制: 沈露
    出版发行: 清华大学出版社
    网址: http://www.tup.com.cn,http://www.wqxuetang.com
    地址: 北京清华大学学研大厦A座邮编: 100084
    社总机: 01083470000邮购: 01062786544
    投稿与读者服务: 01062776969, cservice@tup.tsinghua.edu.cn
    质量反馈: 01062

     

    于东亮,SCF编译器作者,资深C程序员和FFmpeg工程师,毕业于天津大学,长期从事Linux下的编程工作。先后制作了“C语言技术内幕”“Linux环境的编程详解”“怎么用C语言写一个简单EDA”“编译器入门”等原创视频合集。本书为作者的第一部实体书,以SCF编译器为例讲述了一门高级语言的发明过程。

     

    本书以作者编写的SCF编译器框架为基础,以高级语言的编译连接过程为脉络,一步步的讲述了编译器的架构及其各模块的实现细节,详细展示了一门编程语言的开发过程,为初学者提供了一个编译器领域的入门途径。

     

    目录
    入门篇
    第1章编译器简介(19min)3
    1.1编程语言的发展史3
    1.2编译器在IT行业里的核心地位3
    1.3编译器的代码架构4
    第2章词法分析(34min)7
    2.1“理想语言”的词法分析7
    2.2实际编程语言的词法扩展8
    2.2.1编程语言的标志符9
    2.2.2关键字9
    2.2.3数字10
    2.2.4数据结构11
    2.3词法分析的数学解释12
    第3章语法分析(123min)14
    3.1语句类型的划分14
    3.2语句的嵌套和递归分析16
    3.2.1变量声明语句的分析16
    3.2.2类型定义语句的分析17
    3.2.3顺序块的分析18
    3.2.4表达式的分析18
    3.2.5运算符的优先级和结合性19
    3.2.6表达式树的构造步骤20
    3.2.7完整的抽象语法树20
    3.2.8抽象语法树的数据结构21
    3.2.9变量和类型的数据结构22
    3.2.10变量的语法检查23
    3.2.11星号和乘法的区分24
    3.3语法的灵活编辑和有限自动机框架24
    3.3.1有限自动机的简介24
    3.3.2语法的编辑25
    3.3.3编程语言的语法图26
    3.3.4SCF框架怎么实现“递归”27
    3.3.5语法分析框架的模块上下文29
    3.3.6for循环的语法分析模块30
    3.3.7小括号的多种含义36
    3.4语法分析的数学解释36
    第4章语义分析(72min)38
    4.1类型检查38
    4.2语义分析框架40
    4.2.1语义分析的回调函数40
    4.2.2语义分析中的递归43
    4.3运算符重载46
    4.3.1运算符重载的实现46
    4.3.2函数调用47
    4.3.3重载函数的查找47
    4.3.4代码实现48
    4.3.5SCF编译器的类对象51
    4.4new关键字51
    4.5多值函数55
    4.5.1应用程序二进制接口56
    4.5.2语法层面的支持56
    4.5.3语义层面的支持57
    进阶篇
    第5章三地址码的生成(84min)63
    5.1回填技术63
    5.1.1回填的数据结构63
    5.1.2三地址码的数据结构64
    5.1.3回填的步骤65
    5.2ifelse的三地址码65
    5.3循环的入口和出口68
    5.4指针与数组的赋值72
    5.5new关键字的三地址码74
    5.6跳转的优化77
    5.6.1跳转的优化简介77
    5.6.2逻辑运算符的短路优化78
    5.6.3死代码消除80
    5.6.4代码实现80
    第6章基本块的划分(19min)83
    6.1比较、跳转导致的基本块划分83
    6.2函数调用84
    6.3基本块的流程图84
    第7章中间代码优化(100min)86
    7.1代码框架86
    7.2内联函数88
    7.3有向无环图93
    7.3.1公共子表达式93
    7.3.2数据结构94
    7.3.3有向无环图的生成95
    7.4图的搜索算法97
    7.4.1基本块的数据结构97
    7.4.2宽度优先搜索98
    7.4.3深度优先搜索99
    7.5指针分析100
    7.5.1指针解引用的分析100
    7.5.2数组和结构体的指针分析106
    7.6跨函数的指针分析109
    7.7变量活跃度分析114
    7.7.1变量的活跃度114
    7.7.2单个基本块的变量活跃度分析115
    7.7.3基本块流程图上的分析117
    7.7.4代码实现118
    7.8自动内存管理120
    7.9DAG优化125
    7.9.1无效运算125
    7.9.2相同子表达式的判断126
    7.9.3出口活跃变量的优化126
    7.9.4后++的优化127
    7.9.5逻辑运算符的优化127
    7.9.6DAG优化的代码实现128
    7.10循环分析133
    7.10.1循环的识别133
    7.10.2循环的优化138
    第8章寄存器分配(23min)143
    8.1不同CPU架构的寄存器组143
    8.2变量之间的冲突144
    8.3图的着色算法148
    8.3.1简单着色算法148
    8.3.2改进的着色算法150
    第9章机器码的生成(103min)155
    9.1RISC架构的优势155
    9.2寄存器溢出155
    9.2.1寄存器的数据结构156
    9.2.2寄存器的冲突156
    9.2.3寄存器的溢出158
    9.3X86_64的机器码生成158
    9.3.1X86_64的机器指令158
    9.3.2机器码的生成160
    9.3.3目标文件176
    9.4ARM64的机器码生成180
    9.4.1指令特点180
    9.4.2机器码生成181
    第10章ELF格式和可执行程序的连接(94min)184
    10.1ELF格式184
    10.1.1文件头184
    10.1.2节头表186
    10.1.3程序头表188
    10.1.4ELF格式的实现190
    10.2连接器198
    10.2.1连接198
    10.2.2静态连接202
    10.2.3动态连接205
    10.2.4编译器的主流程215
    10.3可执行文件的运行219
    10.3.1进程创建219
    10.3.2程序的加载和运行220
    10.3.3动态库函数的加载221
    10.3.4源代码的编译、连接、运行222
    第11章Naja字节码和虚拟机(67min)224
    11.1Naja字节码224
    11.2虚拟机229
    11.2.1虚拟机的数据结构229
    11.2.2虚拟机的运行230
    11.2.3动态库函数的加载236
    第12章信息编码的数学哲学239
    12.1信息编码格式的转换239
    12.2多项式时间的算法241
    12.3自然指数e和梯度下降算法241
    12.4复杂问题的简单解法242

     

    前言
    随着芯片技术的高速发展,与之伴随的编译器开发在国内也迅速增多,但相关的技术资料却晦涩难懂。编译器领域由Alfred V. Aho等著的经典名著《编译原理》偏重理论,缺少示例代码,入门难度很高。开源项目LLVM和GCC的代码架构复杂且技术资料多为英文,不太适合初学者入门。作者根据自己对Linux和C/C++的长期使用经验编写了一个纯国产的简单编译器框架(Simple Compiler Framework,SCF),详细讲述了一门编程语言的开发过程,为初学者提供了一个编译器领域的入门途径。
    本书以作者编写的SCF编译器框架为基础,以高级语言的编译连接过程为脉络,一步步地讲述编译器的架构及其各模块的实现细节。
    本书主要内容
    第1章主要讲述编译器的发展史、应用场景和代码架构,让读者对该领域有个初步印象。
    第2章由浅入深地讲述词法分析模块的实现细节,以尽量简单通俗的方式引导读者入门。
    第3章抛开了编译理论,从实践的角度讲述怎么编写语法分析模块,展现把源代码转换成计算机可以理解的树形数据结构的过程。该树形数据结构即通常所讲的抽象语法树。
    第4章讲述语义分析和运算符重载的支持方法。
    第5章是三地址码的生成,讲述怎么把树形数据结构变成类似汇编的线性代码序列。
    第6章是基本块的划分,介绍编译器内部对程序流程的表示方式。
    第7章为中间代码优化,讲述编译器怎么生成简洁高效的代码和怎么支持自动内存管理。
    第8章介绍在不同类型的CPU上怎样为变量分配寄存器。
    第9章详细讲解X86_64的机器码生成过程,并简单描述ARM64的机器码生成过程。
    第10章以Linux为平台讲述连接器的编写和可执行程序的运行。
    第11章讲述脚本语言的字节码和虚拟机。
    第12章介绍泛编译器问题的数学模型及其简单解法,该章的最后两句为本书的总纲。
    阅读建议
    编译器属于计算机领域的核心技术


     

    1
    • 商品详情
    • 内容简介

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购