如何使用 LLVM 调用 std 库中具有可变参数的函数

问题描述 投票:0回答:1

现在我正在尝试开发一个编译器。我想要一个“打印”功能。它可以这样使用:

print(90, "hello world")

以前,我使用列表(或向量)来保存参数。但现在我想使用 LLVM。而且我不知道如何使 llvm ir 来调用它。在我看来,也许我应该构建一个动态或静态库来存储我的std库,但是如果我在llvm ir中使用

declare print(...)
。我会错过类型信息。有没有办法记录类型信息?或者有什么更好的方法。

如果有人能帮助我,我将不胜感激!

compiler-construction llvm llvm-ir
1个回答
0
投票

LLVM 中参数数量可变的函数的处理方式与 C 中的处理方式相同。 为了处理它,LLVM IR 有特殊的操作码:

VASTART

VAARG
VACOPY
VAEND
,有关详细信息,请参阅
ISD
文档。

© www.soinside.com 2019 - 2024. All rights reserved.