编译器知识--编译程序过程

定义:

  • 编译程序(Compiler,compiling program)也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。
  • 一、编译程序是一种动作,是根据编译原理技术,由高级程序设计语言编译器翻译成机器语言二进制代码行为。

    二、编译程序是动名词,特指生成编译器的软件程序。

  • 简介:编译程序的实现算法较为复杂。这是因为它所翻译的语句与目标语言的指令不是一一对应关系,而是一多对应关系;同时也因为它要处理递归调用、动态存储分配、多种数据类型,以及语句间的紧密依赖关系。但是,由于高级程序设计语言书写的程序具有易读、易移植和表达能力强等特点,编译程序广泛地用于翻译规模较大、复杂性较高、且需要高效运行的高级语言书写的源程序。

工作过程:

时间: 2024-10-11 05:40:10

编译器知识--编译程序过程的相关文章

java编译器知识

代码编译器: 代码: 编译就是讲一种代码编译成计算机可以理解的指令. ===================================================================================================== java的重排序:(JVM通过偏序关系保证重排序的指令符合业务需求) 代码首先是来表示一个处理数据的过程,这个过程就是通过计算机来执行,但是计算机现在的CPU是采取流水线进行多线程的执行,这样计算机的代码必选也是可以多线程进行

程序员都应学习代码编译器知识

程序员都应学习代码编译器知识   所有优秀的计算机科学学院都提供了编译器课程,但是相对比较少的学校把它作为本科课程的必修部分.这篇文章回答了这个问题:为什么需要学习编译器知识?即使你从没打算过编写编译器. 我写这篇文章的其中一个原因是,尽管我在读本科时很喜欢编译器课程,但是我几乎看不到它的实际作用.大多数资料看起来要么简单易懂,要么很深奥(事实上,我找到的大部分编译器资料都是很枯燥的.)无论怎样,我用了几年时间总结了为什么这类课程会如此有用的实际原因.原因如下. 分析器和解析器无处不在 严谨的p

编译器的工作过程

简单的说,其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段(也就是常说的切token) 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息.(生成.exe文件) 编译器在编译

编译器的工作过程和原理

转帖: http://www.codeceo.com/article/compiler-process.html#0-youdao-1-33675-32553cecb956bf88a1550052113e506a 码要运行,必须先转成二进制的机器码.这是编译器的任务. 比如,下面这段源码(假定文件名叫做test.c). #include <stdio.h> int main(void) { fputs("Hello, world!\n", stdout); return 0

linux基础知识发展过程

Linux的基础知识发展过程 1.1 计算机服务器组成 1.1.1 计算机的组成 1) cpu 2)硬盘 3)内存 4)电源 5) Raid卡 1.1.2 运维核心职责 1)网站数据不能丢 2)网站7*24小时运行 3)提升用户体验-访问快 要求:服务器稳定性比普通家用机高 1.1.3 运维人员的原则 简单,易用,高效===(简单粗暴) 1.2 服务器核心知识 1.2.1 服务器相关知识 1.2.2 服务器分类 机架式服务器 刀片式服务器.塔式服务器 1.2.3 服务器尺寸 U-unit服务器的

转载 关于编译器的编译过程

调试的问题出现这个问题还蛮奇怪的,a.h需包含statistic.h, main.c需包含a.h和statistic.h,导致了statistic.h重复包含,hsdm_queue_ctr重复定义. 关于重复包含和重复定义的问题,可根据下面的分析得到认识. 为什么用了宏名字定义检测头文件的重复包含可还是有重复定义的错误? 我在一个头文件中定义了一个函数F, 整个头文件用:#ifndef _XXX#define _XXX...#endif括起来以避免重复包含. 然后有两个Cpp文件都包含了这个头文

The science of interaction交互元素与知识构建过程的查询方式

The science of interaction 摘要 可视分析中增长的感知交互和查询无法摆脱.通过交互操作可视界面---分析的论述----构建.测试.精炼,及共享知识.本文反映可视化研究与开发会议中的交互挑战.识别最近可视分析研究典范,在真实的交互科学目标具有真实的进步,必须包括理论和可测试关于人与信息交互最合适机制.七个领域未来5年可视分析研究:普适,表征交互:获取用户意向性:基于知识的界面:交互评估.最终,科学交互目标是支持可视分析,人.机交互群体通过感知和实现最好的实践,在可视显示的

linux学习之路之受到编译软件

软件编译安装 我们知道在安装某一个软件时,有些我们不需要安装的程序或者特性被安装到系统上去了,而我们需要的程序或者特性没有被安装进去,或者说该软件存在一些漏洞等等因素,我们都需要修改该软件的源代码,然后在重新编译生产一个二进制文件,最后用户才可以安装这个二进制文件. 我们知道系统真正识别的文件其实只有二进制文件,而某个软件的原始码就是就是一段程序,而这类程序是供人看的,系统并不识别,因此为了让系统能够识别这段原始码的内容,必须要对原始码进行转换,转换成系统能够识别的二进制程序.而原始码转换成二进

Delphi 的接口机制——接口操作的编译器实现过程(2)

接口对象的内存空间 假设我们定义了如下两个接口 IIntfA 和 IIntfB,其中 ProcA 和 ProcB 将实现为静态方法,而 VirtA 和 VirtB 将以虚方法实现: [delphi] view plaincopyprint? IIntfA = interface procedure ProcA; procedure VirtA; end; IIntfB = interface procedure ProcB; procedure VirtB; end; 然后我们定义一个 TMyO