美文网首页
代码的编译过程

代码的编译过程

作者: 和谐共处 | 来源:发表于2020-06-10 12:20 被阅读0次

预处理

gcc -E main.c -o main.i

编译生成汇编代码

gcc -S main.i -o main.s

源码->汇编

gcc -S main.c -o main.s

汇编生成目标文件

as main.s -o main.o 
#或者
gcc -c main.s -o main.o
gcc -c main.c -o main.o

链接各种库才能产生最终的正确可执行文件

#ld命令需要指定所需的目标文件的的路径才能正确生成a.out的可执行文件
ld -static main.o
#这个会自动链接需要的库并生成a.aout可执行文件
gcc main.o

编译的过程

假如有如下C代码:

array[index] = (index + 4) * (2 + 6)

扫描-词法分析-语法分析-源代码优化-代码生成-目标代码优化
词法分析:
词法分析器 lex
这一阶段会将程序分割成一个一个的字符(串)符号忽略空格符,并对分割的字符进行标记分类
关键字、标识符、字面量、特殊符号等

以上代码词法分析的结果如下
记号 类型
array 标识符
index 标识符
] 右方括号
= 赋值
( 左圆括号
index 标识符
+ 加号
4 数字
) 右圆括号
* 乘号
( 左圆括号
2 数字
+ 加号
6 数字
) 右圆括号

语法分析
语法分析器 yacc
根据字符分析的结果,建立一个语法树,一个树结构,树的每一个节点都是一个简单的不能在分割表达式
然后分析各个表达式是否符号规则,否则就报语法错误停止编译

以上代码的语法树
语法树

相关文章

  • 代码的编译过程

    预处理 编译生成汇编代码 源码->汇编 汇编生成目标文件 链接各种库才能产生最终的正确可执行文件 编译的过程 假如...

  • 程序设计和编程2

    编译和解释 编译,将源代码一次性转化成目标代码的过程 执行编译过程的程序叫编译器 解释,将源代码逐条转换成目标代...

  • Java代码编译和执行过程

    Java代码编译和执行过程 Java代码的编译和执行的整个过程大概是:开发人员编写Java代码(.java文件),...

  • JVM内存模型与数据结构

    JAVA代码执行过程 JAVA源码编译由三个过程组成:源码编译机制、类加载机制、类执行机制。代码编译由JAVA源码...

  • 编译和解释

    编译:将原代码一次性转换成目标代码的过程,执行编译过程的程序叫做编译器 解释:将原代码逐条转换成目标代码同时逐条运...

  • 1.作用域入门

    从最简单的例子开始 想要执行代码,必须要先要进行编译。JavaScript的编译过程很短,就在执行代码之前。 编译...

  • E聊SDK在TypeScript下的条件编译(使用js-cond

    条件编译: 用同一套代码和同样的编译构建过程,根据设置的条件,选择性地编译指定的代码,从而输出不同程序的过程 1....

  • iOS系统在编译时都做了哪些事?

    本节主要参考KralLee的文章iOS App 的编译过程。 编译其实是一个用代码解释代码的过程。在 Object...

  • 编译器原理

    一、编译原理 1. 编译的概念 编译器是将源代码转化成机器码的软件;所以编译的过程则是将源代码转化成机器码的过程,...

  • c语言第三讲 程序环境和预处理

    程序的两种状态: 编译和链接过程编译分为四大过程: 预处理 编译 汇编 链接 代码的两种状态 翻译环境:源代码转换...

网友评论

      本文标题:代码的编译过程

      本文链接:https://www.haomeiwen.com/subject/qgwutktx.html