19_编译过程简介

作者: 编程半岛 | 来源:发表于2018-02-14 11:42 被阅读14次

    关键词:初识编译器、预处理、编译、汇编

    1. 初识编译器

    广义上的编译器由:预处理器、编译器、汇编器、链接器组成。

    2. 预处理

    • 处理所有的注释,以空格代替
    • 将所有的#define删除,并展开所有的宏定义
    • 处理条件编译指令#if, #ifdef, #elif, #else, #endif
    • 处理#include,展开被包含的文件
    • 保留编译器需要使用的#pragma指令
    • 预处理指令示例:gcc -E file.c -o file.i

    3. 编译

    • 对预处理文件进行词法分析语法分析语义分析
    • 词法分析:分析关键字,标识符,立即数等是否合法
    • 语法分析:分析表达式是否遵循语法规则
    • 语义分析:在语法分析的基础上进一步分析表达式是否合法
    • 分析结束后进行代码优化生成相应的汇编代码文件
    • 编译指令示例:gcc -S file.c -o file.s

    4. 汇编

    • 汇编器将汇编代码转变为机器的可执行指令
    • 每条汇编语句几乎对应一条机器指令
    • 汇编指令示例:gcc -c file.s -o file.o

    5. 小结

    • 编译过程分为:预处理编译汇编链接四个阶段
    • 预处理:处理注释以及以#开头的符号
    • 编译:进行词法分析语法分析语义分析
    • 汇编:将汇编代码翻译成机器指令的目标文件

    声明:此文章为本人在学习狄泰软件学院《C语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!

    相关文章

      网友评论

        本文标题:19_编译过程简介

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