导航:首页 > 源码编译 > 软件自动编译器

软件自动编译器

发布时间:2022-11-26 11:15:37

㈠ 手机有什么python编译

现在越来越多人学习python,很多小伙伴都富有激情的,利用碎片化的时间都要学习,大家都知道pyhton是简单易学的,但是光说不练,假把式,最好能编程并且运行,最好能有一款在手机上可以随时随地编写python代码,而且功能齐全的app。下面为大家列举几种,我知道的手机上的python编辑器。(推荐学习:Python视频教程)
Android系统:
Python编译器是一款非常精炼的APP,主要为Python初学者提供直接运行的功能,能够随手验证一些小程序。
Python新手用户制作的一款手机编程学习工具,支持手机Python代码编译、脚本测试等功能,界面清爽,功能实用!
该软件支持直接从文件管理器中打开代码文件,方便用户浏览查看。
Qpython是一个Python引擎,只能运行在安卓系统上,它可以全图形界面操作,非常友好。
内置了一个Python编辑器,可以直接在手机上写Python代码,支持缩进,语法高亮等特性。
也内置了一个ftp,可以很方便的拷贝电脑上的py文件到手机上运行。
由于内置了SL4A,可以很方便的调用安卓操作系统的一些API做些有趣的事情,比如可以通过SL4A获取手机地理位置,打开蓝牙,发送手机短信,打开手机摄像头等等。
pydroid3,这是一个非常不错的手机python编程软件,它拥有非常强大的编译器,可以帮助您编辑python程序,pydroid3手机版不需要电脑也能够时刻提高您的个人代码编辑水平!
支持在命令行终端运行pip命令为pip命令提供了良好的图形化管理界面,自动检测代码导入的库如果没有安装会自动提示安装,支持kivy、matplotpb等推行库
pydroid3的符号面板比较丰富,避免了手机输入法中找符号的繁琐。
ios系统:
Pythonista是在iPad和iPhone上编写Python脚本的一个完整的开发环境。
它包含了许多示例:绘画游戏动画、图像处理、自定义用户界面和自动化脚本。
除了强大的标准库之外,Pythonista还提供了与本地iOS特性交互的广泛支持,比如联系人、提醒、照片、位置数据等等。全功能的代码编辑器Pythonista的专业代码编辑器提供语法高亮显示、智能代码完成以及专门为Python设计的扩展屏幕键盘。
一个方便的大纲视图允许您高效地浏览您的脚本,并且多个选项卡可以轻松地在更大的项目上工作。图形和多点触控Pythonista有很多易于使用的2D图形库、多点触控和音效库。你甚至可以使用加速度计来创造运动控制的游戏或互动实验。
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于手机有什么python编译器的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

㈡ C++编译器哪个比较好

编译器有很多,但是比较好用的还是microsoft visual c++ 。
具体如下:
1、简介
Microsoft Visual C++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。
2、特点
它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。它以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而着称。比如,它允许用户进行远程调试,单步执行等。
3、编译
允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结着称。这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显着。

㈢ 华为方舟编译器怎么打开

华为方舟编译器是会自动开启的,无法手动打开。



华为方舟编译器是华为公司专门为软件厂商研发的统一编程平台,包含编译器、工具链、运行时等关键部件。该编译器支持多种编程语言、多种芯片平台的联合编译与运行,能够有效解决安卓程序“边解释边执行”的低效率问题。



㈣ “编译”与“编译器”是什么意思

编译是动词
编译器是名词
编译(compilation , compile)
1、利用编译程序从源语言编写的源程序产生目标程序的过程。
2、用编译程序产生目标程序的动作。

