问题标签 [llvm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1890 浏览

c# - 编写一个针对 LLVM 的 C# 编译器是否有意义?

我正在考虑编写一个小型 C# 编译器。

我一直在玩弄的一个想法是编写 C# 语法的一个子集,比如 ANTLR 的最高 2.0。然后,使用它来定位 LLVM 并为 C# 编写本机代码编译器?

这个想法甚至有意义还是行不通?有什么办法仍然可以拨打 BCL 吗?

我知道有CCI(通用编译器基础结构)可以帮助我简单地生成 .NET 可执行文件。但是我很好奇我上面所说的是否可能?

0 投票
2 回答
3015 浏览

multicore - 多核 llvm 的垃圾收集器?

很长一段时间以来,我一直将 LLVM 作为我目前正在实施的语言的新后端。它似乎具有良好的性能,相当高级的生成 API,足够的低级支持来优化外来优化。此外,虽然我自己没有检查过,但 Apple 似乎已经成功地展示了 LLVM 用于垃圾收集的多核程序。

到目前为止,一切都很好。由于我对垃圾收集和多核都感兴趣,下一步将是选择一个 LLVM 多核垃圾收集器。这让我想到了一个问题:什么是可用的?我知道Jon Harrop的 HLVM 工作,但仅此而已。

请注意,我需要跨平台,因此 Apple 的 GC 可能不是我想要的(除非有跨平台版本)。另请注意,我不反对停止世界垃圾收集器。

在此先感谢,约里克

0 投票
2 回答
344 浏览

g++ - llvm 预处理器 g++ 通过

假设我想编写自己的预处理器。

所以我想要这样的东西:

所有 *.cpp 和 *.hpp (甚至包括的),在他们去 g++ 之前,他们去:

在 LLVM 框架中是否有一种简单的方法可以做到这一点?即添加一个阶段:“加载源文件后,在编译它之前通过这个程序管道它”?

谢谢!

0 投票
2 回答
2532 浏览

parsing - llvm-clang:增量或在线解析器?

无论如何以增量/在线方式使用llvm-clang解析器?

假设我正在编写一个编辑器,并且我希望能够解析我面前的 C++ 代码。

我不想编写自己的破解解析器。

我想使用功能齐全的东西,比如 llvm-clang。

有没有一种简单的方法来劫持 llvm-clang 解析器?(并且它是否足够快以在后台连续运行它)?

谢谢!

0 投票
3 回答
3202 浏览

ubuntu - 对于使用块的 clang 程序,您需要链接哪些库

我发现(如下)在编译使用块的代码时需要使用 -fblocks。

我需要链接什么库才能让链接器解析_NSConcreteStackBlock?(在 Ubuntu 9.10 AMD64 上。)

0 投票
3 回答
2341 浏览

linux - 使用非 gcc 编译 linux 内核

Linux 内核是为使用 gcc 编译而编写的,并且使用了许多小而丑的 gcc-hacks。除了 gcc,还有哪些编译器可以编译 linux 内核?

一个,可以,是英特尔编译器。内核编译需要什么最小版本?

还有一个 Tiny C 编译器,但它只能编译经过缩减和特殊编辑的内核版本。

是否有其他编译器能够构建内核?

0 投票
1 回答
1410 浏览

operating-system - x86准系统上的llvm?

有谁知道任何涉及在没有操作系统的情况下运行 LLVm 的项目,即直接在 x86 硬件上?

0 投票
1 回答
3431 浏览

debugging - 为什么 LLVM 编译/链接过程中会丢失调试符号?

我写了一个 LLVM 转换,它基本上用受保护的 malloc 和其他一些东西代替了 malloc。

我正在使用 clang(或 llvm-gcc)编译 ac 文件以获取包含调试信息的位码文件(使用 -emit-llvm 选项)。这些还包含方法名称、行号等。

之后我使用 opt 来检测这个位码文件。结果是一个检测的位码文件,仍然包含所有相关的调试信息。

在第三步也是最后一步,因为我们需要一些运行时库,所以我们使用 llvm-gcc 将位码与其他一些位码文件链接起来,以获得最终的二进制文件。

这个二进制文件我无法调试,因为它不包含任何调试信息,尽管所有链接的位码文件都包含它们。gdb 唯一能告诉我的是我们在哪个函数中,但没有行号等等......

我将不胜感激任何提示。

0 投票
5 回答
6100 浏览

c++ - 使用 LLVM 进行静态源代码分析

我最近发现了LLVM(低级虚拟机)项目,据我所知,它可以用来对源代码进行静态分析。我想知道是否可以在程序中通过函数指针(找到调用者函数和被调用者函数)提取不同的函数调用。

我可以在网站上找到那种信息,所以如果你能告诉我这样的库是否已经存在于 LLVM 中,或者你能指出如何自己构建它的好方向(现有源代码,参考,教程,示例...)。

编辑:

通过我的分析,我实际上想提取调用者/被调用者函数调用。在函数指针的情况下,我想返回一组可能的被调用者。调用者和被调用者都必须在源代码中定义(这不包括库中的第三方函数)。

0 投票
7 回答
120803 浏览

gcc - LLVM 到底是什么?

我一直在听说 LLVM。它是在 Perl 中,然后是在 Haskell 中,然后有人在其他语言中使用它?它是什么?

  • 它与 GCC 的确切区别是什么(观点 = 安全等)?