自制编译器
41推荐 收藏
54.7K阅读
图灵程序设计丛书

自制编译器

青木 峰郎 (作者) 严圣逸 , 绝云 (译者)
上市销售
请至“随书下载”下载本书试读样章和相关资料。
本书将带领读者从头开始制作一门语言的编译器。笔者特意为本书设计了C♭语言,C♭可以说是C语言的子集,实现了包括指针运算等在内的C语言的主要部分。本书所实现的编译器就是C♭语言的编译器, 是实实在在的编译器,而非有诸多限制的玩具。另外,除编译器之外,本书对以编译器为中心的编程语言的运行环境,即编译器、汇编器、链接器、硬件、运行时环境等都有所提及,介绍了程序运行的所有环节。

收藏本书能做什么?

有情况的时候会收到通知,比如电子书发布等。

电子书
¥49.99
格式
mobi   pdf

纸质书
¥78.21 ¥99.00

出版信息

  • 书  名自制编译器
  • 系列书名图灵程序设计丛书
  • 执行编辑关于本书的内容有任何问题,请联系 杜晓静
  • 出版日期2016-06-07
  • 书  号978-7-115-42218-7
  • 定  价99.00 元
  • 页  数472
  • 印刷方式黑白
  • 开  本16开
  • 出版状态上市销售
  • 原书名ふつうのコンパイラをつくろう
  • 原书号978-4797337952

所属分类

同系列书

  • HTTP权威指南

    David Gourley   Brian Totty   Marjorie Sayer   Sailu Reddy   Anshu Aggarwal   陈涓   赵振平   译

    本书是HTTP及其相关核心Web技术方面的权威著作,主要介绍了Web应用程序是如何工作的,核心的因特网协议如何...

  • JavaScript高级程序设计(第3版)

    Nicholas C.Zakas   李松峰   曹力   译

    本书是JavaScript超级畅销书的新版。ECMAScript 5 和HTML5在标准之争中双双胜出,使大量...

  • 计算机科学的基础

    Al Aho   Jeff Ullman   傅尔也   译

    本书全面而详细地阐述了计算机科学的理论基础,从抽象概念的机械化到各种数据模型的建立,用算法、数据抽象等核心思想...

  • Java技术手册(第6版)

    Benjamin J Evans   David Flanagan   安道   译

    通过学习本书,你将能够: 掌握最新的语言细节,包括Java 8的变化 使用基本的Java句法学习面向对...

  • 机器学习实战

    Peter Harrington   李锐   李鹏   曲亚东   王斌   译

    机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或...

本书特色

从零开始制作真正的编译器。
贯穿编译、汇编、链接、加载的全过程!
比“龙书”更具实践性!

★实战
通过实际动手制作一个精简版C语言编译器,让读者深入了解C语言程序编译、运行背后的细节。
★全面
不仅限于编译器,对以编译器为中心的编程语言的运行环境,即编译器、汇编器、链接器、硬件以及运行时环境等,均有所涉及。
★专业
日本知名技术书作家青木峰郎耗时3年精心打造,通过具体的例子讲解概念,通俗易懂,更适合入门。

目录

版权声明 阅读
译者序 阅读
说明 阅读
前言 阅读
第 1 章 开始制作编译器 阅读
第 2 章 C♭ 和 cbc 阅读
第 1 部分 代码分析 阅读
第 3 章 语法分析的概要 阅读
第 4 章 词法分析
第 5 章 基于 JavaCC 的解析器的描述
第 6 章 语法分析
第 2 部分 抽象语法树和中间代码
第 7 章 JavaCC 的 action 和抽象语法树
第 8 章 抽象语法树的生成
第 9 章 语义分析(1)引用的消解
第 10 章 语义分析(2)静态类型检查
第 11 章 中间代码的转换
第 3 部分 汇编代码
第 12 章 x86 架构的概要
第 13 章 x86 汇编器编程
第 14 章 函数和变量
第 15 章 编译表达式和语句
第 16 章 分配栈帧
第 17 章 优化的方法
第 4 部分 链接和加载
第 18 章 生成目标文件
第 19 章 链接和库
第 20 章 加载程序
第 21 章 生成地址无关代码
第 22 章 扩展阅读
附录

作者介绍

