对于C语言编写的Hello World程序(如下),对于程序员来说肯定如雷贯耳,就是这样一个简单的程序,你真的了解她吗?
#include <stdio.h>
int main()
{
printf("Hello World\n")
return 0;
}
对于下面这些问题,你脑子里能够马上反映出一个清晰、明显的答案吗?
- 程序为什么要被编译器编译之后才可以运行?
- 编译器在把C语言程序转换成可以执行的机器码的过程中做了什么?怎么做的?
- 最后编译出来的可执行文件里面是什么?除了机器码还有什么?他们怎么存放的?怎么组织的?
- #include <stdio.h>是什么意思?把stdio.h包含进来意味着什么?C语言库又是什么?它怎么实现的?
- 不同的编译器(Microsoft VC、GCC)和不同的硬件平台(x86、SPARC、MIPS、ARM),以及不同的操作系统(Windows、Linux、UNIX、Solaris),最终编译出来的结果一样吗?为什么?
- Hello World程序是怎么运行起来的?操作系统是怎么装载它的?他从哪里开始执行?到哪儿结束?main函数之前发生了什么?main函数结束之后又发生了什么?
- 如果没有操作系统,Hello World可以运行吗?如果要在一台没有操作系统的机器上运行Hello World需要什么?应该怎么实现?
- printf是怎么实现的?他为什么可以有不定数量的参数?为什么它能够在终端上输出字符串?
- Hello World程序在运行时,它在内存中是什么样子的?
"Hello World " —— 深入理解程序从编译到运行,布布扣,bubuko.com
"Hello World " —— 深入理解程序从编译到运行
原文:http://blog.csdn.net/wangyuling1234567890/article/details/23964415