计算机是怎么读懂C语言的?(下补充)

简介: 预处理后面的几个阶段

编译阶段

预处理结束后,就要开始我们的编译阶段,编译阶段会生成一个test.s的文件,这个文件里面会放我们程序转成的汇编代码,编译器通常会在这个阶段进行语法分析、词法分析、语义分析,符号汇总,那前面三个分析的作用可以猜到,是将我们的C语言程序进行分析然后转换成汇编代码,那符号汇总是什么?它会干些什么事?符号汇总其实就是将我们的全局变量和全局函数进行汇总,然后对其进行汇编,然后就会到汇编这一步。

汇编

汇编阶段会在编译阶段之后进行,它会生成一个.obj,.obj是在windows环境下生成的,在Linux环境下生成.o文件,那这些文件内容是什么?里面全是二进制指令,还会生成符号表,符号表就和编译阶段的符号汇总有关,那我们的.obj或者.o文件是二进制指令,能不能打开看看呢?我们是直接打不开的,可以使用一个工具readelf,可以打开文件看到这些二进制指令;那符号表是什么呢?符号表就是用于判断在编译过程中是否有使用符号。

链接

链接阶段是链接库和我们的生成的.obj或者.o文件生成一个.exe文件,这个文件可以执行,能看到我们程序实际跑出的结果是什么。


目录
打赏
0
0
0
0
2
分享
相关文章
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
113 1
《C语言及程序设计》实践参考——乱玩数字
返回:贺老师课程教学链接  项目要求 【项目2:乱玩数字】编程输入整数a和b,若两数之和大于100,则输出两数和百位以上的数字,否则输出两数之和。[参考解答] #include <stdio.h> int main ( ) { int a, b, c; scanf("%d %d", &a, &b); c = a + b; if (
970 0
《C语言及程序设计》程序阅读——程序的多文件组织
返回:贺老师课程教学链接 1、写出下面程序的运行结果 #include <stdio.h> int a=3, b=5; int max(int a,int b) { int c; c=a>b ? a : b; return c; } int main() { int a=8; printf("%d\n",max
845 0
【C语言】文件的相关操作(一文10分钟彻底弄懂)
🐳文件简介 当程序结束时,内存中的数据就会丢失,这样每次运行程序时都要重新输入数据。那么有没有可以长久保存数据的方法呢?当然是有的啦!这个方法就是使用文件操作,用文件保存键盘输入和屏幕输出的数据,将数据以文件的形式存放在光盘、磁盘等外存储器上,可达到重复使用、永久保存数据的目的。
113 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等