Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于解析LLVM IR的Haskell包?_Haskell_Package_Llvm_Llvm Ir - Fatal编程技术网

用于解析LLVM IR的Haskell包?

用于解析LLVM IR的Haskell包?,haskell,package,llvm,llvm-ir,Haskell,Package,Llvm,Llvm Ir,我正在寻找一种将LLVM IR代码(最好是汇编形式)解析为某种内部Haskell数据类型的方法,以便以后处理时使用。我想有一些Haskell软件包可以做这件事,但我似乎找不到 有什么建议吗?有,但它们的解析部分还远远不够完整,可能会落后于最新的LLVM版本。红外线的生成要完整得多。尽管如此,只要你一碰到它,就不难添加所缺少的内容。我用这些绑定来编写编译器后端,它们从来都不是一个好东西 有什么建议吗 使用通孔;具体来说,我们应该做到这一点 这并不是您想要的,您必须使用其他LLVM-C函数来查询或修

我正在寻找一种将LLVM IR代码(最好是汇编形式)解析为某种内部Haskell数据类型的方法,以便以后处理时使用。我想有一些Haskell软件包可以做这件事,但我似乎找不到

有什么建议吗?

有,但它们的解析部分还远远不够完整,可能会落后于最新的LLVM版本。红外线的生成要完整得多。尽管如此,只要你一碰到它,就不难添加所缺少的内容。我用这些绑定来编写编译器后端,它们从来都不是一个好东西

有什么建议吗

使用通孔;具体来说,我们应该做到这一点


这并不是您想要的,您必须使用其他LLVM-C函数来查询或修改模块,但至少您可以支持最新的LLVM IR版本。

Haskell的现代LLVM软件包是最新的。它具有将LLVM字节码模块从字符串转换为AST的Haskell ADT的绑定

见:

导入LLVM.General
导入LLVM.General.Analysis
导入LLVM.General.Context
导入控制.Monad.Error
main::String->IO()
主src=do
_做
运行错误$withModuleFromString上下文src$\mod->do
太完美了!!这正是我要找的!非常感谢。
import LLVM.General
import LLVM.General.Analysis
import LLVM.General.Context
import Control.Monad.Error

main :: String -> IO ()
main src = do
  _ <- withContext $ \context -> do
    runErrorT $ withModuleFromString context src $ \mod -> do
      ast <- moduleAST mod
      -- Your logic here.
  return ()