LLVM每日谈之八 PASS例子分析

简介: 作者:snsn1984 之前已经 简单的介绍过怎么样去运行PASS(地址: http://blog.csdn.net/snsn1984/article/details/8160696),并且以hello PASS为例进行了运行,可以输出hello 和函数的名字。

作者:snsn1984

之前已经 简单的介绍过怎么样去运行PASS(地址: http://blog.csdn.net/snsn1984/article/details/8160696),并且以hello PASS为例进行了运行,可以输出hello 和函数的名字。下面咱们继续进一步的分析一下这个PASS的具体内容:

http://llvm.org/docs/doxygen/html/Hello_8cpp_source.html

这里就是之前运行过的pass的源码,可以看出来,输入的主要是在下面的代码中实现的

00032       errs() << "Hello: ";
00033       errs().write_escaped(F.getName()) << '\n';
这里的首先输出了:Hello,然后通过LLVM::Function类的getName()的成员函数取得了函数的名字进行输出。这两行代码是在

 virtual bool runOnFunction(Function &F)
这个函数里面的,而这个函数是结构体Hello的成员函数。并且我们也可以通过

struct Hello : public FunctionPass 
可以知道,Hello是继承了类FunctionPass.

 virtual bool runOnFunction(Function &F)
其实就是FunctionPass的一个虚函数,这里对它进行了实现。一个FunctionPass的子类要想做一些实际的工作,就必须对这个虚函数进行实现。

00040 static RegisterPass<Hello> X("hello", "Hello World Pass");
这个语句的主要意思是对hello PASS进行注册,只有PASS进行了注册之后,才可以进行使用。

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

目录
相关文章
|
2月前
|
Python
Python pass 语句
Python pass 语句
|
2月前
|
程序员 Python
Python中pass语句
Python中pass语句
21 1
|
2月前
|
存储 开发者 Python
Python中的argparse模块:命令行参数解析的利器
Python中的argparse模块:命令行参数解析的利器
27 2
|
2月前
|
存储 数据采集 搜索推荐
BoostCompass(数据准备预处理模块)
BoostCompass(数据准备预处理模块)
32 0
|
9月前
|
大数据 测试技术
关于 ABAP 函数调用 Pass by value 和 Pass by reference 的性能比较
关于 ABAP 函数调用 Pass by value 和 Pass by reference 的性能比较
|
9月前
|
安全
10.5 认识XEDParse汇编引擎
XEDParse 是一款开源的x86指令编码库,该库用于将MASM语法的汇编指令级转换为对等的机器码,并以XED格式输出,目前该库支持x86、x64平台下的汇编编码,XEDParse的特点是高效、准确、易于使用,它可以良好地处理各种类型的指令,从而更容易地确定一段程序的指令集。XEDParse库可以集成到许多不同的应用程序和工具中,因此被广泛应用于反汇编、逆向工程、漏洞分析和入侵检测等领域。XEDParse 引擎非常易于使用,读者在使用时只需要通过`XEDPARSE xed = { 0 };`定义一个结构,并通过向`xed.cip`内输送一条汇编指令,当调用`XEDParseAssemble(
55 0
10.5 认识XEDParse汇编引擎
|
9月前
|
Python
python中pass语句的用法
python中pass语句的用法
|
11月前
|
Python 容器
|
11月前
|
Python
Python中pass、exit()的区别
Python中pass、exit()的区别
7.从入门到精通:Python pass 语句,Number 类型转换,math 模块、cmath 模块
7.从入门到精通:Python pass 语句,Number 类型转换,math 模块、cmath 模块