隐含模块中的编译错误

您所在的位置:网站首页 奔跑吧游戏大全和游戏规则 隐含模块中的编译错误

隐含模块中的编译错误

#隐含模块中的编译错误| 来源: 网络整理| 查看: 265

173e9c8599f48290879a69ddfc6ac413.png

编译器就是把人写的代码翻译成目标程序的语言处理程序,编译用的程序也可以称为编译系统。

一个编译系统把一个源程序翻译成目标程序一般分为5个阶段:词法分析、语法分析、中间代码、代码优化和目标代码生成。其中主要阶段是语法分析和语法分析,也可以称为源代码分析过程中发现有错误语法会给出错误信息。

一、词法分析

词法分析的目的是处理源代码中的单词。词法分析程序分析按照从左到右的顺序依次扫描源代码,生成单词对应的符号,把字符描述的程序转换成符号描述的中间程序。词法分析程序也称为词法扫描器。词法分析过程可以用手工构造和自动生成两种方法。

二、语法分析

语法分析程序使用词法分析程序的结果作为输入。语法分析功能主要是分析单词符号是否符合语法要求,语法分析程序还按照语法规则进行分析检查程序的语句是否符合正确的逻辑结构。

语法分析的顺序有自上而下和自下而上两种方法。自上而下分析法从文章开始的符号向下推导,逐步分析。自下而上分析方法利用堆栈原理,把语法符号按顺序入栈,然后分析语法是否符合要求

三、中间代码生成

中间代码也称中间语言,是一种介于源代码与目标代码之间的一种表达方式。使用中间程序可以完整的表达源代码的意思,同时又使编译过程在逻辑上简单明确。常见的中间语言的形式有以下几种:逆波兰几号、四元式、三元式和树等!

四、代码优化

代码优化的目的是生成有效的目标代码,代码优化通过对中间层分析,进行等价变换,达到减小储存空间和缩短运行时间的目的。需要注意的是程序优化并不改变源代码的功能。代码优化还可以对目标代码进行优化,与中间代码优化相比,对目标代码优化依赖计算机类型,但是优化的效果更好。

五、目标代码生成

程序编译后最后一个步骤就是生成目标代码,目标代码把中间代码变换成目标代码,通常有三种变换方式:立即执行的机器语言代码、待装配的机器语言模块、汇编语言模块

立即执行的机器语言代码:这种方式对应静态的连接方式,程序中所有的地址都重定位,执行效率高,但是占用内存大。

待装配的机器语言模块:该方式不连接系统共享的程序库,在需要的时候会由系统加载共享程序库。

汇编语言代码:该方式经过汇编语言汇编后直接生成可以在操作系统上运行的目标代码。

除此之外生成目标代码还需要考虑三个影响速度的问题:采用什么方式生成比较小的目标代码;如何在目标代码上多使用寄存器,减少目标代码访问外部储存的次数;如何根据不同的平台计算机指令进行优化,提高程序的运行效率。

以上就是代码在运行的时候发生的,C语言编译的整个过程是非常复杂的,里面涉及到的编译器知识、硬件知识、工具链知识都是非常多的,深入了解整个编译过程对工程师理解应用程序的编写是有很大帮助的,希望大家可以多了解一些,在遇到问题时多思考、多实践。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3