1 printf干了些什么
2write函数
3 printf函数调用过程
1printf 是 C 语言库函数,它依赖于操作系统,在 linux 中,printf 的实现,需要间接的调用了 linux 的系统调用接口write;
2write函数又调用了内核函数sys_write:
int write(int fd, const char *buf, off_t, count) {
long __res;
__asm {
//... 参数传递,这里省略
mov eax, __NR_write // __NR_write的值定义为 4
int 0x80 // 这是重点,32位陷阱门
//... 返回值处理,这里省略
}
return __res;
}
3printf 和 write 都属于用户层函数,int 0x80 相当于操作系统的关口,通过这个口,进入到了内核函数 sys_write 。sys_write 完成后,再一层一层的将结果返回到 printf。
网友评论