这个问题已经在这里有了答案:




已关闭10年。






你好,我们又见面了,
我想知道printf在内部如何工作...在内部是指使用什么基础系统调用/ISR 等机制...而不是关于变量参数列表...

原因:我正在使用FASM,但控制台I/O很少,我知道我可以使用c库中的printf(我不知道如何,但这是不同的地方)

谢谢。

最佳答案

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

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

上面是特定于平台的,但是实际上所有类似Unix的操作系统都可以那样工作。

关于c - printf在内部如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4138338/

10-11 16:30