8得票1回答
程序编译中的PIC级别是什么?

我正在研究LLVM库,发现Clang添加了以下元数据来生成LLVM IR模块: !llvm.module.flags = !{!0} !llvm.ident = !{!1} !0 = !{i32 1, !"PIC Level", i32 2} !1 = !{!"Apple LLVM ver...

23得票2回答
LLVM:指令或值类中“uses”和“user”的区别

我是LLVM的新手,已经检查了Value和Instruction类。我发现这两个类都有uses和user方法。它们之间有什么区别?另外,关于此帖this post,我能否使用这些方法来确定指令是否产生值? 谢谢。

8得票1回答
如何生成LLVM SSA格式

我写了以下C代码,变量X被赋值了两次: int main() { int x; x = 10; x = 20; return 0; } 使用以下命令进行编译并生成IR表示: clang -emit-llvm -c ssa....

7得票1回答
使用LLVM作为虚拟机——多平台和多架构编码。

我目前正在使用一种宠物编程语言(用于学习目的),并经过了过去一年的大量研究,我认为现在是时候开始对这种语言的概念进行建模了。首先,我希望它能够编译成某些中间形式,例如JVM或.NET bytecode,目标是多平台/架构兼容性。其次,我希望它运行速度快(我还有许多其他想法,但本主题不讨论这些)...

7得票1回答
理解LLVM IR中全局值的不同链接类型及其示例

LLVM IR文档详细讨论了IR,其中大部分都很清晰。然而,我对链接类型特别困惑。除了private、internal、external之外的链接类型没有例子就变得相当混乱。 有人能在这里提供一些帮助吗?(可能将用例与像C/C++这样的语言联系起来?) (我正在尝试清楚地理解IR,因为我正...

8得票1回答
我该如何从LLVM ir创建可执行文件?

我目前正在使用llc将一个.ll文件通过命令行转换成.s文件。然后我想使用nasm从中创建一个可执行文件。虽然第一步似乎运行良好,但我无法使第二步运行。 原始文件名为code.ll,包含以下代码: define i32 @main() { ret i32 0 } 现在我使用...

13得票1回答
在LLVM IR中表示void指针类型

目前,我在生成的IR中使用 i8* 来表示 void 指针,但这使得很难区分 void* 和 char*。有没有常见的解决方法?我已经搜索了很多,但没有找到。 对于其他类型对,我能够直接使用 llvm::Type* 来区分类型,所以如果不能再为 void 指针特例这样做,它将增加很多复杂性。...

24得票4回答
LLVM IR有调试器吗?

我想逐步分析一下我生成的LLVM IR代码。 就llc和lli而言,代码在语法和类型上是有效的,但结果并不是我所期望的。 由于代码块足够大,我无法轻松地找到错误,并且我很难制作一个具有相同错误的较小示例。 我想使用类似调试器的东西来调试LLVM IR。换句话说,我希望能够逐步执行llvm代...

8得票1回答
使用Clang构建V8并发出LLVM IR

我正在尝试使用Clang构建V8 JavaScript引擎并输出.ll文件。我正在尝试结合这里和这里的信息来实现此目标。但是,当我尝试执行make时,它失败了,并显示“没有生成目标规则”。我很困惑。我已经尝试仅编译v8.cc,但完全失败了。我想这是因为我正在尝试通过将其作为编译器来强制使用-e...

7得票1回答
在LLVM中创建raw_ostream对象

如何正确创建 raw_ostream 对象并使用它进行打印?我阅读了各种文章,唯一能找到的示例是 (如何将 llvm::outs() 重定向到文件?) raw_ostream *output = &outs(); 这段代码使用了llvm::outs。 很抱歉要问这个问题,因为我...