如何通过LLVM使用系统调用?

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

为了学习,我想使用 LLVM 实现一个类似 C 的编译器。这个编译器可以获取输入,处理并输出结果。

我知道如何使用 AST 生成 LLVM IR 来处理。但是我遇到了一个问题并且不知道:如何通过LLVM IR实现输出和输入功能?

对于真正的C编译器,大部分都在stdio.h中。

从K&R,我知道如何使用系统调用来实现它们,但它还需要syscall.h。

我在谷歌上搜索,有人说使用汇编代码。这是一种方法,但我想知道LLVM有什么方法吗?如果没有,如何通过 LLVM IR 或链接器汇编编写 stdio 代码?

PS。有人知道真正的编译器(如 GCC 或 Clang)的开发过程吗?他们如何编写标准库?

compiler-construction llvm
1个回答
0
投票

LLVM 中没有为此的方法。编译器自己提供这个,就像在这个问题中。一般来说,您最终会得到一个导出系统调用的小型 C 库,或者您将拥有一些具有与编译器的损坏和调用约定相匹配的损坏名称的小型汇编器函数。

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