我剛剛發現了LLVM,現在還不太瞭解。我一直在嘗試使用llvm in browser。我可以看到,我寫的任何C代碼都被轉換爲LLVM字節碼,然後轉換爲本地代碼。該頁面顯示字節碼的文本表示。例如,對於下面的C代碼:寫llvm字節碼
int array[] = { 1, 2, 3};
int foo(int X) {
return array[X];
}
出現下面的字節碼:
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"
@array = global [3 x i32] [i32 1, i32 2, i32 3] ; <[3 x i32]*> [#uses=1]
define i32 @foo(i32 %X) nounwind readonly {
entry:
%0 = sext i32 %X to i64 ; <i64> [#uses=1]
%1 = getelementptr inbounds [3 x i32]* @array, i64 0, i64 %0 ; <i32*> [#uses=1]
%2 = load i32* %1, align 4 ; <i32> [#uses=1]
ret i32 %2
}
我的問題是:我寫的字節碼,並把它交給LLVM彙編轉換爲本地代碼跳過編寫C代碼的第一步?如果是的話,我該怎麼做?有沒有人對我有任何指點?
http://llvm.org/docs /CommandGuide/index.html – 2011-03-24 09:45:33