编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
(1) 词法分析
词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。
源程序中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。
词法分析器一般来说有两种方法构造:手工构造和自动生成。手工构造可使用状态图进行工作,自动生成使用确定的有限自动机来实现。
(2) 语法分析
编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。
语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。
(3) 中间代码生成
中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。中间代码即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。
(4) 代码优化
代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。所谓等价,是指不改变程序的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。
有两类优化:一类是对语法分析后的中间代码进行优化,它不依赖于具体的计算机;另一类是在生成目标代码时进行的,它在很大程度上依赖于具体的计算机。对于前一类优化,根据它所涉及的程序范围可分为局部优化、循环优化和全局优化三个不同的级别。
(5) 目标代码生成
目标代码生成是编译的最后一个阶段。目标代码生成器把语法分析后或优化后的中间代码变换成目标代码。目标代码有三种形式:
① 可以立即执行的机器语言代码,所有地址都重定位;
② 待装配的机器语言模块,当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码;
③ 汇编语言代码,须经过汇编程序汇编后,成为可执行的机器语言代码。
目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量。
编译器,是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能解读、运行的低阶机器语言的程序。编译器将原始程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源代码一般为高阶语言 (High-level language), 如 Pascal、C++、Java 等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。
一个现代编译器的主要工作流程如下:
源代码 (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),如何合并几句代码成一句等等。

编译语言与直译语言对比
[编辑本段]

许多人将高阶程序语言分为两类: 编译型语言 和 直译型语言 。然而,实际上,这些语言中的大多数既可用编译型实现也可用直译型实现,分类实际上反映的是那种语言常见的实现方式。(但是,某些直译型语言,很难用编译型实现。比如那些允许 在线代码更改 的直译型语言。)

历史
[编辑本段]

