编译程序、编译程序的结构
什么是编译程序
源程序:未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件。通常由高级语言编写。
目标程序:源程序经编译可直接被计算机运行的机器码集合,在计算机文件上以 .obj 作为扩展名——由语言处理程序将源程序处理成与之等价的由机器码构成的,计算机能直接运行的程序。
翻译程序:是一种系统程序,将计算机编程语言编写的程序翻译成另外一种计算机语言的一般来说等价的程序,主要包括编译程序和解释程序。
编译程序:也称编译器,把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序。
解释程序:一个语言处理程序,把一个高级语言程序翻译成某个机器的汇编语言程序或二进制代码程序。
关系:源程序经过编译程序变为目标程序,再由解释程序变为可装配的机器代码。
编译程序的结构
一个典型的编译系统通常组成部分:词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、表格管理程序、出错处理程序
各部分的主要功能:
词法分析:从左到右一个一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。
语法分析:在词法分析的基础上将单词序列分解成各类语法短语。
语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息。
中间代码生成:在语法分析和语义分析的工作之后,有的编译程序将源程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。
代码优化:对前一阶段产生的中间代码进行变换或进行改造,使生成的目标代码更为高效,即省时间和省空间。
目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。
表格管理:编译程序在工作过程中需要保持一些列的表格,以登记源程序的各类信息和编译各阶段的进展情况。
出错处理:编译过程中发现源程序有错误,编译程序应报告错误的性质和错误发生的地点,并且将错误所造成的影响限制在尽可能小的范围,使得源程序的其余部分可以继续被编译下去,有些编译程序还能自动校正错误。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性