Linux 中的 -emit-llvm

2024-01-13

我是 LLVM 的新手,尝试在 Linux 上生成人类可读的 .ll 文件。我安装了 llvm-gcc,但据我所知它只能生成汇编代码(-S 选项)。有什么办法可以得到类似于 llvm 在线生成的东西compiler http://llvm.org/demo/index.cgi?

这就是我得到的-S -emit-llvm在 Linux 上:

    .file   "hello.c"

    .ident  "GCC: (Ubuntu/Linaro 4.5.1-7ubuntu2) 4.5.1 LLVM: "

    .text
    .globl  main
    .align  16, 0x90
    .type   main,@function
main:
    pushl   %ebp
    movl    %esp, %ebp
    subl    $8, %esp
    movl    $.L.str, 4(%esp)
    movl    $1, (%esp)
    call    __printf_chk
    xorl    %eax, %eax
    addl    $8, %esp
    popl    %ebp
    ret
.Ltmp0:
    .size   main, .Ltmp0-main

    .type   .L.str,@object
    .section    .rodata.str1.1,"aMS",@progbits,1
.L.str:
    .asciz   "hello world\n"
    .size   .L.str, 13

    .section    .note.GNU-stack,"",@progbits

这就是我想要得到的:

; ModuleID = '/tmp/webcompile/_7829_0.bc'
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-linux-gnu"

@.str = private constant [12 x i8] c"hello world\00", align 1 ; <[12 x i8]*> [#uses=1]

define i32 @main() nounwind {
entry:
  %0 = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @.str, i64 0, i64 0)) nounwind ; <i32> [#uses=0]
  ret i32 0
}

declare i32 @puts(i8* nocapture) nounwind

在 Windows 上,我使用相同的命令成功获取了该文件:llvm-gcc -S -emit-llvm hello.c.


llvm-gcc 的 ubuntu 包装中出现了严重损坏。 llvm-gcc 的版本是 4.2.1,但这里我们看到的是 4.5。请报告 Ubuntu 错误。

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

