在汇编
#include<stdio.h>
main()
{
int a=1;
printf("%d",a);
}
时汇编有一句:
call _printf; 应该是这一句,之前已经把printf()函数的参数压到堆栈,然后链接printf()编译好的obj文件,我想知道的是这个obj文件大概包含了什么内容,printf怎样与系统通信,怎样在屏幕上出现一个黑框?就打印出来了1?,,在汇编即便是怎样实现的???????
------解决方案--------------------------------------------------------
出现一个黑框,这个不是 printf() 的功劳,这个是系统根据你的程序的类型创建出来的。printf() 的作用就只是后面的打印 1 。
printf() 的具体实现方法,可以跟踪或反汇编你这个程序进入到 printf() 函数里去看看,也可以反汇编看看你的 c 库里的那个 lib 文件里该函数的定义。大致上,就是先解析你的输出格式串成最终的显示字符串内容,然后将这个字符串输出到显示。
------解决方案--------------------------------------------------------
printf算什么呀。这只是C运行时库的一个函数,他所做的也只不过是调用操作系统的系统调用,系统调用又涉及到显示驱动程序,太深了。不好说,自己学习体会吧。。。
------解决方案--------------------------------------------------------
如果是Linux系统,静态编译一下,然后objdump看看吧。
------解决方案--------------------------------------------------------