你好, 我想知道printf是如何在内部工作的......在内部我的意思是使用底层系统调用/ ISR 等机制......而不是关于变量参数列表......
原因:我正在使用FASM但是控制台i / o几乎没有,我知道我可以使用c库中提供的printf(我不知道如何,但这是另一个点)
感谢。
答案 0 :(得分:5)
使用write(2)
系统调用,文件描述符设置为STDOUT
(其值为1)。
要从汇编调用系统调用,eax寄存器必须保存系统调用的id(我认为write()
的特定数量是3)和其余的寄存器(ebx,ecx ,. ..)必须包含参数。然后执行int 80h
会将控制从进程切换到处理系统调用的内核例程。
以上是特定于平台的,但几乎所有类Unix操作系统都是这样的。