LLVM IR 本机方法

LLVM IR Native methods

作为一个宠物项目,我正在编写自己的编程语言并尝试编译为 LLVM IR。

看了一些教程和示例后,我对它的工作方式有点习惯了,但还有一件事我不太确定。

例子中,用的最多

declare i32 @puts(i8* nocapture) nounwind

写入控制台。我认为它们被称为本机方法,但谷歌搜索并没有真正帮助我。

但是,我想要更多这样的功能,例如从控制台或文件读取数据 i/o 或其他任何东西。

在哪里可以找到我可以使用的所有函数(如 puts)的列表?

此外,这些函数是否特定于平台?根据我要构建的操作系统,我是否需要其他功能?

puts 是 C 标准库的一部分,如果您 link 这个库,您可以使用它并期待 C 标准做出的任何保证。

如果您 link C 标准库,您可以使用那里的所有函数。有关详细信息,请查看 cppreference、C 标准,and/or 您的 C 标准库供应商提供的文档。

你当然也可以link到其他库,只要你知道如何查找和调用它们的函数。对于 C 库,使用它们编写一个小的 C 程序并用 clang 编译它可能是最简单的 -emit-llvm 看看它们是如何被正确调用的。

C 标准库应该是相当可移植的。