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 标准库应该是相当可移植的。
作为一个宠物项目,我正在编写自己的编程语言并尝试编译为 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 标准库应该是相当可移植的。