Linux 中的 -emit-llvm 的相关文章

  • LLVM 检索 AllocaInst 的名称

    我正在尝试检索传递给 a 的指针的名称cudaMalloc https docs nvidia com cuda cuda runtime api group CUDART MEMORY html group CUDART MEMORY 1
  • Linux 中的 -emit-llvm

    我是 LLVM 的新手 尝试在 Linux 上生成人类可读的 ll 文件 我安装了 llvm gcc 但据我所知它只能生成汇编代码 S 选项 有什么办法可以得到类似于 llvm 在线生成的东西compiler http llvm org d
  • Debian 8 上的 Python numba / llvmlite - 我无法构建 llvmlite

    我尝试在 Debian 8 系统上安装 numba 如下所述 http llvmlite pydata org en latest install index html http llvmlite pydata org en latest
  • 适用于 Windows 的 LLVM C++ IDE

    是否有一些适用于 Windows 的 C C IDE 融合的使用 LLVM 编译器 和 Clang C C 分析器 就像现代 Xcode 一样 我有 Dev Cpp 它使用过时的 GCC 并且代码 块 https en wikipedia
  • MacOS 上使用 clang-15 时 FindTerminfo 中的 CMake 错误

    我在我的项目中使用 llvm 并使用 cmake 找到它find package LLVM REQUIRED CONFIG 配置失败并显示消息 cmake CMake Error at Applications CMake app Cont
  • 如何在 LLVM 中将 genericValue 转换为 Value?

    我从事口译工作 我在内存中有一个变量的地址 我设法从它中获取实际值 并使用 LoadValueFromMemory 函数将其放入 genericValue 中 现在我需要创建一个 StoreInst 并希望将获得的值放入 Value 对象中
  • 使用 LLVM pass 添加内在函数

    我使用 LLVM 通道向输入代码添加了一个内在函数 我能够看到内部调用 但我无法弄清楚如何将代码编译到我的目标架构 x86 64 我正在运行以下命令 clang llvm config ldflags libs all ff s o foo
  • 使用 llvm-prof 收集 LLVM 边缘分析

    我正在使用这些命令来编译下面的代码以收集 trunk llvm 中的边缘 块分析 clang emit llvm c sort c o sort bc opt insert edge profiling sort bc o sort pro
  • LLVM 的 amd64 输出中向量的对齐

    我正在尝试通过 LLVM 在结构内部使用向量 我的结构有以下 C 定义 struct Foo uint32 t len uint32 t data 32 attribute aligned 16 下面是一些 LLVM 代码 用于将 42 添
  • 在源代码上添加一个新属性,该属性会传播到 LLVM 中的 MC 级别?

    我对以下内容的传播方式感兴趣 void foo int attribute aligned 16 p 在这种情况下 指针的 对齐 在 MC 级别可用 但显然没有使用 LLVM IR 元数据方法来实现这一点 对齐信息对于某些目标非常重要 这些
  • LoadInst 和 StoreInst 值和地址 LLVM

    我有一个文件 print c 它有两个功能 void printLoad print address and value of memory location from which value printf address value vo
  • LLVM 执行哪些优化?

    我想具体了解一下LLVM的各个优化级别分别对应什么 也就是说 我想知道当我使用 llvm 或 clang 或 opt 的 0x 选项时 哪些优化过程是准确执行的 在前端之外 以及按什么顺序执行 相应工具的 man 没有提供关于此事的太多信息
  • 防止运行测试时优化掉未使用的静态函数

    我正在编写一个将利用 LLVM 的库 通过inkwell https github com TheDan64 inkwell 来 JIT 编译一些函数 这些函数需要能够回调我的代码中的一些 Rust 函数 我让它工作 但我的单元测试不起作用
  • 如何在 Mac 上使用 Emscripten emcc 和 make 时包含 ncurses

    我正在尝试构建一个项目 即 Angband 的源代码 http rephial org downloads 3 3 angband v3 3 2 tar gz http rephial org downloads 3 3 angband v
  • 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
  • 识别 IR 中的阵列类型

    我一直在尝试使用以下代码来识别 IR 中的数组访问 for BasicBlock iterator ii BB gt begin ii2 ii BB gt end ii Instruction I ii if GetElementPtrIn
  • C++11 的 LLVM&Clang 支持

    我有一些为 MS VC 10 编写的代码 我使用 C 11 特别是像这样的表达式 std function
  • XCode 4.2 编译器错误

    当我使用 XCode 4 2 创建新项目 例如 单视图 iOS 应用程序 时 支持文件 文件夹中的 main m 文件如下所示 import
  • 通过 cmake 链接 libc++ 时 libc++abi 的链接问题

    我正在尝试构建一个简单的 hello world C 使用 LLVM Clang 3 7 0 的程序 根据工具链的源代码构建libc 使用命令行 clang std c 14 stdlib libc fno exceptions hello

