我有這個 C 檔案:
int mult() {
int a =5;
int b = 3;
int c = a * b;
return c;
}
我將它編譯為 LLVM IR,如下所示:
$ clang -emit-llvm -S multiply.c -o multiply.ll
然后我將它編譯成各種 x86 程式集,如下所示:
$ llc --filetype asm -o multiply.apple.s --aarch64-neon-syntax=apple multiply.ll
$ llc --filetype asm -o multiply.intel.s --x86-asm-syntax=intel multiply.ll
如何輸出 ARM V8 程式集?有沒有辦法將 C 檔案轉換為輸出 ARM V8 程式集,即使沒有 LLVM IR,如果 LLVM IR 不能做到這一點?例如,我在llc 檔案中看不到它。
uj5u.com熱心網友回復:
llc -march=aarch64 multiply.ll -o multiply.s會做的。
但是,您實際上不應該這樣做,因為從 C 到 LLVM IR 的轉換是依賴于目標的。簡單的事情會奏效,復雜的程式會以看似不可能的方式崩潰。
相反,直接從 C 轉到您的目標clang -target arm64。隨著您的程式變得越來越復雜,例如使用系統頭檔案,您需要安裝與目標平臺匹配的 SDK。Even#include <stdlib.h>在兩個平臺上非常不同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/424416.html
上一篇:標記堆疊區域變數(asm)
