昆明做百度网站电话,外贸seo建站,四川建设厅证件查询,广东住房和城乡建设局网站首页hello.c
#include stdio.hint main(){printf(hello,world\n);return 0;
}这段 C语言程序的代码能被编程人员读懂#xff0c;但是计算机系统读不懂。C语言、C、java 这些高级编程语言本质上还是人类用的语言而不是计算机用的语言。 为了能在计算机上运行这…hello.c
#include stdio.hint main(){printf(hello,world\n);return 0;
}这段 C语言程序的代码能被编程人员读懂但是计算机系统读不懂。C语言、C、java 这些高级编程语言本质上还是人类用的语言而不是计算机用的语言。 为了能在计算机上运行这个 C语言程序需要由其他程序将每一条 C语言程序转化成低级的机器语言指令。这些指令会被按照一种被称为可执行目标程序的格式打包好以二进制存储文件的形式存储起来。目标程序也称为可执行目标文件。 C语言编译器驱动程序将 C语言程序文件 hello.c翻译成一个可执行目标文件 hello。整个翻译过程可分为四个阶段执行四个阶段的程序为
预处理器编译器汇编器链接器 以下是以这个“hello.c”程序为例对四个阶段的讲解 预处理器阶段 在这个阶段预处理器会处理“#include stdio.h”这行代码。它会把“stdio.h”这个头文件的内容插入到当前位置。头文件中通常包含了一些函数的声明比如“printf”函数的声明。此外预处理器还可能处理其他的预处理指令比如宏定义等。对于我们的“hello.c”程序经过预处理器处理后就为后续的编译做好了准备。 编译器阶段 编译器会把预处理后的代码翻译成汇编语言代码。在这个例子中它会分析“int main()”函数中的语句比如“printf(“hello,world\n”);”和“return 0;”并将其转换为相应的汇编指令。这些汇编指令是一种更接近机器语言但仍然相对可读的形式。 汇编器阶段 汇编器的任务是将编译器生成的汇编语言代码转换为机器语言指令。机器语言指令是由二进制数字组成的计算机可以直接执行。对于“printf”这样的函数调用会生成相应的机器指令来完成函数的调用和参数传递等操作。 链接器阶段 因为我们的程序可能会调用一些库函数比如“printf”函数就是在标准库中定义的。链接器会把我们程序生成的目标文件和系统提供的库文件包含了“printf”等函数的实现链接在一起形成一个完整的可执行目标文件。这样当我们运行这个可执行文件时计算机就能正确地执行“printf”等函数输出“hello,world”并最终结束程序返回 0。