6

我在这里和那里阅读有关 llvm 的信息,可用于缓解 c++ 中跨平台编译的痛苦,我试图阅读文档,但我不明白如何在现实生活中的开发问题中使用它,有人可以解释一下吗我用简单的话我该如何使用它?

4

5 回答 5

6

LLVM 的关键概念是程序的低级“中间”表示 (IR)。此 IR 处于汇编代码级别,但它包含更多信息以促进优化。

LLVM 的强大之处在于它能够将此中间表示的编译推迟到特定的目标机器,直到代码需要运行之前。即时 (JIT) 编译方法可用于应用程序在需要它之前生成它需要的代码。

在许多情况下,您在程序运行时获得的信息比您在总部获得的更多信息,因此可以大大优化程序。

首先,您可以将 C++ 程序编译为单个中间表示,然后从该 IR 将其编译到多个平台。

您还可以尝试 Kaleidoscope 演示,它会引导您创建一种新语言,而无需实际编写编译器,只需编写 IR。

在性能关键型应用程序中,应用程序基本上可以在需要运行之前编写自己的代码来运行。

于 2009-05-20T21:46:52.473 回答
2

你为什么不去LLVM网站并查看那里的所有文档。他们非常详细地解释了 LLVM 是什么以及如何使用它。例如,他们有一个入门页面。

于 2009-05-12T17:02:00.360 回答
1

顾名思义,LLVM 是具有代码生成器的低级虚拟机。如果你想编译它,你可以使用 gcc 前端或clang,这是 LLVM 的 c/c++ 编译器,它仍在进行中。

于 2009-05-12T09:59:53.843 回答
1

需要注意的是,关于目标的大量信息来自编译时使用的系统头文件。LLVM 不会推迟解决诸如“指针大小”或“字节布局”之类的问题,因此如果您使用 64 位头文件为 little-endian 平台进行编译,则不能使用该 LLVM 源代码来定位 32 位 big-endian 程序集输出佩特。

于 2011-03-05T07:30:24.723 回答
1

书中有一章很好地解释了这里的一切:www.aosabook.org/en/llvm.html

于 2011-08-15T11:18:04.017 回答