因此,我一直在使用 Rust 为简单的 lisp 编写编译器,并使用Inkwell crate 生成 LLVM IR。在尝试找到一种将值打印到标准输出的方法时,我遇到了许多使用打印函数的答案,就像在 C/C++ 中一样。在大多数情况下,它似乎没有任何问题。
然而,只有函数声明出现在生成的 IR 中,所以这可能意味着定义被 llvm 本身链接到某个地方(目前使用 lli 解释器,因为它更容易测试)。无论如何,我只是想了解这个函数的定义位置。就像在 llvm 中定义的核心模块一样吗?还是使用依赖于类 Unix 平台的 printf 而不是 llvm 的东西,因为大多数 llvm 函数似乎都有“llvm”前缀?