了解printf的硬件

tip*_*ipu 12 c hardware

我想知道是否有任何可用的在线资源解释了什么事情,比如printf of C,它解释了在非常低级别发生的事情(BIOS /内核调用)

jsc*_*ier 27

Linux的:

printf()--->在C库中的printf()---> C库中的write()--->内核中的write()系统调用.

要了解用户空间和内核空间之间的接口,您需要了解系统调用的工作方式.

要了解最低级别的内容,您需要分析内核中的源代码.

Linux系统调用快速参考,因为它标识了在内核源代码你可能会开始寻找(PDF链接)可能是有用的.

  • 在[Hostile Fork的回答](http://stackoverflow.com/questions/2442966/cc-function-definitions-without-assembly/2444508#2444508)绊倒[无需汇编的C/C++函数定义]之后(http:// stackoverflow.com/questions/2442966/cc-function-definitions-without-assembly/2444508),我认为它比我自己好. (2认同)

Cli*_*ord 5

printf 之类的东西,或者具体来说是 printf ?这有点模糊。

printf 输出到 stdout FILE* 流;与之相关的内容取决于系统,并且可以重定向到操作系统为其提供合适设备驱动程序的任何其他流设备。我在嵌入式系统中工作,大多数情况下,标准输出默认定向到 UART 以进行串行 I/O - 通常这是唯一受支持的流 I/O 设备,并且无法重定向。在控制台模式应用程序的 GUI 操作系统中,输出以系统定义的终端字体以图形方式“绘制”到窗口,例如在 Windows 中,这可能涉及 GDI 或 DirectDraw 调用,进而访问视频硬件的设备驱动程序。在现代桌面操作系统上,除了初始引导之外,控制台字符输出根本不涉及 BIOS。

简而言之,在 printf() 调用和输出它的硬件之间通常存在大量的软件。