LLVM - 如何将 AST 转换为 IR

2024-01-18

我知道一个AST解析器生成的数据用于在前端生成 IR。

我想知道如何解析 AST,然后将其转换为 IR(问题汇编或位码),

AST 是一棵树,从 AST 到 IR 的转换涉及哪些步骤。


发射LLVM IR from Clang ASTs发生在 Clang 的code gen阶段。此阶段的代码位于lib/CodeGen/(相对于 Clang 的源根)。不需要解析 AST,因为 Clang 将 AST 存储在内存数据结构中。代码生成本质上是 AST 的递归遍历,将 IR 发送到Module。如果您对其中的任何特定步骤感兴趣,那么检查它的最佳方法是查看代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LLVM - 如何将 AST 转换为 IR 的相关文章

  • 使用 Emscripten 导出所有函数

    我想通过 JavaScript 以简单的方式使用 C 源代码 仅使用免费 自由软件 所以 Emscripten 似乎是一个不错的选择 https kripken github io emscripten site docs porting
  • 如何告诉 Clang 不要冒充其他编译器?

    我过去遇到过这个问题 LLVM 定义 GNUC https www google com search q 22 GNUC 22 LLVM bug 但它不能使用 GCC 可以使用的程序 我在 Windows 上再次遇到它 LLVM 定义 M
  • 链接不支持异常处理的代码 (C++/LLVM)

    我正在尝试使用 llvm 作为我的软件的代码生成后端 并且刚刚意识到 llvm 的编译不支持 C 异常处理 为了提高效率 然而 在我的软件中 我广泛使用异常处理 如果我将所有回调函数包装在 try catch blocks 中 这样就不需要
  • llvm OCaml 绑定

    我正在研究 llvm OCaml 绑定 我通过 opam 安装了 llvm 包 opam install llvm 当我在 utop 中使用 llvm 时 出现以下错误 require llvm Error The external fun
  • LLVM 6.0.0 的构建大小很大 (42G)

    I built llvm 6 0 0从源头开始 一切正常 我只是想知道它的尺寸怎么这么大 42G 我可以轻松删除一些目标文件或其他文件以使构建目录更小吗 du hs GIT llvm 6 0 0 build 42G home oren GI
  • 设置 llvm::ConstantInt 的值

    我正在玩 LLVM 我考虑过改变中间代码中常量的值 然而对于班级llvm 常量Int http llvm org docs doxygen html classllvm 1 1ConstantInt html 我没有看到设置值函数 知道如何
  • LoadInst 和 StoreInst 值和地址 LLVM

    我有一个文件 print c 它有两个功能 void printLoad print address and value of memory location from which value printf address value vo
  • 有谁能够在 iOS 上使用 Address-Sanitizer(称为 asan 或 -fsanitize=address)吗?

    地址消毒剂https code google com p address sanitizer wiki AddressSanitizer https code google com p address sanitizer wiki Addr
  • 构建 LLVM 失败并显示空错误消息

    我正在尝试构建 LLVM 3 1 和 Clang 3 1 我遵循了入门指南铿锵的网站 http clang llvm org get started html 检查必要位置的存储库 获取 Python 等 如果我安装了 Python 3 3
  • 防止运行测试时优化掉未使用的静态函数

    我正在编写一个将利用 LLVM 的库 通过inkwell https github com TheDan64 inkwell 来 JIT 编译一些函数 这些函数需要能够回调我的代码中的一些 Rust 函数 我让它工作 但我的单元测试不起作用
  • 如何在 Xcode 中禁用一个文件的优化

    我的 Xcode 项目依赖于另一个库 当我使用以下命令构建项目时 这会导致项目出现错误 O3 option 这些错误仅存在于一个文件中 所以我想关掉 O3 该文件的选项 是否可以 打开目标 看下Build Phases 打开Compile
  • ld:警告:__DATA/__objc_imageinfo__DATA 节的大小意外地大

    有谁知道这个警告是什么意思 接下来是错误 Command Developer Platforms iPhoneSimulator platform Developer usr bin llvm gcc 4 2 failed with exi
  • LLVM 尾调用优化

    以下是我对事情的理解 当函数 f 调用自身是其最后一个动作时 它是尾递归的 通过形成循环而不是再次调用函数 可以显着优化尾递归 函数的参数已就地更新 并且函数体再次运行 这称为递归尾调用优化 LLVM 在使用 fastcc GHC 或 Hi
  • C++11 的 LLVM&Clang 支持

    我有一些为 MS VC 10 编写的代码 我使用 C 11 特别是像这样的表达式 std function
  • LLVM cpp 后端,它会取代 c 后端吗?

    我的问题是关于 CPP 后端 它与 C 后端的用途相同吗 C 后端是我最喜欢的 LLVM 功能之一 我对它被删除感到非常沮丧 真正的区别是什么 我非常感谢任何帮助 参考 LLVM 3 1 发行说明 http llvm org release
  • 是否可以使用 gold 链接器编译和链接 Clang/LLVM?

    我正在为 LLVM Clang 编写自定义通道 重新编译往往需要一段时间并使用大量内存 我听说 gold 链接器 1 比标准 ld 链接器花费更少的时间并且 2 使用更少的内存 有没有办法将标志传递到 LLVM Clang 构建过程并更改为
  • LLVM 互操作性(如 JVM 或 .Net)- 可以吗?

    我最近尝试了一些不同的 LLVM 前端 例如 Clang C Familiy LDC2 D Terra 所有这些语言都可以编译成 LLVM IR 有点可读 和 LLVM IR Bitcode 那么现阶段他们都处于同一 水平 对吗 我的问题是
  • LLVM IR:如何调用另一个 .ll 文件中的函数

    我正在编写 LLVM IR 代码 我可以调用另一个 ll 文件中的函数吗 例如 在 ll文件中 有一个函数foo 我可以在 b ll 中使用这个函数 就像调用 foo 一样吗 如果是这样 我怎样才能包括a ll Thanks 您需要在调用函
  • 如何在 LLVM 中实现字符串数据类型?

    我一直在看LLVM http llvm org 最近 我发现它是一个非常有趣的架构 然而 浏览教程和参考材料 我看不到任何关于如何实现的示例string http en wikipedia org wiki String computer
  • 如何检查 Xcode 使用的 LLVM 编译器版本?

    我在 OS X 10 8 2 上使用 Xcode 4 5 2 我如何知道 Xcode 使用的是哪个版本的 LLVM 编译器 从命令行 07 40 35 andrew iMac SalesIQ siq 303 llvm gcc v Using

随机推荐

  • 使用 Google 新闻 RSS URL 时如何指定检索本地新闻?

    我正在尝试构建一个使用 Google News RSS 的 RSS 解析器 我只需定位以下 URL 即可从新闻 URL 检索新闻文章 https news google com news section output rss 但是 在谷歌新
  • Flutter无法显示视频

    import package video player video player dart import package flutter material dart void main gt runApp VideoApp class Vi
  • php/Codeigniter--如何通过排除时间来比较仅日期

    我的数据库表中有一个字段为creater date作为日期时间并以以下形式存储值2013 09 13 02 12 44 现在我必须将今天的日期 没有时间 与creater date表字段 我尝试了下面的代码 但它显示错误 function
  • 错误:与元素类型“uses-sdk”关联的属性“tools:overrideLibrary”的前缀“tools”未绑定

    在 mac osx Sierra 上从 unity 构建 apk 文件时出现以下错误 在我重新启动我的 MacBook 之前 这也可以正常工作 但现在不行 我在下面添加了错误详细信息 注意 我正在使用 facebook sdk Error
  • 提取标签 之间的数据

    我有如下数据 如何打印两个标签之间的数据 我希望数据是命令分隔的 csv 格式 我的方法是将数据转换为水平格式 然后在每第四列后进行剪切并转换为垂直格式 xml文件中的数据
  • 如何调整选择下拉高度[重复]

    这个问题在这里已经有答案了 我在互联网上寻找解决方案 每个人都在谈论不同的事情或者只是说does size x help 我做了一个 Plunk 来说明我的问题 当我点击下拉菜单时 我的屏幕上最多可以看到第 20 项 我希望能够将其设置为显
  • npm 错误!在 Docker 化 Node.js Web 应用程序期间向 https://registry.npmjs.org 发出请求

    你好 我正在尝试在节点中对我的项目进行 dockerizing 并做出反应 我的操作系统是 CentOS 8 1 版本节点 12 16 1 和 Docker 版本 19 03 8 我按照节点的教程进行操作https nodejs org f
  • 为什么将 VPC 与 AWS Lambda 或 AWS DynamoDB 结合使用?

    我读到很多人都在努力将 Lambda 连接到 DynamoDB 因为他们生活在 VPC 中 但我的问题是 为什么要使用 VPC VPC 旨在保护直接连接到外部世界 又称互联网 的服务 例如 像 RDS 这样的东西 它们只是坐以待毙 等待任何
  • 类的成员字段顺序是否“稳定”?

    考虑到 c 或 c 11 我有一些数据数组 其中包含 2 N 整数 代表 N 对 对于每个偶数 i 0 2 4 6 2 N 它认为 data i data i 1 形成这样一个对 现在我想要一种简单的方法来访问这些对 而不需要编写如下循环
  • 在 ASP.NET 中将文本下载为文件

    我正在尝试将屏幕上的一些文本输出下载为文本文件 以下是代码 它在某些页面上起作用 而在其他页面上根本不起作用 谁能建议这里出了什么问题吗 protected void Button18 Click object sender EventAr
  • UI 测试中通用角色名称不完整

    我正在使用 Xcode 7 的新功能 UI 测试 记录交互后 Xcode自动生成代码 void testDoubleTapToolBarItem XCUIApplication alloc init tabBars buttons U517
  • bash/expect 脚本中的错误处理

    下面粘贴的是一个 bash 脚本 结合了 Expect 代码 其中 通过 ssh 连接到远程主机 收集文件并准备 tgz 文件 将 tgz 文件从远程主机复制到本地计算机 再次通过 ssh 连接到远程主机并删除之前创建的 tgz 文件 最后
  • 我必须在 javascript 函数中返回一些东西吗?

    在 JavaScript 函数中 我需要返回某些内容 true 或 false 吗 到目前为止 我编写的所有没有返回任何内容的函数都工作得很好 我只是好奇 不 Javascript 函数不需要返回值 如果你调用的函数不return一个值 你
  • 使用 css 或 javascript 将视频放置为 100% 高度和 100% 宽度

    我想放置一个 100 宽度和 100 高度的 html5 视频 当然带有 video 标签 该视频将在后台播放 这是一个带有图像的示例 我想要与视频完全相同的示例 我只是不知道如何做到这一点 image background image u
  • 对 Web 服务调用中的会话进行只读访问?

    我们有一个 net asmx Web 服务 它从 javascript 调用 使用 ASP Net AJAX 并且需要访问会话 WebMethod true public string DoSomethingOnTheServer 我们遇到
  • google_drive 和 google-api-client 中的法拉第冲突

    我希望能够使用 google api client gem 进行服务到服务身份验证 并使用 google drive api 访问电子表格 不幸的是 这些宝石似乎由于依赖项中需要不同版本的法拉第而发生冲突 有人知道如何解决这个问题吗 如果首
  • 当 closeonselect 为 false 时关闭 select2

    当您点击离开时 是否有更好的方法来关闭 select2 我把它关闭了 document click function event if event target hasClass select2 selection rendered eve
  • 使用 sip.js 录制 SIP 通话中的麦克风和音频

    晚上好 堆栈溢出 我的一个项目确实需要帮助 我在该项目中使用 sip js 和 VoIP 来拨打电话号码 The Goal 我想允许用户录制音频和麦克风并将数据保存在服务器上 以 base64 编码或作为文件 因此 对话结束后我可以再次听到
  • kotlin.UninitializedPropertyAccessException:lateinit 属性首选项尚未初始化

    我在多个项目中使用了共享首选项的代码 它工作正常 但现在当我在另一个项目中应用相同的代码时 它停止工作 以下是错误 kotlin UninitializedPropertyAccessException lateinit 属性首选项尚未初始
  • LLVM - 如何将 AST 转换为 IR

    我知道一个AST解析器生成的数据用于在前端生成 IR 我想知道如何解析 AST 然后将其转换为 IR 问题汇编或位码 AST 是一棵树 从 AST 到 IR 的转换涉及哪些步骤 发射LLVM IR from Clang ASTs发生在 Cl