随机推荐

  • 如何在 Nginx 中启用 h2c?

    有没有办法在 Nginx 1 9 5 及以上版本中启用 h2c 又名 HTTP2 明文 我尝试过在 TL 上使用 h2https chronic101 xyz https chronic101 xyz它可以工作 但是我也想在端口 80 上实
  • 在 Linux 中将一个串行端口通过管道连接到另一个端口[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将一个串行端口数据 无论数据类型 传输到另一个串行端口的方法 就我而言 我试图从一个串行端口接收数据 并通过连接到另一个串行
  • 循环创建前 12 个月的列表

    有没有办法使用 PHP 循环根据当前月份 不包括当前月份 创建如下所示的前 12 个月的列表 该值应始终是每月的第一天 格式 yyyy mm dd 下拉列表本身应仅显示年份和月份 格式 yyyy mm
  • Extjs 5. Ext.application 不是一个函数。为什么?

    我在控制台中收到错误 Ext application is not a function My index html文件包含以下代码 While app js只有这段代码 取自一个演示 Ext applic
  • 如何强制从 iDevice 中删除应用程序

    我使用 TestFlight 分发应用程序进行 Beta 测试 客户拥有运行 iOS5 1 的 iPhone 4 并且无法从主屏幕删除应用程序 该应用程序是通过 TestFlight OTA 安装的 该应用程序图标上有一个空的进度条 点击时
  • Java 8 函数式接口的 lambda 模糊方法 - 目标类型

    我有以下代码 public class LambdaTest1 public static void method1 Predicate
  • 调色板库在 GridView 中滚动时更改颜色

    我在实现新的 Palette 库时遇到了一些问题 在 4 4 4 上 com android support palette v7 21 0 我正在尝试为 GridView 中每个项目的一部分着色 效果很好 但是当我将一个项目从屏幕上滚动然
  • NameError:名称“fcntl”未定义

    我已经安装了PuDB on python 3 4 2这是在virtualenv并运行在windows 7 sp1 我首先激活virtualenv workon env01 然后进入python控制台 python 现在我需要测试 PuDB
  • Excel 到 ADO RecordSet 的数字单元格具有空值

    我正在尝试从 Excel 文件导入一些数据来使用 但遇到了数字单元格值的问题 我有一些列的值 其中一些值都是数字 而其他值可能是数字和非数字值的混合 没有特殊字符 只有 A Z 字母 要将数据提取到记录集中 我正在执行以下操作 Set oc
  • PHP 中的负零等于 0 吗?

    我有一个非常基本的 MySQL 查询 它从数据库表中读取行 并将行值添加或减去定义为 total balance 的 PHP 字符串 例如 statement details query mysqli query con SELECT tr
  • 如何定义一个函数来检查句子结束后字符串是否有空格?

    这是我到目前为止尝试过的 def whitespace string for s in string if s 1 return s ended with whitespace s else return s was whitespace
  • round() 和 trunc() 函数有什么区别?

    我对这些功能很困惑 在数学中 rounding http en wikipedia org wiki Rounding表示四舍五入到最接近的整数 因此四舍五入 3 4 的结果是 3 四舍五入 3 6 的结果是 4 Truncating ht
  • Crystal Reports 使用 13.0.2000 的哪个版本?

    我的任务是对几年前编写的 ASP NET Web Forms 应用程序进行一些小的更改 该应用程序的实现者已经不在我们身边 几年前就离开了 该应用程序中有 6 个报告 所有报告都使用某些版本的 Crystal Reports 当我看着Web
  • 如何使用 Eloquent 查询两个坐标之间的距离

    我知道这个问题已经被问过很多次了 但我没想到要根据我的需要来制作 我需要查询距离另一个用户最近的用户 基本上 我有一个users表 这个表有一个one to one与的关系users locations具有纬度和经度字段的表 所以我看过这个
  • 是否可以一步在堆上创建 lambda? [复制]

    这个问题在这里已经有答案了 我们可以像这样创建一个 lambda auto x 我可以在堆上创建一个副本 如下所示 auto y new decltype x x 问题是 是否可以一步完成此操作 在堆上创建 lambda 而不需要额外的步骤
  • 我可以阻止 JDialog 在按下退出/输入键时关闭吗?

    我创建了一个对话框来接受用户击键来更改菜单项的键绑定 我希望 Enter 和 escape 成为用户可以绑定的键 但它们都会关闭对话框 如何拦截这些压力机 编辑 对话框是使用 JOptionPane 和自定义组件创建的 GetKeyComp
  • 初始化全局变量类

    对于这样一个基本问题表示歉意 但我无法弄清楚 我知道你可以像这样初始化一个类 QFile file C example 但是如何从全局变量初始化它呢 例如 QFile file QFile class int main file need
  • 有没有办法仅通过国家/地区名称获取时区? [复制]

    这个问题在这里已经有答案了 您好 我知道这个问题被问了很多次 但这些问题与网络服务有关 我正在开发一个应用程序 显示用户选择国家 地区的时区 例如 我有所有国家 地区的列表 当用户从中选择一个国家 地区时 我想按国家 地区名称 可能是字符串
  • Python Facebook API - 光标分页

    我的问题涉及学习如何使用 Facebook 的 Python API 检索我的整个好友列表 当前结果返回一个具有有限数量好友的对象以及指向 下一页 的链接 我如何使用它来获取下一组朋友 请发布可能重复的链接 任何帮助将不胜感激 一般来说 我
  • Linux 中的 -emit-llvm

    我是 LLVM 的新手 尝试在 Linux 上生成人类可读的 ll 文件 我安装了 llvm gcc 但据我所知它只能生成汇编代码 S 选项 有什么办法可以得到类似于 llvm 在线生成的东西compiler http llvm org d