【发布时间】:2011-05-07 12:05:32
【问题描述】:
再次嗨, 我想知道 printf 是如何在内部工作的……在内部我的意思是使用 底层系统调用/ISR 等机制……而不是关于变量参数列表……
原因:我正在使用 FASM,但控制台 i/o 几乎没有,我知道我可以使用 c 库中提供的 printf(我不知道如何,但这是不同的点)
谢谢。
【问题讨论】:
-
你可以通过查看开源实现来获得它
再次嗨, 我想知道 printf 是如何在内部工作的……在内部我的意思是使用 底层系统调用/ISR 等机制……而不是关于变量参数列表……
原因:我正在使用 FASM,但控制台 i/o 几乎没有,我知道我可以使用 c 库中提供的 printf(我不知道如何,但这是不同的点)
谢谢。
【问题讨论】:
write(2) 系统调用用于文件描述符设置为STDOUT(其值为 1)。
要从程序集中调用系统调用,eax 寄存器必须保存系统调用的 id(我认为write() 的特定编号是 3)和其余寄存器(ebx、ecx、... ) 必须包含论点。然后执行int 80h 会将控制权从您的进程切换到处理系统调用的内核例程。
以上是特定于平台的,但几乎所有类似 Unix 的操作系统都是这样工作的。
【讨论】: