LLVM 工具使用

opt

opt -S -instcombine src.ll -o out.ll

使用instcombine参数优化ll,很像LLVM PASS 优化器

更多的优化可以查看 opt -h

clang

clang.exe -emit-llvm -S main.c -o main.ll

将c代码编译为LLVM IR

llvm-as

llvm-as.exe src.ll -o src.bc

将LLVM IR转为bitcode的形式

llc

llc.exe src.bc -o src.asm

将bitcode文件转为汇编文件

llvm-dis

llvm-dis.exe src.bc -o out.ll

将bitcode转为LLVM IR

#include <stdio.h>
extern int add(int a, int b);
int main()
{
    printf("%d\n",  add(1, 2));
    return 0;
}
clang -emit-llvm -S main.c -o main.ll
clang -emit-llvm -S lib.c -o lib.ll

llvm-as.exe main.ll -o main.bc
llvm-as.exe lib.ll -o lib.bc

llvm-link.exe lib.bc main.bc -o out.bc

类似传统连接器将多个bitcode文件,变成一个,具体可以看下生成的LLVM IR

lli

lli.exe out.bc

执行(JIT) LLVM bitcode

See also:

posted @ 2021-06-09 17:07  Ajanuw  阅读(380)  评论(0编辑  收藏  举报