我正在尝试编写一个检查代码控制流的传递.给定br指令,我需要访问标签字段中引用的基本块. 例如,对于代码: for(i = 0; i < count; i++){ sum = add(sum, array[i]);…
标签:llvm
在LLVM中编码标记的联合(总和类型)
我正在尝试在LLVM中编码标记联合(也称为求和类型),并且在保持编译器前端平台不可知的情况下似乎不可能.想象一下,我有这个标记的联合(用Rust表示): enum T { C1(i32, i64), C2(i64) } …
具有LLVM段错误的Printf浮点数
我试图调用printf从LLVM打印一个浮点数.虽然它与int工作正常,但在使用double时会出现段错误. 这是代码(从clang生成但略有修改,以便它可以与llc一起使用): @.str = private unna…
了解Rust库的依赖关系
我正在为教育目的编写一个针对ARM的嵌入式Rust程序. 由于它是裸机系统,我只使用核心库.该库的手册页声称corelib取决于什么,但memcpy,memcmp和memset,以及展开函数(见 https://doc.…
PostgreSQL 11 - with_llvm
背景 PostgreSQL 11 LLVM JIT,目前支持tuple deform(将磁盘上的tuple转换为内存中TUPLE格式),以及表达式(select, where, 等语义中的表达式,操作符运算,UDF等)的…
Objective-C混淆之方法名混淆
本文通过clang的LibTooling来实现Objective-C源码中方法名的混淆。 1.准备环境 需要下载Clang和LLVM。简单说一下,Clang是编译器的前端,能够解析C/C++/OC代码,Clang生成In…
LLVM & Clang 入门
概述 LLVM包含三部分,分别是LLVM suite、Clang和Test Suite。 LLVM suite,LLVM 套件,它包含了 LLVM 所需要的所有工具、库和头文件,一个汇编器、解释器、位码分析器和位码优化器…