代码之家  ›  专栏  ›  技术社区  ›  Wietlol

LLVM IR本机方法

  •  1
  • Wietlol  · 技术社区  · 6 年前

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

    在看过一些教程和示例后,我对它的工作原理有了一点习惯,但仍有一件事我不太确定。

    在示例中,大多数使用

    declare i32 @puts(i8* nocapture) nounwind
    

    写入控制台。我认为它们被称为原生方法,但谷歌搜索并不能真正帮助我。

    但是,我希望有更多这样的功能,例如从控制台读取数据,或文件I/o或其他功能。

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

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   PaulR    6 年前

    puts 是C标准库的一部分,如果链接到此库,则可以使用它并期望得到C标准的任何保证。

    如果链接C标准库,则可以使用其中的所有函数。有关更多信息,请查看 cppreference 、C标准和/或C标准库供应商提供的文档。

    当然,您也可以链接到其他库,只要您知道如何查找和调用它们的函数。对于C库,使用它们编写一个小型C程序并使用clang-emit llvm进行编译可能是最简单的方法,以了解如何正确调用它们。

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