执行printf()函数

时间:2011-10-09 10:55:33

标签: implementation printf assembly libc

我正在研究玩具编程语言。我使用LLVM生成机器代码。现在我的问题是:如何从头开始实现printf()函数?。在C程序中,您调用了libc,就是这样。但是printf()内容如何在内部工作?

干杯

1 个答案:

答案 0 :(得分:2)

printf()实施分为两部分。

首先,你有一些适合你的特定调用约定的机制,可以使可变参数成为可能。

其次,虽然你编写了一个循环来查看给定函数的格式说明符。简单来说,它需要两个动作之一,或者将字符串复制到stdout(通过适合您平台的系统调用),或者将一个可变参数传递给函数并适当地显示(再次使用系统调用输出) )对于指定的格式。

例如,如果您看到%s,那么您需要检索下一个未使用的参数,将其解释为char *指针,然后确保它指向的内存被复制到stdout,直到您点击'\0'