文档章节

七天LLVM零基础入门(Linux版本)------第二天

snsn1984
 snsn1984
发布于 2013/02/22 09:58
字数 597
阅读 2201
收藏 6

作者:snsn1984

在第一天的时候,我们简单了解了llvm和clang。今天我们继续对LLVM进行学习。


第一步:学会如何查找LLVM的文档
LLVM的文档很多,也很全面,是开源软件中文档比较全面并且比较细致的,这是很难得的一个事情。所以只要和LLVM打交道,就一定要学会并且善于去使用这些LLVM的文档。
因为LLVM文档比较多,初学者可能不太容易搞清楚,我之前写过一个关于LLVM的文档的博文,可以参考:
http://blog.csdn.net/snsn1984/article/details/8165529
这个博文把文档的地址和文档的分类进行了简单介绍。

第二步:熟悉LLVM的IR
IR是 intermediate representation的缩写,顾名思义是中间表示的的缩写。中间表示已经被越来越多的编译器所采用,传统的编译器多采用汇编语言作为自己的中间语言,而现在大一些的编译器都有了自己专属的中间表示。LLVM IR的官方文档地址: http://llvm.org/docs/LangRef.html
简要介绍可参加我之前的博文: http://blog.csdn.net/snsn1984/article/details/8037414
LLVM IR是整个LLVM框架中极其重要的一部分,一般与LLVM相关的项目都无法避开LLVM IR这个部分,因为它是整个LLVM框架中的枢纽,所以LLVM IR的官方文档必须要完全熟悉。初学者做不到完全熟悉的,至少也应该读几遍,知道整个LLVM IR的大部分内容,细节的内容记不住的可以在使用的时候进行查找文档。
另外,应该可以使用clang去获取一个程序的.ll格式和.bc格式的IR文件,并且能够让这两种格式的文件进行相互转换。
相关知识补充:如果编译原理相关知识比较差的话,需要在这个环节补充一下编译原理的相关知识,至少要知道从源码到可执行文件中的每一个大的环节。同时,也需要去补充一下为什么编译器都采用中间表示,这对LLVM IR的学习,以及后续的学习都很有帮助。

----------------------------------------------------------转载请注明出处 ---------------------------------------------------------------------------

© 著作权归作者所有

snsn1984
粉丝 94
博文 32
码字总数 45245
作品 0
长春
项目经理
私信 提问
加载中

评论(5)

snsn1984
snsn1984 博主

引用来自“LastRitter”的评论

引用来自“snsn1984”的评论

引用来自“LastRitter”的评论

你好,请问编译原理方面,有什么推荐的书籍吗?

确实首推龙书。

又是龙书,哎!!!

没办法,太经典了。
LastRitter
LastRitter

引用来自“snsn1984”的评论

引用来自“LastRitter”的评论

你好,请问编译原理方面,有什么推荐的书籍吗?

确实首推龙书。

又是龙书,哎!!!
snsn1984
snsn1984 博主

引用来自“LastRitter”的评论

你好,请问编译原理方面,有什么推荐的书籍吗?

确实首推龙书。
偶遇幸福
偶遇幸福

引用来自“LastRitter”的评论

你好,请问编译原理方面,有什么推荐的书籍吗?

龙书啊,没听说?
LastRitter
LastRitter
你好,请问编译原理方面,有什么推荐的书籍吗?
七天LLVM零基础入门(Linux版本)------总结

七天LLVM零基础入门这系列文章,为了让刚接触LLVM的人在最短的时间内快速的熟悉LLVM。这系列文章,现在经过将近一年的时间的使用,有了不少反馈的意见,现在将这些情况总结一下。 1. 在按照这...

snsn1984
2014/02/10
406
0
七天LLVM零基础入门(Linux版本)------第三天

作者:snsn1984 第二天的任务中的LLVM IR的文档( http://llvm.org/docs/LangRef.html) 对于初学者来说,看起来一定很费劲,内容繁杂,找不到头绪,看了后边的忘记了前面的,这些都是很正常...

snsn1984
2013/02/22
1K
0
七天LLVM零基础入门(Linux版本)------第七天

作者:snsn1984 这是这一次零基础入门的最后一天,这次的主要任务是实战一个Pass。 任务描述: 实现一个Pass,该Pass可以读取一个程序中所有的for循环的循环头的名字并输出。...

snsn1984
2013/02/28
1K
6
七天LLVM零基础入门(Linux版本)------第六天

作者:snsn1984 第一步:对优化代码的pass继续进行深入的分析 首先检查一下第五天中的Pass练习,什么情况下可以进行优化,什么情况下不可以进行优化。 可以参照系统自带的Pass: http://llvm...

snsn1984
2013/02/28
812
0
七天LLVM零基础入门(Linux版本)------第四天

作者:snsn1984 第一步:复习 http://llvm.org/docs/LangRef.html) 编程指引文档 (http://llvm.org/docs/ProgrammersManual.html) 这两篇文档是LLVM的重中之重,希望学习的时候认真一点,...

snsn1984
2013/02/27
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

视频如何加水印?

很多视频制作者的视频都被他人盗用过,为了防止自己的劳动成果被他人窃取,给视频加水印对于视频制作者来说,是一件非常重要的事情。那么下面分享一个手机给视频加水印的方法,一起来看看吧!...

白米稀饭2019
29分钟前
5
0
004-Envelop-基于Blockstack的文件传输dapp

本篇文章主要介绍基于Blockstack的文件传输工具; ####A-链接地址 官网地址:https://envelop.app/ Github地址:https://github.com/envelop-app ####B-特性: 1: Share private files easil...

Riverzhou
32分钟前
7
0
SpringCloud——声明式调用Feign

Feign声明式调用 一、Feign简介 使用Ribbon和RestTemplate消费服务的时候,有一个最麻烦的点在于,每次都要拼接URL,组织参数,所以有了Feign声明式调用,Feign的首要目标是将Java HTTP客户端...

devils_os
38分钟前
7
0
《JAVA核心知识》学习笔记 (22. 数据结构)

22.1.1. 栈(stack) 栈( stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶 (top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈...

Shingfi
43分钟前
6
0
你对AJAX认知有多少(1)?

AJAX(一) AJAX技术对于前段或者后端工程师来说,都是必不可缺的 那我们这几期都来细细品味一下AJAX的相关知识,直接上干货喽~ 1、什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么...

理性思考
51分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部