问题标签 [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.
llvm - LLVM 代码生成导致段错误?
我对语言创建和编译器构造感兴趣,并且一直在研究这里的示例:http: //gnuu.org/2009/09/18/writing-your-own-toy-compiler/。作者使用的是 LLVM 2.6,在对 LLVM 2.7 进行了一些更改后,我得到了所有代码生成代码来编译。在向编译器提供测试代码时,
程序正常工作,直到它尝试运行代码,此时它会出现段错误。我正在我的系统上构建 LLDB,但与此同时,有人在这个 LLVM asm 中看到明显的段错误吗?
输出只是:
我的拱门是 OS X x86_64。
谢谢。
c++ - llvm 的 Hello pass 示例的编译错误
我在“Writing an LLVM Pass”网页中尝试了 Hello pass 示例。我按照说明编译(使用 gcc-4.2)Hello.cpp,但出现编译错误:
Hello.cpp:20:错误:字符串常量之前的预期标识符
Hello.cpp:20:错误:字符串常量之前的预期“,”或“...”
Hello.cpp:20:错误:预期的构造函数、析构函数或类型转换前 ';' 令牌
这是INITIALIZE_PASS(Hello, "Hello", "Hello World Pass", false, false);
程序中的行。该程序是:
任何人都可以帮我解决这个问题吗?非常感谢!
最好的,
丹尼尔
java - JVM 中包含哪些功能
JVM的功能是什么?我所知道的是:
- 即时编译器
- GC
- 内存分配器
加载 Java 应用程序时它会执行哪些步骤?
我想知道,因为如果我将 Java 应用程序的加载时间与这些步骤进行比较:
InitializeNativeTarget
在 LLVM 上- 一些 GC 初始化
- 一些 Qt/GTK/无论什么初始化
- 应用程序部分的一些 JIT/ahead 编译
- 应用程序初始化本身
在我看来,加载 JVM 所需的时间比执行我上面列出的步骤所需的时间要长得多。那么除此之外它还有什么作用呢?
math - 如何在 LLVM 位码中实现 floor、ceil 和 round?
我正在为一种基于 LLVM 的小型编程语言编写数学函数,我目前对如何实现常见的舍入函数 floor、ceil 和 round(甚至)感到困惑。首先是因为我还没有找到这些函数的任何算法描述,其次是因为我不熟悉 LLVM 具有哪些功能。四舍五入。
能够正确舍入负数是必须的,而不是舍入到特定精度。四舍五入到整数值就可以了。简单地指出可以从 LLVM 位码中使用的任何现有实现也将起作用。
clang - LLVM jit 和本机
我不明白 LLVM JIT 与正常的无 JIT 编译有何关系,而且文档也不好。
例如假设我使用clang
前端:
- 案例 1:我使用 clang/llvm 将 C 文件编译为本机。我理解的这个流程就像 gcc 流程——我得到了我的 x86 可执行文件并运行。
- 案例 2:我编译成某种在 LLVM JIT 上运行的 LLVM IR。在这种情况下,可执行文件包含 LLVM 运行时以在 JIT 上执行 IR,或者它是如何工作的?
这两者有什么区别,它们是否正确?LLVM 流是否包括对 JIT 和非 JIT 的支持?我什么时候想使用 JIT - 对于像 C 这样的语言,它是否有意义?
compiler-construction - 使用 clang 的 JIT 注册外部函数?
我试图用 clangs JIT 注册一个外部函数但没有成功。
这是我试图调用的函数:
这是我用来注册它的代码:
以下是 JIT 将运行的 c 代码:
我的代码不正确还是别的什么?有任何想法吗?谢谢。
c++ - 如何嵌入 LLVM?
LLVM 核心项目包括:
- 编译器 - 将源代码转换为 LLVM IR
- VM - 执行编译的 IR 代码
如何将 VM 嵌入到 C++ 应用程序中?
c++ - LLVM 自动 C++ 链接
在一些 LLVM 教程中,我看到将 C 函数绑定到基于 LLVM 的自定义语言相当容易。LLVM 给程序员一个指向函数的指针,然后可以将其与 LLVM 生成的代码混合在一起。
使用 C++ 库执行此操作的最佳方法是什么。假设我有一个相当复杂的库,如 Qt 或 Boost,我想绑定到我的自定义语言。我是否需要创建一个存根库(如 Python 或 Lua 需要),或者 LLVM 是否提供某种外部函数接口 (FFI)?
c# - 有没有办法用 C# 编写 LLVM 前端编译器?
有没有办法用 C# 编写 LLVM 前端编译器?
jit - 寻找基于 LLVM 的语言,该语言允许即时重新加载部分二进制文件
是否有任何基于 LLVM 的无 GIL 语言,主要针对 JIT 执行,允许动态重新加载部分代码?
就像重新编译 1 个类,并在不停止整个程序的情况下重新加载它。
有人试过吗?
有没有机会用 clang 做到这一点(当然,有很多开发人员谨慎、限制和手动状态处理)?