小编Ada*_*dam的帖子

从Haskell代码生成LLVM IR

我的目标是使用不同语言(主要是C,C++,Obj-C和Haskell)的源代码,并告诉他们各种统计数据.(例如,变量,函数,内存分配,复杂性等)

LLVM似乎是一个完美的工具,因为我可以为这些语言生成bitcode,并且使用LLVM的可定制传递,我几乎可以做任何事情.对于C系列它工作正常,以C程序(test.c)为例:

#include <stdio.h>
int main( )
{
    int num1, num2, sum;
    printf("Enter two integers: ");
    scanf("%d %d", &num1, &num2); 
    sum = num1 + num2;
    printf("Sum: %d",sum);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我跑:

clang -emit-llvm test.c -c -o test.bc
opt -load [MY AWESOME PASS] [ARGS]
Run Code Online (Sandbox Code Playgroud)

瞧,我几乎有我需要的一切:

1 instcount - Number of Add insts
 4 instcount - Number of Alloca insts
 3 instcount - Number of Call insts
 3 instcount - Number of Load insts
 1 instcount - Number of Ret …
Run Code Online (Sandbox Code Playgroud)

haskell llvm ghc llvm-ir

7
推荐指数
0
解决办法
752
查看次数

标签 统计

ghc ×1

haskell ×1

llvm ×1

llvm-ir ×1