ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

LLVM IR 理解

2021-06-26 06:31:08  阅读:165  来源: 互联网

标签:LLVM IR 接口 生成 编译 llvm 理解


LLVM IR 理解

LLVM IR表示

LLVM IR有三个不同的形式:

内存中编译中间语言(IR)

保存在硬盘上的 bitcode(.bc 文件,适合快速被一个 JIT 编译器加载)

一个可读性的汇编语言表示(.ll 文件)。

LLVM为高效编译转换和分析,提供一个强大的中间表示。LLVM 的三种不同的形式都是等价的。以下是三种表示的转化方式。

 

 

 LLVM 语言在轻量、底层、同时富有表现力,类型化,易于扩展。LLVM IR 语言目标是成为一种"通用中间语言",通过足够低层次,使高级语言可以清晰的映射。通过提供类型信息,LLVM IR 语言可作为优化的目标:

例如,通过指针分析,可以证明,一个 C 自动变量,从不当前函数之外访问,允许被提升到一个简单的 SSA 值,而不是一个堆变量。
LLVM接口构建IR代码

LLVM提供很多API,用于操作IR。使用这些接口,直接在内存中生成IR,直接运行,输出结果。(开发一种新的编程语言,完成词法语法解析后,利用LLVM 接口生成有效的中间代码,很快编译到目标平台上。)

LLVM IR 结构: 

 

 

 llvm是编译器后端,前端词语法分析,要生成机器代码。首先定义一个虚拟机,生成字节代码,将代码转化成对应系统结构。编译过程中,加入了流程控制,让开发者介入。

开发一种新的编程语言,在词法,语法解析完成后,生成中间代码,然后优化,最后编译成目标机器码。llvm 中间代码,效率高,可读性好。按照语法规则,利用llvm操作IR接口,生成等价的IR。如何编译成目标代码呢?llvm不仅仅是虚拟机,实现了模块化的优化策略和多种后端,后面都交给llvm。

总之:开发一种新编程语言,需要完成词法和语法解析,根据接口,生成可用的IR。

LLVM IR编译归纳图

 

 

标签:LLVM,IR,接口,生成,编译,llvm,理解
来源: https://www.cnblogs.com/wujianming-110117/p/14933285.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有