当前位置:首页 » 编程软件 » 程序编译器

程序编译器

发布时间: 2022-01-11 22:47:40

A. 在编写程序时要用到编译器,什么是编译器有什么用

VC Borland C Eclipse 都是编译器 就是把你的源代码 编译 解释成机器能读懂的机器码 因为机器内部是用二进制的嘛 所以最终也就是一串 1 0 组成的序列

B. 目前最常用的作c语言编译程序的软件是什么

如果你用Turbo C的话,不需要太高配置,基本的DOS能跑的系统他就能跑。
如果你用VC++6.0跑的话,那么最低也得赛扬II一级别,256M内存,然后WIN98系统,硬盘至少2G空间
如果你用Visual Studio200X跑的话,建议奔腾四的机器,而且内存要大,至少512M,XP环境,如果要加载SQL SERVER的话,内存还要更大,至少1G,否则服务挂不动,而且硬盘最好留5G空间,可以安装一些MSDN。方便查阅。
其次,还有个GCC编译器,可以下载一个环境,配置一下,这是LINUX下的C编译器,效率很高,而且出来的OBJ没有垃圾数据,推荐,这个跟TC环境差不多

C. 请问程序编译器是硬件还是软件

编译器是一种一应用软件,,你如编程技术好的话也可自己编一个自己专用的编译器,,,,,当然你既然在问这种问题就说明你没有这能力,,,

D. 最好的程序编译器

觉得VC ++6.0 很好用,虽然目前一直用VS2008。

E. C语言编译器

目前比较流行的包括微软的Visual C++,GCC, Turbo C等。

个人比较推荐GCC,对于初学者而言,虽然Visual C++比较快上手,它帮助开发人员快速新建工程,并添加工程相关代码,只需要在这个平台之上直接开发代码即可,但是这个平台把C语言的一些很关键的东西给省略了,例如Makefile,例如一些基本的库函数的引用之类的。

GCC能让开发人员从编译器的角度出发,把程序的编译,链接等一步一步都完全展示出来,而且也是建立的ANSI C的基础上的,推荐GCC。开发者可以利用一些简单的文本编辑器进行程序的编写,然后通过GCC来编译,这样可以在起步就不收到包括Visual C++的限制,让初学者可以更关注与整个程序的编译过程。

当然如果说到调试方法的话,建议采用Visual C++,它提供的单步跟踪功能确实非常好,不过在GCC下也可以用GDB进行操作,一起看个人的喜好。

F. 代码和编译程序是用什么软件

你是用什么系列单片机的?绝大部分要都是用KEIL来编写的。在KEIL里面既可以用汇编来写也可以用C语言来写,你写完了程序之后还可以在KEIL里面做软件的仿真,这种软件查错的方法给程序员带来了极大的方便。
除此之外还可以用KEIL与PROTEUS联调~~~~
个人强烈建议用KEIL来写单片机的程序

G. 什么是编译器

编译器

编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。我们把一个程序写好,这时我们利用的环境是文本编辑器。这时我程序把程序称为源程序。在此以后程序员可以运行相应的编译器,通过指定需要编译的文件的名称就可以把相应的源文件(通过一个复杂的过程)转化为机器码了。

[编辑]编译器工作方法
首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,我们也称为obj文件。再经过链接器的链接就可以生成最后的可执行代码了。有些时候我们需要把多个文件产生的目标文件进行链接,产生最后的代码。我们把一过程称为交叉链接。

一个现代编译器的主要工作流程如下:

* 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)

工作原理

编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。

典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。

编译器种类

编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。

预处理器(preprocessor)

作用是通过代入预定义等程序段将源程序补充完整。

编译器前端(frontend)

前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。 例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在此基础上进一步优化,处理。

编译器后端(backend)

编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。

一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraproceral)还是函数之间(interproceral)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。

编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。

常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。

上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。

机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。

H. c语言编译器如何运行

编译共分为四个阶段:预处理阶段、编译阶段、汇编阶段、链接阶段。

1、预处理阶段:

主要工作是将头文件插入到所写的代码中,生成扩展名为“.i”的文件替换原来的扩展名为“.c”的文件,但是原来的文件仍然保留,只是执行过程中的实际文件发生了改变。(这里所说的替换并不是指原来的文件被删除)

2、汇编阶段:

插入汇编语言程序,将代码翻译成汇编语言。编译器首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,编译器把代码翻译成汇编语言,同时将扩展名为“.i”的文件翻译成扩展名为“.s”的文件。

3、编译阶段:

将汇编语言翻译成机器语言指令,并将指令打包封存成可重定位目标程序的格式,将扩展名为“.s”的文件翻译成扩展名为“.o”的二进制文件。

4、链接阶段:

在示例代码中,改代码文件调用了标准库中printf函数。而printf函数的实际存储位置是一个单独编译的目标文件(编译的结果也是扩展名为“.o”的文件),所以此时主函数调用的时候,需要将该文件(即printf函数所在的编译文件)与hello world文件整合到一起,此时链接器就可以大显神通了,将两个文件合并后生成一个可执行目标文件。

I. 程序是通过编译器编译才能执行的,那么编译器又是怎么

一般来说,程序语言的编译有两个变量,一个是语言本身的语法体系,另外一个是目标机器的指令集体系结构。
对于前者,我们要发明一个新的编程语言的时候,一般是用已有的编程语言写新语言的编译器;
对于后者,要进行交叉编译,即在A指令集的计算机上编译B指令集计算机要用到的二进制程序。
本质上是一个鸡生蛋蛋生鸡的问题。
然而还是会绕到最终的问题:最最开始的第一只鸡(蛋(编译器))哪里来的?
当然是拿汇编语言写的啦~
那第一个汇编语言的汇编器是怎么写的?当然是直接手写二进制代码啊。。。

J. 编译程序和解释程序都是什么意思

1、编译程序是把用高级程序设计语言或计算机汇编语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序,属于采用生成性实现途径实现的翻译程序。编译程序以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出;编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。

2、解释程序是高级语言翻译程序的一种,它将源语言书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。

(10)程序编译器扩展阅读:

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

热点内容
细说phppdf 发布:2024-11-15 06:38:35 浏览:276
征途PK脚本 发布:2024-11-15 06:37:51 浏览:680
vbs打不开编译器错误 发布:2024-11-15 06:35:12 浏览:344
深海迷航密码在哪里 发布:2024-11-15 06:30:23 浏览:303
服务器日志怎么分析 发布:2024-11-15 06:22:04 浏览:525
字体目录在哪个文件夹 发布:2024-11-15 06:20:28 浏览:181
php种子怎么打开 发布:2024-11-15 06:07:01 浏览:346
密码箱的密码忘记了如何开锁 发布:2024-11-15 06:04:41 浏览:956
安卓软件和苹果系统哪个好 发布:2024-11-15 05:48:32 浏览:284
pythonwhileelse 发布:2024-11-15 05:39:10 浏览:672