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