
llvm编译器
文章平均质量分 85
瞌睡虫zZ
做一名安静的程序猿
展开
-
基于LLVM编译器的安全防护技术方案
程序设计语言的抽象有模块、函数、堆栈、类型和作用域等。LibFuzzer模糊测试引擎,和要被测试的库链接在一起,通过一个特殊的模糊测试进入点即目标函数,用测试用例feed要被测试的库,fuzzer会跟踪哪些代码区域已经被测试过,然后在输入数据的语料库上产生变异,代码覆盖的信息由LLVM的SanitizerCoverage插桩提供。安全编译研究对软件执行转换的编译方案,这些转换所产生的表示与源码具有相同的安全级别,旨在编译后保留高级编程语言抽象的安全性,可在源代码的抽象级别上推断应用程序的安全性。原创 2022-09-22 18:05:43 · 2237 阅读 · 1 评论 -
Pass框架
/include/llvm/Pass.hPass框架是LLVM系统中一个重要的部分,Pass类是实现代码优化的主要资源,每个pass是LLVM系统进行转化和优化工作的一个节点,可以完成特定的优化工作,多个pass可共同完成优化和转化。Pass分类从代码结构上来说,LLVM 编译器给开发者们提供了一个Pass类和其子类,主要的子类有ModulePass、FunctionPass、BasicBlockPass等,声明在llvm/Pass.h文件中。根据所需功能,研究者们可以通过重写继承.原创 2020-08-10 16:15:07 · 1442 阅读 · 0 评论 -
Windows7使用VS2017编译LLVM+Clang源码
Windows7使用VS2017编译LLVM+Clang源码工具:VS2017、Python(用于运行测试套件)、CMake-3.15.1(用于生成VS解决方案和项目文件)Tips:1、VS确认好安装版本,切记不要混装 (由于VS2015和VS2017的混装导致CMake生成LLVM.sln折腾了一天) 2、CMake安装最新版,以支持VS2017源码包:llvm-8.0.1.src.tar.xzcfe-8.0.1.src.tar.xz(Clang)co...原创 2020-08-10 11:56:18 · 1690 阅读 · 0 评论 -
llvm编译器概述
基于LLVM的编译器三段式设计:(1)前端Clang:负责对输入代码进行解析,对输入代码中的错误进行验证和诊断,然后将解析的代码转换成LLVM IR(源代码—AST—LLVM IR),包括词法分析器、语法分析器、语义分析器、LLVM IR代码生成器。(2)优化器:对LLVM IR有选择性进行多遍分析和优化,生成执行速度更快的LLVM IR。具有两种文件表示形式,便于人工理解的.ll文件和二进制编码形式的.bc文件。(3)后端:将LLVM IR转换成与目标架构相关的汇编代码优点:(1)原创 2020-08-10 11:50:29 · 879 阅读 · 0 评论 -
程序编译概述
计算机语言演变:机器语言——>汇编语言——>高级语言(机器语言或汇编语言的程序依赖于特定的机器)机器指令0/1序列(目标程序)——>汇编指令——>源代码由源程序到可运行程序的生成过程:源代码文件——>汇编文件——>目标文件——>可执行程序 编译器 汇编器 链接器hello.c——>hello.i——>hello.s——>hello.o——>...原创 2020-08-10 11:33:52 · 407 阅读 · 0 评论