gpt4 book ai didi

llvm - -emit-llvm 在 Linux 中

转载 作者:行者123 更新时间:2023-12-04 10:44:13 24 4
gpt4 key购买 nike

我是 LLVM 的新手,并尝试在 Linux 上生成一个人类可读的 .ll 文件。我安装了 llvm-gcc 但我看到它只能生成汇编代码(-S 选项)。有什么办法可以得到类似 llvm online 生成的东西compiler ?

这就是我得到的 -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 错误。

关于llvm - -emit-llvm 在 Linux 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5385212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com