64,654
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
没啥,计算机比较笨,看不懂用高级语言写出来的程序
请看编译原理。内容太多了,好几部书了
一些文件头,全局变量,资源文件,重定向文件,机器码。
怎么存放与组织请看Windows PE格式或Linux ELF 格式,
然后自己写个解析器
stdio.h是个C运行库的一个头文件,包含着一些函数,全局变量的声明。
C语言运行库是C语言运行的时候的一些必备函数,什么printf之类的。也是一种可重用的代码
C语言的运行库是由C语言或汇编语言实现的。当然自己也可以写啊,,什么strcpy之类的
额。。当然不一样了。。。不说跨平台的(跨平台的连基本结构都改了)。。就连同一个编译器,同一个源代码,不同的编译选项也会有完全不同的结果出现
一般可执行文件的头信息里有机器码的入口地址,计算机就是从这里运行第一条语句,直到结束。
当然C/C++约定从main函数开始,但是只要给连接器一个信息,也就可以从任何地方开始,就是修改程序入口地址而已。
main函数之前发生了什么,要看你的环境了。像VC的运行库,在main函数之前之后有很多的处理工作,
但如果用TC,就直接从main函数开始。main函数结束。
当然可以啊。。
机器启动时直接jmp到helloworld函数入口地址就可以了。。(此时没有加载任何一个OS)
不过有很多的局限,请看《自己动手写操作系统》,里面有个hello world的实现
[/code
8. printf是怎么实现的?它为什么可以有不定数量的参数?为什么能够在终端上输出字符串?
[code=C/C++]
不定量的参数是由语言支持的。
请看<stdarg.h>头文件
在终端上显示字符串那2a8e40506848.png就是汇编级的工作了。。
无非调用一个中断显示字符而已,,
但也有很深的内容,请google一个printf的源代码。。
大体都是差不多的