01文件IO之printf函数

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。

你可能感兴趣的:(01文件IO之printf函数)