导航:首页 > 源码编译 > 代码编译工具

代码编译工具

发布时间:2022-02-10 11:34:53

‘壹’ 代码和编译程序是用什么软件

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

‘贰’ 代码编辑软件有哪些

编辑代码大部分是在集成开发环境中的就是IDE.
所以常用的有
VC6.0,另外可以使用辅助插件Visual Assist
VS系列也是可以的,主要是看个人喜好。
当然越新的,它支持的库文件就越新。
如果初学C,
会接触
TC系列。
另外现在还有
.net, vc7,C++ builder.
如果单个的代码编辑软件,不是集成开发环境的

Source Insight
Ultra Edit
Visual Slick Edit
Edit Studio
Edit Plus
等。
其实主要自己习惯用那个就好。

‘叁’ 什么是编译器

编译器

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

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

‘肆’ 你用过的最好的代码阅读或编辑工具是什么

我开发代码和阅读代码使用的是相同的工具,不明白为何要将两者区分开。我一般使用下列工具之一(以 Javascript / html 编辑为主) Notepad++ / Editplus / Apatana 。

‘伍’ 编译工具是如何开发的例如VC6等

楼主大概想问先有鸡,还是先有蛋吧。

计算机能识别的语言叫机器语言,最初的程序就是用机器语言写的,
也就是直接在键盘敲0和1,它不要编译,直接就能运行。

后来用机器语言写了一个简单汇编编译器,
用它处理汇编语言,再用汇编语言写一个简单的C语言编译器,功能非常有限那种,之后用这个编译器能处理的C语言重写这个C编译器,这样就变成可以用C编译器编译新版本的C编译器了。

这只是一个大概的过程。

‘陆’ 这用的什么代码编辑软件

任何软件都有可能,光看这里能看出个叽霸啊。

‘柒’ APP源码要用什么工具编译

sourceinsight是个代码浏览工具,它会自动对你的工程源码进行语法分析,方便你迅速查找对某个特定符号的引用。它本身不带编译器调试器,但是你可以指定要用的编译器,记得sourceinsight里有这个选项。1、->Removemissingfilefromproject选上可以避免因文件找不到而弹出错误对话框。把Misc->Usestricterconfirmationdialog选项去掉可以使确认时不输入"yes"。2、TypingSourceEditing->Indentcommandsaffect#-preprocessorstatements。去掉后(默认值),进行多行缩进时不会影响预处理语句(如#if#endif)。AutoCompletion->Usedetailedcompletionwindow,选上后,联想时可以出现该函数的详细信息。见下图:(简单)(详细)AutoCompletion->Insertparemetersforfunctions,去掉后,自动联想不会把整个参数都输出到当前行。BrowsinginLists->Matchsyllableswhiletyping(slower)。在symbollist框检索符号时是否采用音节匹配方式,如对于函数FindNext,输入find或者next都可以找到该函数。该功能可能导致反应缓慢(视工程和机器配置而定),建议关闭,因为即使在关闭状态下也可以通过先输入空格再输入单词来动态启用该功能。注意BrowsinginLists里其实有两个功能,但一般我们只能看到Matchsyllableswhiletyping这一条,应该是si的菜单设计没有做好,导致在中文windows下不能显示全,另一个功能是Matchmemberswhiletyping,用于打开/关闭按成员变量名来检索类/结构体的功能。3、FilesOpeningFiles->Sharing:Letotherprogramsmodifyfiles,以共享方式打开文件,这个很重要,保证可以在其它编辑中同时编辑该文件。典型的场景就是用ide环境去动态编译调试,而用si静态阅读。Customize'Open'Command,用于设置Ctrl+O打开的页面,默认选项是,建议保持默认。SavingFiles->,如果发现保存后就不能undo了,请检查该选项是否选中。。保存时自动去除每行尾部的空格和tab。建议选中。4、Languages自定义其它编程语言的语法解析,这个还是另写一篇来讲吧。ConditionalParsing不要错过了,这里的Conditions功能实在让人喜欢。Conditions是什么意思呢?我们的代码中一般都会有一些开关宏,通过在Conditions中配置这些宏的默认值,可以让si把配置为不开启的宏视为无效代码,从而不进行符号检索。如果源代码中的开关宏太多,还可以使用ConditionParsing中的ScanFiles来自动找出所有开关宏。5、SymbolLookups没太多特别的。6、Display显示配置和个人喜好和显示器的状态有关,偶用的x60小本,屏幕资源有限,所以在DisplayElements里把ProjectWindow,StatusBar,ToolBar,ClipWindow都关了,基本用快捷键可以代替它们。Options->。很多大师都教导我们说一行不要写太多代码。在这个指导思想下,我们不需要这个东东。Showexactcaseoffilenames。如果看不惯si把所有的文件名首字母都大写就勾上这个选项吧。。SourceLink很多时候用于外部命令输出结果的解析(如Make,lint),这个功能会把解析结果与目标窗口自动tile,很实用。Trimlongpathnameswithellipses。这个建议不要选中。事实上这个主要影响标题栏,但一般来说标题栏上的空间是充裕的,选上之后往往会令我们不知道所编辑文件的具体位置。

‘捌’ 什么软件可以直接进行代码的编译运行

这个要看你用什么语言了,不同语言都有不同的编辑工具
如visual studio

‘玖’ c语言代码用哪个编译器都不能编译了

www.programarts.com下载个C-Free5用用吧
Dev-C++的是你配置不对,安装时的一些选项没选好,比如Dev-C++那儿安装要你选是不是要把编译器也安装了,如果你没有选,那Dev-C++只能当个语法加亮的东西了……而Codeblocks默认(好像)是没有C++编译器的。VS2012没用过……

阅读全文

与代码编译工具相关的资料

热点内容
源码画板的制作方法 浏览:973
eq对服务器有什么要求 浏览:888
程序员那么可爱第七集 浏览:675
方舟非专用服务器代码是什么 浏览:714
ug服务器未启动怎么解决 浏览:530
怎么免费进2b2t服务器 浏览:354
易学的php框架 浏览:382
文件夹摆桌图片 浏览:690
姓名快速检索算法 浏览:106
主流单片机cpu频率 浏览:869
编程有可能会被纳入学科吗 浏览:46
二级抗震柱子要全高加密么 浏览:367
绝地求生换服务器有什么变化 浏览:323
php如何放到服务器里 浏览:247
红色警戒2安装加密密码 浏览:153
php集群session 浏览:767
sct报价存储服务器怎么选 浏览:726
金蝶硬加密怎么样 浏览:386
linux桌面虚拟化 浏览:91
时间动态加密怎么解密 浏览:281