6
我试图运行以下example以使用LLVM工具链编译,汇编和反汇编小程序。使用LLVM工具链编译,组装和反汇编
我的目的是了解它是如何工作的,所以在进一步的尝试中,我可以通过改变和/或重新排序组装指令来做一些性能测试。
首先,我先得到一个虚拟程序的咬代码:
% llvm-gcc -O3 -emit-llvm hello.c -c -o hello.bc
一旦我有一口代码,我尝试使用LLVM-DIS工具来看看LLVM的汇编代码和LLC编译程序返回到本地组装使用LLC代码生成器(只是为了试图摇动):
% llvm-dis < hello.bc | less
% llc hello.bc -o hello.s
但在这两种情况下,我得到以下错误:
llvm-dis: Invalid MODULE_CODE_GLOBALVAR record
有关如何解决此问题的任何想法?
我已经使用Google搜索,但我还没有找到解决方案。我也尝试过使用
otool -tV hello
但是输出与llvm不兼容。相反,得到下面的汇编格式:
.section __TEXT,__text,regular,pure_instructions
.globl _main
.align 4, 0x90
_main:
Leh_func_begin1:
pushq %rbp
Ltmp0:
movq %rsp, %rbp
Ltmp1:
subq $16, %rsp
Ltmp2:
leaq L_.str(%rip), %rax
我得到:
__TEXT,__text) section
start:
0000000100000eb0 pushq $0x00
0000000100000eb2 movq %rsp,%rbp
0000000100000eb5 andq $0xf0,%rsp
0000000100000eb9 movq 0x08(%rbp),%rdi
0000000100000ebd leaq 0x10(%rbp),%rsi
0000000100000ec1 movl %edi,%edx
0000000100000ec3 addl $0x01,%edx
这不适用于我,我猫编译后者组件,例如:
% gcc hello.s -o hello.native
谢谢提前。
LLVM-GCC已被弃用。你可以尝试叮铛声吗? – arrowd 2012-01-04 08:23:55
我有类似的问题。你有没有解决它? – Cartesius00 2012-08-11 12:05:55