从今天起,写一本关于LLVM的书----《深入理解LLVM》

简介:        一直想写一本关于深入学习LLVM的书,这个想法有了很久了,但是一直没有机会动手。现在虽然很忙,但是依然觉的有必要马上动手去做这个事情。任何事情都是一点一点积累起来的,如果一直不动手,什么都做不成。
       一直想写一本关于深入学习LLVM的书,这个想法有了很久了,但是一直没有机会动手。现在虽然很忙,但是依然觉的有必要马上动手去做这个事情。任何事情都是一点一点积累起来的,如果一直不动手,什么都做不成。还有句话:活在当下。抓紧时间去做想做的事情,才不会给自己的人生留遗憾。
       现在关于LLVM的书,只见过一本英文的《 Getting Started with LLVM Core Libraries》,据说还有一本日文的更早,但是一直没见过,有待调查补充。所以我很期待这本书能成为第一本中文的关于LLVM的书。因为这不仅仅是关乎语言的问题,也是关乎国内研究LLVM的一个进展问题。国内确实很多人在LLVM社区混的不错,也有人做的很深入,但是不可否认的是现在依然没有一本真正介绍LLVM的中文的书,这对LLVM在中国的推广,包括让更多的人更好的学习LLVM有着重大的意义。
       所以,我写这本书的 主要目的是有两个。第一,可以给需要学习LLVM的人提供一点中文的资料,让更多的人可以方便的接触LLVM和学习LLVM。毕竟不是谁都可以轻易hold住那一大堆的英文文档和已经发展这么久的一大堆代码。第二,我希望借写这本书的这个机会,努力的提高自己对LLVM的理解,提高自己的技术水平,在不断的总结和学习中提供自己。总结起来,这似乎是一件利人利己的事情,那就更需要快马加鞭、保质保量的完成了。
       这本书的名字就暂定《深入理解LLVM》。内容主要包括四大部分。第一部分,介绍LLVM的整体情况。从LLVM的起源、发展历史和现状入手,介绍LLVM的基本情况。然后对LLVM的框架、子项目组织结构、核心库和代码结构等进行介绍。第二部分,介绍LLVM的核心库。这部分主要介绍LLVM核心库的作用和如何在不涉及核心库内部代码的情况下去使用这些核心库。这部分内容,《Getting Started with LLVM Core Libraries》这本书介绍的就非常不错。第三部分,介绍LLVM的源码。挑选LLVM的具有代表性的源码进行介绍和分析,展现给读者分析代码的方法和技巧,重点在于培养读者自己分析代码的能力。在介绍具有代表性的代码的同时,也介绍相关的编译理论知识。第四部分,项目实例。针对性的选择基本不同类型的项目,通过实际的代码来实际项目中对LLVM的深入理解和使用。
       之前关于LLVM/Clang零零散散的写过一些博客,但是很不系统,内容也不完整,要想写成一本书的话,还有很多的工作需要去做。同时,之前我只完成(出版)过长篇小说,没有写技术书籍的经验,这些都将成为之后将要面临的问题。不管面临的问题是什么,是问题就有解决的办法,希望一切顺利!
                                                                                                                              2015年3月7日晚于长春
目录
相关文章
|
前端开发 C语言 iOS开发
基于LLVM的编译原理简明教程 (1) - 写编译器越来越容易了
跟学院派的厚书给大家的印象不同,其实用LLVM写个简单的编译器是件容易的事情,因为大部分事情LLVM都替我们做了。
8194 0
|
前端开发 IDE 编译器
LLVM编译器前端 Clang 简介
昨天晚上安装rails的开发环境,被ruby的编译搞的有点崩溃。下载的ruby的源码不能用系统自带的gcc -4.21编译,也不能用系统自带的clang进行编译,必须下载并使用gcc -4.2进行编译才能通过。今天稍微看看编译器的一些背景。
493 0
LLVM编译器前端 Clang 简介
|
编译器 iOS开发 Windows
带你读《LLVM编译器实战教程》之一:构建和安装LLVM
本书的前半部分将向您介绍怎么样去配置、构建、和安装LLVM的不同软件库、工具和外部项目。接下来,本书的后半部分将向您介绍LLVM的各种设计细节,并逐步地讲解LLVM的各个编译步骤:前段、中间表示(IR)、后端、即时编译(JIT)引擎、跨平台编译和插件接口。本书包含有大量翔实的示例和代码片段,以帮助读者平稳顺利的掌握LLVM的编译器开发环境。
19468 0
|
Web App开发 运维 自然语言处理
使用llvm实现一门语言 —— cava
本文将介绍如何使用llvm+bison+flex技术实现一门编程语言。 以我们实现的cava语言为例,介绍编译器各阶段,词法分析 -> 语法分析 -> 语义分析 -> 中间代码优化 -> 目标代码生成,最终生成汇编指令,再由汇编语言根据不同的指令集生成对应的可执行程序是如何实现的。
10460 0
|
Web App开发 JavaScript
深入研究Clang(七) Clang Lexer代码阅读笔记之Lexer
作者:史宁宁(snsn1984) 源码位置:clang/lib/Lexer.cpp 源码网络地址:http://clang.llvm.org/doxygen/Lexer_8cpp_source.html Lexer.cpp这个文件,是Clang这个前端的词法分析器的主要文件,它的内容是对Lexer这个类的具体实现,原文件的注释中:“This file implements the Lexer and Token interfaces.” 这么解释这个文件的,但是Token只有两个简单函数的实现,剩下的都是Lexer的实现。
1566 0
|
前端开发 C语言 C++
LLVM和Clang背后的故事
LLVM是Apple官方支持的编译器,而该编译器的前端是Clang,这两个工具都被集成到了Xcode里面。
1727 0
|
Android开发 C语言 C++
《深入理解LLVM》第一章 LLVM简介
第一章 LLVM简介 作者:史宁宁 1.1 LLVM是什么 LLVM是什么?这是一个虽然基础,但是也曾经让很多新入门的人迷惑的一个问题。从字面上来讲,LLVM(Low Level Virtual Machine)是一个底层虚拟机,LLVM曾经有一部分功能对虚拟机有所帮助。
2425 0
|
存储 C语言 C++
深入研究Clang(六) Clang Lexer代码阅读笔记之Preprocesser
作者:史宁宁(snsn1984) clang/include/clang/Lex/Preprocesser.h 这个文件是包含clang::Preprocesser类的定义的头文件。
1238 0