2015-08-15 103 views
0

1)使用IRBuilder可以独立于操作系统生成系统调用吗?我读过这样的内容:http://llvm.lyngvig.org/Articles/Mapping-High-Level-Constructs-to-LLVM-IR#59 看来,当我生成LLVM IR并想要生成系统调用,例如输出到终端时,我必须将LLVM IR定制到Linux/Windows/Mac。或者LLVM有一些系统调用的接口?与操作系统无关的LLVM IR系统调用

2)有这个工具http://llvm.org/docs/CommandGuide/llc.html能够做我想要的东西在1)?

+0

我也希望有关链接,系统调用和这些东西的学习材料的任何提示。 –

回答

2

绝对不是。 LLVM是一个编译器后端;它不关心系统调用。系统调用通常在平台的C库中使用,它通过混合使用低级C和特定于目标的程序集来实现它们。系统调用既取决于操作系统又取决于目标(CPU)。

关于研究这些东西的更多材料 - 你有我的同情心。这不是一个有据可查的地方,因为99.9%的程序员从不需要在这个级别上运行。我建议你开始拿起一些基本的汇编程序并从那里开始。

+0

谢谢!那么,如果我想为我的玩具语言编写LLVM IR,在Linux和Windows终端上打印“Hello world”,那么解决方案是什么? –

+1

@OndrejSmid:你可以调用一个标准的C库函数,如'puts',并将你的IR创建的目标文件与C库链接起来。如果你想避免C库,你必须实现你自己的系统调用包装 –