青木峰郎(作者)
程序员,著有《Ruby程序设计268技(第2版)》《Ruby源代码完全解说》《Linux程序设计》等多部编程相关著作。并积极参与标准库维护、文档维护等各种各样的活动。

严圣逸(译者)
毕业于上海交通大学。8年软件开发经验,期间赴日本工作。现就职于想能信息科技(上海)有限公司,从事基于云平台的客户关系管理及各类营销自动化系统的开发工作。译有《高效团队开发:工具与方法》。

绝云(译者)
毕业于清华大学软件学院。曾在日本创意公司KAYAC从事即时通讯软件及社交游戏的开发工作,现任蚂蚁金服前端架构专家。译有《写给大家看的算法书》等图书,曾参与《像外行一样思考,像专家一样实践(修订版)》的审校。

大家也喜欢

  • 虚拟机设计与实现:以JVM为例

    李晓峰   单业   译

    本书从一位虚拟机(VM)架构师的角度,以易于理解、层层深入的方式介绍了各种主题和算法,尤其是不同VM通用的主要...

  • 计算机科学精粹

    Wladston Ferreira Filho   蒋楠   译

    本书面向所有对计算机科学感兴趣的读者,以浅显易懂的语言和简明扼要的形式介绍计算机科学领域的重要知识点,尽量少涉...

  • 现代编译原理:C语言描述(修订版)

    Andrew W. Appel   Maia Ginsburg   赵克佳   黄春   沈志宇   译

    本书全面讲述了现代编译器的各个组成部分,包括词法分析、语法分析、抽象语法、语义检查、中间代码表示、指令选择、数...

  • 自己设计制作CPU与单片机

    这是一本非常有趣、激动人心的书,本书带领读者进入此前难以想象的领域——自己设计制作CPU,自己设计制作计算机。...

  • CPU自制入门

    水头一寿   米泽辽   藤田裕士   赵谦   译

    一直以来CPU内部是绝大多数IT工程师难以触及的领域。纵使学习过计算机架构相关课程,自己动手实现CPU也始终遥...

