c语言从头开始(三:编译器工作原理)

c语言从头开始(三:编译器工作原理)读到这行代码时,从编译器的内置查找路径的根部开始查找stdio.h文件,读取其内容,并把它直接插入到程序文本前面。

大家好,欢迎来到IT知识分享网。

c语言从头开始(三:编译器工作原理)

——————

以gcc编译器为例子,编译实际上总共经历了四个阶段

预处理—>编译—>汇编—>链接

1.预处理

预处理就是对源代码进行文本处理,对开头**除空白外第一个字符为#的代码行**进行处理。

例如:

“`

#include<stdio.h>

“`

前面说过这个是标准输入输出头文件,读到这行代码时,从编译器的内置查找路径的根部开始查找stdio.h文件,读取其内容,并把它直接插入到程序文本前面。

stdio.h是编译器内原本就有的头文件,像类似的还有很多,比如math.h和string.h等等。当然,我们还可以自己编写头文件,头文件的后缀是xx.h,并把它当前代码文件所在目录。我们要用就可以直接通过下面代码使用

“`

#include “xx.h”

“`

还有宏定义

“`

#define XX YY //把XX定义为YY,也就是下面代码所以出现的XX就相当于YY

“`

在cmd命令行中输入

“`

gcc -E xx.c -O xx.i

“`

打开就可以看到我们的源代码前面多了很多东西

c语言从头开始(三:编译器工作原理)

2.编译

将文本文件hello.i翻译成文本文件hello.s。我们在cmd命令行中输入

“`

gcc -S xx.i -o xx.s

“`

c语言从头开始(三:编译器工作原理)

没错,可以看到代码被编译成了汇编语言。

3.汇编

代码已经被编译成为汇编语言,那么下一步应该干什么?

没错,在把它更进一步,变成机器语言,也就是01组成的二进制文件,继续打开cmd

“`

gcc -C xx.s -o xx.o

“`

但是,它是二进制格式,无法直接查看,可以用反汇编器来查看它的编码:objdump –d xx.o

c语言从头开始(三:编译器工作原理)

4.链接

最后一步就是链接了

“`

gcc xx.o -o xx.exe

“`

我们看到了我们熟悉的.exe文件。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/56873.html

(0)
上一篇 2024-07-12 20:45
下一篇 2024-07-20 17:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信