自制编译器

[日] 青木峰郎

出版时间

2016-05-31

ISBN

9787115422187

评分

★★★★★

标签

编程

书籍介绍

本书将带领读者从头开始制作一门语言的编译器。笔者特意为本书设计了CЬ语言,CЬ可以说是C语言的子集,实现了包括指针运算等在内的C语言的主要部分。本书所实现的编译器就是C Ь语言的编译器, 是实实在在的编译器,而非有诸多限制的玩具。另外,除编译器之外,本书对以编译器为中心的编程语言的运行环境,即编译器、汇编器、链接器、硬件、运行时环境等都有所提及,介绍了程序运行的所有环节。

目录
目 录
第1章 开始制作编译器  1
1.1 本书的概要  2
本书的主题  2
本书制作的编译器   2

显示全部
用户评论
词法语法分析 生成中间代码 汇编 链接 生成可执行文件 --- 也了解jvm的原理了
好看的飞起~~~,最近正在搞JavaCC 读到 IR 就不读了 书确实不错
加载和链接。Linux 系统下通过mmap系统调用把程序加载到内存中。mmap是把文件内容映射到内存空间中的系统调用。所谓“映射”,意思是可以通过读取内存直接获得文件内容,也可以通过写内存对文件内容进行变更。
整本书对 javaCC 的依赖很强,不是很推荐
作者讲述的思路很好,编译器的基本实现流程都说到了。但可惜的Cb是用java实现的,大量的类和继承让代码显得臃肿拖沓,而即使采用了这么多类,这么大的代码量却仍然还有C的大量特性没有实现。对比之前看过的另外一个实现C11标准的编译器8cc,采用C11实现,完成基本C11特性的基础上却只有不到6000行代码量,并且代码简洁易懂,可读性和参考价值颇高。综上,这本书只能用来了解编译器的基本实现流程,代码我觉得就不用过于深究,可读性和研究的价值不大。个人见解,请勿拍砖。
本书从词法分析到最后生成汇编,链接都有涉猎,技术栈比较完整但都不深入,算是一本入门编译器的好书了。 个人感觉,对于新手入门,这本比龙书之类的要好很多。
大三学习的时候看的
很好,跟着可以慢慢学习如何自己写一个编译器。
R大推荐的入门书,书中用Java搭建了一个c语言的编译器。个人感觉本书易读性比plp,eopl要高很多,两位大神翻译的也很好,不知道为什么分数那么低。 书中编译器前端采用javacc做词法语法分析,Action搭建抽象语法树,语义分析和IR转换采用visitor模式;后端则搭建了一个DSL用来表示汇编代码,做了一些代数简化和运算强度的简单优化,最后使用GNU as编译汇编文件得到ELF文件。 设计模式的使用增加了可扩展性,提高了清晰度,但是仍然有大量的实体类,增加了阅读的难度。 总体来说是一本非常注重实践并且清晰易懂的书,可以和R大推荐的另一本plp(程序设计语言实践之路)搭配食用。有些地方还不是很懂,需要再看几遍。
其实链接器讲的也不错
下载
收藏