电影旅行敲代码

C++ 编译 操作系统

Anderson's pointer analysis

指针分析 指针分析是一类特殊的数据流问题,它是其它静态程序分析的基础,但指针使用的灵活性导致了指针分析的复杂性,实际上指针分析是一个不可判定问题,所以实际的指针分析算法都是近似且保守的,须在效率和精度之间进行折衷。 指针分析研究的内容主要集中在分析精度和时空开销之间的取舍,精度方面,...

2017-12-04 00:15:39

阅读数 786

评论数 0

数据流分析中的Distributive Dataflow Problems

Distributive Data flow Problems一个数据流问题包括如下几部分: CFG 数据流值的值域 初始的数据流值 交汇运算(用于将前驱或者后继节点的值进行“交汇”) 传输函数 而Distributive Data flow(可分配数据流问题)问题就是关于交汇运算和传输函数的问...

2017-11-08 21:23:28

阅读数 334

评论数 0

SSA的优势

由来前一段时间阿里云OS 编译器岗位内推面试,面试官问了SSA的优势,我答的很简洁,面试官后来对我说没有答好。所以索性就做一次知识的搬运工,收集一些资料。传统数据流分析(Data-flow analysis)劣势前面的提到过传统的数据流分析是 Dense 的分析,就是在分析过程中,要携带当前所有的...

2016-08-12 14:03:29

阅读数 2349

评论数 0

迭代数据流分析中的逆后序(Reverse Postorder)

—————————————-更新———————————-Eli Bendersky大神的博客有关于数据流分析各种ordering的分析,大神的 分析深入浅出,大家请移步Eli Bendersky’s website。当然也可以继续看下面的文章—————————————-更新———————————...

2016-08-09 16:54:32

阅读数 1852

评论数 0

gdb调试Clang2.6 (clang-cc)

文章介绍了如何通过源码编译Clang2.6并如何进行调试

2016-07-02 12:58:00

阅读数 2995

评论数 4

数据流分析的局限性

引子前面我们介绍了很多关于数据流分析的知识,虽然说数据流分析是整个代码分析基础中的基础,但是数据流分析还是存在很大的局限性,一部分局限性来自于数据流分析所做的假设(例如假设所有路径可达),一部分局限性来自于分析语言的性质(例如C++语言中的异常处理或多态)。为了作出可靠的决定,所以编译器设计者必须...

2016-02-29 22:06:31

阅读数 1521

评论数 0

数据流分析(三)

引子在数据流分析(一)和数据流分析(二)中我们介绍了数据流分析的基本模式以及到达定值和活变量的分析。在这篇文章中我们简要介绍一下可用表达式和数据流分析中的格。 可用表达式 数据流分析中的格 可用表达式 如果从流图入口结点到达程序点 p 的每条路径都对表达式 x + y 求值,且从最后一个这样的...

2016-02-29 21:47:05

阅读数 3936

评论数 2

LLVM全时优化

引子由于实验室项目原因,从本科开始接触Clang和LLVM开始到现在已经有2年时间了,期间都是针对Clang做一些边边角角的工作,没有潜下心来好好研读一下LLVM的paper。最近闲下来读了Chris Lattner那篇引用率高达2227的论文《LLVM: A Compilation Framew...

2015-12-23 11:14:00

阅读数 3993

评论数 0

基于栈的虚拟机 VS 基于寄存器的虚拟机

引子一直对虚拟机这个黑盒非常感兴趣,由于从前都是直接学习x86或者ARM这些实际的体系结构,什么寄存器、ALU、CPU、总线、乱序执行和Cache等相关的观念都已经烂熟于心。另外在学习C++或者C语言时,对函数调用栈帧非常熟悉,什么函数调用前压参、保存寄存器值、EBP、ESP或者函数返回值如何传递...

2015-12-17 21:49:52

阅读数 5888

评论数 8

RTTI机制详解

引子以前我们探讨过,RTTI的访问和虚表相关,并且RTTI基本上是为了dynamic_cast<>和typeid以及异常而实现的。今天我们详细探讨下异常的实现机制。RTTI、虚表以及类的内存布局遵循的通常是Itanium C++ ABI,我不知道这个名字为什么会演化成现在这个样子,但是...

2015-12-14 19:10:08

阅读数 760

评论数 0

编译器或者链接器会优化掉虚表吗

引子前一段时间和实验室的同学讨论虚表和RTTI相关的问题,由于我是编译器论调的拥泵,所以我信誓旦旦的说如果编译器发现虚表或者虚函数无用的话,会自动优化掉这些虚表信息。但是查过资料才发现,其实编译器并不会这么做!ODR原则在C++中有一个很重要的概念就是ODR原则,总的来说,ODR分为3个方面: 一...

2015-12-13 15:41:55

阅读数 1093

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