相关文章

  • 32位ubuntu16.04运行cbc 报下面的错(PS:已经按照书上的方法./install了cbc)
    安装后的信息如下:
    root@yangjun-virtual-machine:/home/yangjun/cbc-1.0# ./install.sh
    prefix=/usr/local/cbc
    mkdir -p /usr/local/cbc/bin
    install -m755 bin/cbc /usr/local/cbc/bin
    mkdir -p /usr/local/cbc/lib
    cp lib/cbc.jar lib/libcbc.a /usr/local/cbc/lib
    rm -rf /usr/local/cbc/import
    cp -r import /usr/local/cbc/import
    cbc successfully installed as /usr/local/cbc/bin/cbc
    可以看到提示cbc successfully installed as /usr/local/cbc/bin/cbc

    接下来按书1.3节提示进行build,情况如下:
    root@yangjun-virtual-machine:/home/yangjun/cbc-1.0# cbc hello.cb
    程序“cbc”尚未安装。 您可以使用以下命令安装:
    apt install coinor-cbc

    为何又提示cbc未安装?如何解决该问题?请指教
    codeyangjun  发表于 2016-08-13 16:11:40
    推荐
    • 可能是 /usr/local/cbc/bin/ 这个路径没有加入bash的搜索路径里,你可以试试把这句代码放到 ~/.bash_profile 文件里: export PATH="/usr/local/cbc/bin/:$PATH"

      另外,如果用64位的环境,可以考虑用这个项目中编译好的docker镜像:
      https://github.com/leungwensen/cbc-ubuntu-64bit

      绝云  发表于 2016-08-14 12:51:17
    • 谢谢作者回复,已按提示解决问题,谢谢

      codeyangjun  发表于 2016-08-15 11:56:43
  • 32位ubuntu运行cbc 报下面的错(PS:已经按照书上的方法./install了cbc)
    /usr/bin/ld: cannot find /usr/lib/crt1.o: No such file or directory
    /usr/bin/ld: cannot find /usr/lib/crti.o: No such file or directory
    cbc: error: /usr/bin/ld failed. (status 1)
    cbc: error: compile error
    jamesliu  发表于 2016-06-15 17:16:54
    推荐
    • 它提示找不到crt1.o和crti.o, 用find命令找到这两个文件所在的目录, 把它们copy到/usr/lib下面应该就好啦
      $ find /usr/ -name crit*

      cyzz  发表于 2016-06-17 16:27:39
    • Ubuntu 16.04 32位
      sudo cp /usr/lib/i386-linux-gnu/crt* /usr/lib/

      JIESOUL  发表于 2016-08-04 11:10:55
    • 解决吗?我也是遇到这样的问题

      fcq1129  发表于 2017-07-17 21:52:40
    • @fcq1129把crt1.o和crti.o放过去,结果,又报错说找不到-lc和crtn.o,再放一次,还说找不到lc,ldfailed。。。感觉64位不行啊

      Vegetatl  发表于 2018-03-27 11:54:17
    • @JIESOUL 谢谢!

      Readercode  发表于 2018-04-19 18:25:41
  • 还没出来啊?电子版的也没有。。。。
    for(;;)  发表于 2016-06-02 14:18:35
    推荐
    • china-pub 已经预售,电子版要过一两个月吧

      Kai  发表于 2016-06-03 14:48:50
  • 我用的是32位的ubuntu,正在看第1章,虽然安装运行成功并跑出来hello world了,
    但是目前还是有一个小疑问,我尝试的操作步骤如下:

    首先我也遇到了评论区提到的安装成功后,
    显示“The program 'cbc' is currently not installed.”的问题,
    于是,去找.bash_profile文件,在命令行输入了:
    $ cd
    $ ls –al .bash_profile

    但是这里显示的消息是:
    ls: cannot access –al: No such file or directory
    .bash_profile

    因此我干脆就在这里新建了一个.空白的bash_profile文件,
    添加了评论区给出的语句到这个文件里,
    export PATH="/usr/local/cbc/bin/:$PATH"

    接着在命令行输入:
    $ source ~/.bash_profile

    最后回到hello.cb文件所在的地方,
    放在桌面了,这才运行成功,
    Desktop$ cbc hello.cb
    Desktop$ ./hello
    Hello, World!

    我做了在线的检索,搜出来的链接都说,每次电脑重启都会自动加载bash文件的,
    可是我这里每次重新打开一个命令行窗口都需要再手动输入source语句,
    $ source ~/.bash_profile 才能让这个.bash_profile文件生效才可以用上cbc命令,
    所以我在想是不是我没有找到“真正”的.bash_profile文件?大家是怎么做的?

    井口裕香  发表于 2017-01-23 01:57:52
    推荐
    • 你去修改 /etc/profile

      versee  发表于 2017-02-08 23:07:23
  • 在64位环境下使用cbc的方法,和“【补充】64bit_cbc.docx”里的原理相似,不过不需要修改系统其他部分:
    在make之前,修改cbc-1.0/bin/cbc这个文件,第12行前插入如下两行内容:
    -Xlinker "-m elf_i386" \
    -Xassembler "--32" \
    其实是向as和ld传递了命令行选项
    imlk  发表于 2020-03-30 23:20:32
    推荐
  • 什么时候会出版?!!蛮喜欢的
    风纪扣v  发表于 2013-12-21 22:59:15
    推荐
  • 图灵搞了很多日本出的自制语言方面的书啊。。。
    lu4nx  发表于 2014-02-28 20:59:46
    推荐
  • 非常期待出版,要是英文的话都想自己翻译了
    Glorevo  发表于 2014-04-16 13:06:05
    推荐
  • 日本人搞了很多自制类的书啊
    richards  发表于 2014-10-22 23:13:21
    推荐
  • 这书进度怎么样了
    唯心不易  发表于 2015-02-27 15:37:59
    推荐
  • 几月份能出版啊?很期待啊!
    Seachal  发表于 2015-03-17 16:21:15
    推荐
  • 等了一年了,话说这书有英文版的么?
    Wenyang  发表于 2015-03-20 06:02:28
    推荐
  • 终于招到译者了
    天才少年  发表于 2015-09-18 09:31:03
    推荐
  • 很有趣啊..会有电子版吗?
    hyinxiaoyu  发表于 2015-12-01 13:04:20
    推荐
  • 期待!
    cyzz  发表于 2015-12-19 15:55:50
    推荐