【问题标题】:how printf works internally.? [duplicate]printf 如何在内部工作。? [复制]
【发布时间】:2011-05-07 12:05:32
【问题描述】:

可能重复:
C/C++ function definitions without assembly

再次嗨, 我想知道 printf 是如何在内部工作的……在内部我的意思是使用 底层系统调用/ISR 等机制……而不是关于变量参数列表……

原因:我正在使用 FASM,但控制台 i/o 几乎没有,我知道我可以使用 c 库中提供的 printf(我不知道如何,但这是不同的点)

谢谢。

【问题讨论】:

标签: c assembly


【解决方案1】:

write(2) 系统调用用于文件描述符设置为STDOUT(其值为 1)。

要从程序集中调用系统调用,eax 寄存器必须保存系统调用的 id(我认为write() 的特定编号是 3)和其余寄存器(ebx、ecx、... ) 必须包含论点。然后执行int 80h 会将控制权从您的进程切换到处理系统调用的内核例程。

以上是特定于平台的,但几乎所有类似 Unix 的操作系统都是这样工作的。

【讨论】:

  • 系统调用implementation 也可以是特定于架构的。 x86 等 CISC 架构支持额外的技术,例如 SYSCALL/SYSENTER 或 SYSRET/SYSEXIT “快速”控制传输指令,旨在快速传输控制而无需中断开销。
猜你喜欢
  • 2013-08-19
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 2020-06-21
  • 2012-04-13
  • 2020-01-31
  • 1970-01-01
相关资源
最近更新 更多