上世纪50年代,IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法(或上下文无关文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(parsing problem,用于上下文无关文法识别的有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。现在它已是编译原理中的一个标准部分。

有限状态自动机(Finite Automaton)和正则表达式(Regular Expression)同上下文无关文法紧密相关,它们与Chomsky的3型文法相对应。对它们的研究与Chomsky的研究几乎同时开始,并且引出了表示程序设计语言的单词的符号方式。

人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用至今。人们通常将其称为优化技术(Optimization Technique),但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改进技术(Code Improvement Technique)。

当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构造。这些程序最初被称为编译器的编译器(Compiler-compiler),但更确切地应称为分析程序生成器(Parser Generator),这是因为它们仅仅能够自动处理编译的一部分。这些程序中最着名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年为Unix系统编写的。类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(Scanner Generator)的工具,Lex(与Yacc同时,由Mike Lesk为Unix系统开发)是这其中的佼佼者。

在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。

编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它现在正迅速地成为计算机科学课程中的中心环节。

在九十年代,作为GNU项目或其它开放源代码项目标一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感兴趣的人可以很容易的得到它们的免费源代码。

大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。

㈤ 高级语言被软件自动转化为汇编语言后,编译器再将汇编语言转化为机器码,请问这里的机器码

机器指令用cpu能直接识别并执行,它的表现形式是二进制编码。机器指令通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指令的功能,操作数指出参与运算的对象,以及运算结果所存放的位置等。

把计算机看做一个时序电路,存储器相当于无数个锁存器,软件就存在于存储器中;时序电路中锁存器的内容会影响电路的行为,同样的道理,软件会影响计算机的行为。PC是总线结构的,存储器把程序指令送到总线上,CPU通过引脚从总线上读取指令,在内部解码后更改各个引脚的电平。

㈥ 目前主流的C++编译器有哪些

我用Cfree,也推荐你用这个,这个编译器是自带提示的,就是你只要输入关键字或者之前设定函数的前几个字母,该编译器就会自动给你“联想”出你需要的关键字或者相关的函数、成员等,这时只需要按下会车就实现自动输入,这样不会因为你输入错误而照成不必要的修改……

㈦ intel visual fortran compiler干嘛用的

Visual Numerics Inc已于2004年初完成与Intel的结盟,将当时的IMSL Fortran Library的新版本v5.0整合在Intel Visual Fortran系列产品之专业版(承袭购并之Compaq Visual Fortran功能架构)中。2005.6月份发布其最新版本Intel Visual Fortran Compiler v9.0.018

针对Intel® CPU Pentium® 4, Xeon�6�4, Centrino�6�4 Itanium® 做最佳的福传编译,支持OpenMP及Auto-Parallelism特色. “英特尔R Visual Fortran 编译器Windows* 版”将Compaq Visual Fortran* (CVF) 语言的丰富功能与英特尔代码生成及优化技术结合在一起,构成面向英特尔体系结构的下一代Fortran 编译器。它提供250 多条CVF 与英特尔Fortran 命令及同义词,使编译器更加易于使用,同时仍能作为插件融入Microsoft Visual Studio 环境,并提供直接来自英特尔的技术支持。此编译器是一套功能齐备的Fortran 95 编译器,具有先进的优化功能,可以使Fortran 应用程序在英特尔R IA-32 与安腾2 处理器上快速运行。英特尔® 视觉FORTRAN 编译器为窗口* 标记一个里程碑为FORTRAN 开发商。它带来Compaq 视觉FORTRAN * 语言特色与英特尔编译器代码世代和优化技术一起。

性能、兼容性、技术支持:采用“英特尔 Visual Fortran 编译器 9.0 Windows* 版”,可以提高应用程序速度,并保护您在开发工具上所作的投资。先进的优化功能可以给最新英特尔® 处理器上运行的应用程序带来出众的性能。本产品包含标准版与专业版。“英特尔® Visual Fortran 编译器专业版”包含 Visual Numerics, Inc. 的“IMSL* Fortran 函数库6.0”。
目前版本号最高的Intel Fortran编译器,需要Visual Studio 6.0以上支持,可以生成更适用于Intel芯片的高效程序,是Intel平台下最优秀的Fortran语言编译器。大家可以考虑丢掉Fortran 77编译系统了:P
Fortran,是由Formula Translation两个字所组合而成,意思是公式翻译。它是世界上第一个被正式采用并流传至今的高级编程语言。

性能、兼容性、技术支持
使用“英特尔® Visual Fortran 编译器 Windows* 版”,可以让您的应用程序在英特尔® 处理器上取得前所未有的绝佳性能。

此编译器有标准版与专业版这两个版本提供。“英特尔® Visual Fortran 编译器专业版”包含 Visual Numerics, Inc. 的“IMSL* Fortran 函数库 5.0”。

客户评价:

“在英特尔编译器的帮助下,我们开发了大型海洋模型,充分利用了在基于英特尔的系统上所作的投资。在使用‘英特尔 Visual Fortran 编译器 Windows 版’编译代码时,我发现,与以前的版本相比,性能提高了大约 20%。”
- Xianyao Chen 博士
海洋模型小组组长
中国第一海洋研究所

“‘英特尔 Fortran 编译器 7.0’堪称一流,‘英特尔 Visual Fortran 8.0’做得还要好。英特尔将 Compaq Visual Fortran 与‘英特尔 Fortran’中最优秀的功能结合在一起,实现了一次巨大的飞跃。”现在为9.0最新版!

sual Fortran 与‘英特尔 Fortran’中最优秀的功能结合在一起,实现了一次巨大的飞跃。”现在为9.0最新版!

㈧ 什么是编译器

编译器

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

[编辑]编译器工作方法
首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,我们也称为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),如何合并几句代码成一句等等。

㈨ 什么是程序的编辑器,编译器,什么是Framework(框架)

编译器是程序辅助工具,一般会生成一些帮助代码
框架是编程的一种模式,把正个代码实现的功能按起的作用分类,可以使思路清析

㈩ pixhawk 软件开发用什么编译器

pixhawk 软件开发编译器:
中文官网推荐的是:两款推荐的编译器分别为Sublime Text 3(不受限制的“自由”编译,可在Windows,linux和Macintosh系统上运行)和Notepad+ +(免费,开源)。 当然可以使用eclipse。
另外官网提供win、linux、mac下的开发包,使用git管理。

阅读全文

与软件自动编译器相关的资料

热点内容
安卓手机为什么微信不能更新到最新版本 浏览:816
pdf赋税原理 浏览:260
韩国电影合集(3个小时) 浏览:88
程序员应该吃什么补脑子补身体 浏览:336
韩国床上在线观看 浏览:593
最牛逼的网址直接看去看不用下载免费看 浏览:96
c中预处理命令教学 浏览:54
优盘可以拉文件夹吗 浏览:826
pythonindexerror 浏览:907
linux终端配置 浏览:340
程序员三十岁魔咒 浏览:291
web服务器需要安装什么 浏览:262
只狼登录服务器有什么用 浏览:235
我是大哥大剧场版凉子的演员 浏览:519
怎么更改服务器分区表gpt 浏览:147
日本倡影 浏览:625
求个免费看片网站你懂得 浏览:505
外国电影男主下巴有两个像睾丸 浏览:9
在线图片小说 浏览:468
当编译中出现乱码 浏览:897