编译器是什么样
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件陪旁乎,例如:test.cpp。
‘贰’ MDK编译器怎么样
KEIL MDK是基于的Cortex-Arm微控制器的最全面的软件开发解决方案。
它包括IDE,C / C ++编译器,调试器,软件包管理和CMSIS。MDK5版软件包添加新的运行时环境(RTE)来管理设备的支持和软件组件。
超过3000款Arm?的Cortex?-M微控制器的解决方案;
支持32位Arm Cortex-A和Cortex-A/ Cortex-M的基础设备;
Software Packs包括现成可使用的CMSIS和中间件组件;
亿道电子是国内最全面的开发工具提供商, 致力于将全球最先进的软件产品引荐给国内研发型企业使用
‘叁’ CC和gcc是一样的编译器吗
cc是Unix系统的C Compiler,而gcc则是GNU Compiler Collection,GNU编译器套装。gcc原名为Gun C语言编译器,因为它原本只能处理C语言,但gcc很快地扩展,包含很多编译器(C、C++、Objective-C、Ada、Fortran、java)。因此,它们是不一样的,一个是古老的C编译器,一个是GNU编译器集合,gcc里面的C编译器比cc强大多了,因此没必要用cc。
下载不到cc的原因在于:cc来自于昂贵的Unix系统,cc是商业软件。
linux下的cc是gcc符号连接,可以通过$ls –l /usr/bin/cc来简单察看,该变量是make程序的内建变量,默认指向gcc。cc符号链接和变量存在的意义在于源码的移植性,可以方便的用gcc来编译老的用cc编译的Unix软件,甚至连makefile都不用改在,而且也便于Linux程序在Unix下编译。
‘肆’ 每个编译器都不一样么 c语言一般用什么编译器 每次一种编译器不能编译 另一种却能编译出
编译器就是c语言编译成二进制的东西,
不同的编译器是不同的,
比如16位系统和32位系统的编译器就不同,因为16位的认为int是2字节,32位的则认为是4个字节。
另外
linux上的编译器跟windows下的编译器也不同,linux上的认为内核空间占1G,而windows下则认为占2G,
此外两个系统对环境变量以及其他的设置也不同所以编译器更不能用。
而且不同的CPU的指令集时不同的,所以同样int
a
=1
最后被编译成的二进制代码也是不同的。
C语言的编译器有很多,windows下的编译器也有很多,不同的编译器可能会做一些不同的优化,linux下的gcc也可以添加选项让他编译windows下运行的程序。
main(int
argc,char*argv[
】
)
argc
是你的参数个数
argv是你的参数。
比如你最终程序叫
add
那么
你在命令行执行add
1
2
那么argc
=3
第一个参数使你的add,
第二个第三个就是
1
2,
在函数内部你就可以获取这俩参数进行相加然后打印
visual
是个IDE,集成开发环境,已经集成好了windows下使用的编译器连接器
等,
编写代码完成后直接点击编译就行了。
IDE的默认编译器是可以更改的,不同的IDE设置不同。
‘伍’ java的编译器是什么
你说的编译器指的是java开发软件吧?
记事本就可以,但是word不行,因为不支持asc2码,
专业的有jbuilder和netBeans、eclipse等
初学者还是用记事本比较好,
然后还是最好用netBeans,因为这个软件汉化的比较好,其他的都不行!你上狗狗下载就ok了
www.gougou.com, 搜netBeans
回答完毕
‘陆’ 1.ARM编译器是一款什么样的软件 2.ARM产品线包含哪些产品 3.ARM代理商目前有哪些
ARM处理器是Acorn计算机有限公司面向低预算市场设计的第一款RISC微处理器。1978年12月5日,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。1979年,CPU公司改名为Acorn计算机公司。ARM处理器的三大特点是:耗电少功能强、8位/16位/32位双指令集和市场用户广。
ARM开发工具
杭州通格信息技术有限公司是ARM公司官方授权的,浙江区全线开发工具产品代理商,提供ARM公司工具产品在国内的销售、更新、升级和技术支持等服务。
软件开发工具:DS-5、RVDS、Keil MDK-ARM、Keil C51、Keil C166、Keil C251。
仿真器:DSTREAM、RVI&RVT2、ULINK2、ULINKpro、ULINK-ME。
ARM内核FPGA开发板:ARM9、ARM11、Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A12、Cortex-A15、Cortex-A53和Cortex-A57开发板。
Keil MCU开发板:基于ARM7、ARM9、Cortex-M0、M3、M4内核的NXP、ST芯片系列开发板。
杭州通格信息技术有限公司是ARM公司在浙江区全线开发工具代理商。上海摄氏度信息科技有限公司做全国的。
‘柒’ c++各种编译器有什么不同,应该不存在哪种编译器最好的说法吧是不是只要学会用一种编译器就可以了
每种编辑器适用环境都是不一样的。对于初学者来说 如果你想学习linux gcc是一个非常不错的编辑器。。又是开源的。。其他的要依你的编程环境来确定。。标准C的程序编辑器基本都支持的。所以简单的程序选择哪一种都差不多,但是如果用到专业的函数 比如itoa 这就是windos 特有的函数了 也就是说只有VC支持
‘捌’ C语言用的编译器还有分别呢吗
C语言用的编译器有分别,不同的平台上的编译器无疑是不同的,同一种平台上不同公司出的编译器也不同。
因为编译器本身也是程序,它们的头文件内容不同,它们自带的特殊函数不同,这都影响我们程序的写法,程序中的调用函数名,函数的参数个数,内容。
即使是同一公司,同一编译器,例如MS VC++, 版本不同也不同,6.0版的程序在5.0上可能通不过,专业版的在企业版,学生版上编译通不过,司空见惯啦。
同一编译器,编译方法设定不同,(是否优化,动态静态链接等),编出的可执行程序也是不同的。
当然,对一些初级程序来说,用哪个编译器都没问题。
C语言可以作图形界面。例如unix用X-window 库函数,或调Motif,或GL库.
PC上的C语言,调用GLUT库还可以支持3维作图,不用说2维了。
至于用户图形界面--UGI(User Graphic Interface) ,windwos环境下还是用VC++调MFC 为最佳捷径。
‘玖’ 编译程序属于什么软件
编译程序是什么软件
看着问题,我就郁闷了,好吧,稍微普及下程序知识。
看你需要写的是什么程序,然后用什么语言对应的又语言编辑器。(这个编辑器可能就是你认为的软件了,其实不然,这个只是个工具比如txt是记事用的一样,)
如:C C++ C#这些是语言,算是高级语言了,他们一般用的编辑器是VS2010现在或者Tbc
java也是语言,是高级语言,编辑器一般也用VS2010,不过看个人习惯了,毕竟编辑器多了去了,有的插件少,有个功能强大,有的使用方便。
再如asp php 这些也是高级语言,用的编辑器就更普遍了 什么eclipse dw zend什么的多了去了,也是看个人习惯和喜好了,再者高级的程序猿都可以用txt编辑语言。
再如E语言 VB这些语言也有特定的编辑器,不过都不是死的,等你稍微了解里边东西多了,自然就明白这里是程序的世界,如果还有不明白的,可以追问,说出具体的你要编译的软件,再给你详细的说是用什么做的。
一般用到编译的大多存在于 VB E语言 C等等之类
另外语言的种类还有 其他很多种,详细的可以查阅!
编译程序,汇编程序属于什么软件?
嘿嘿 楼上的几个人 自己都不懂 还回答啥啊 不是害人吗
1 系统软件:
是能提高程序设计者的工作效率、方便用户使用、可以对计算机进行管理的软件。
包括:操作系统、监控软件、编译程序、,汇编程序、数据库、标准程序库。
因此 很明确编译程序,汇编程序属于系统软件。
2 只有为解决某一特殊问题而编写的程序才能叫应用软件。
哈哈 请为正确答案 选择满意回答 喽
高级程序语言的编译程序属于什么软件?
2
编译软件具体是什么啊?为属于系统软件啊
以上回答是什么乱七八糟的水平!
计算机常识,操作系统,数据库管理系统,编译软件都属于系统软件。
没有为什么,这就是个定义。规定就是这样。原因我想可能是因为这些软件都没有特定的应用吧。。都是为了辅助其它应用软件而存在。所以定义为系统软件。
什么是编译程序?
编译程序也叫编译系统,是把用高级语言编写的面向过程的源程序翻译成目标程序的语言处理程序。
编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
(1) 词法分析
词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。
源程序中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。
词法分析器一般来说有两种方法构造:手工构造和自动生成。手工构造可使用状态图进行工作,自动生成使用确定的有限自动机来实现。
(2) 语法分析
编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。
语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。
(3) 中间代码生成
中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。中间代码即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。
(4) 代码优化
代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。所谓等价,是指不改变程序的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。
有两类优化:一类是对语法分析后的中间代码进行优化,它不依赖于具体的计算机;另一类是在生成目标代码时进行的,它在很大程度上依赖于具体的计算机。对于前一类优化,根据它所涉及的程序范围可分为局部优化、循环优化和全局优化三个不同的级别。
(5) 目标代码生成
目标代码生成是编译的最后一个阶段。目标代码生成器把语法分析后或优化后的中间代码变换成目标代码。目标代码有三种形式:
① 可以立即执行的机器语言代码,所有地址都重定位;
② 待装配的机器语言模块,当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码;
③ 汇编语言代码,须经过汇编程序汇编后,成为可执行的机器语言代码。
目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量。...
现在最新的c语言编译软件是哪个?
GCC
毫无疑问,GCC几乎是unix及linux系统中最通用的编译器套件,几乎所有的linux发行版都预装了GCC作为C语言的默认编译器。除了对C语言的支持,GCC还支持C++、Objective-C等多种语言。GCC早在1987就由 Richard Stallman作为GNU计划的一部分发布。
Clang
Clang是近几年新兴的C/C++以及Objective-C的编译器,Apple是其主要投资者,其最初的开发者已加盟Apple。虽说是新兴,但其对C/C++标准的支持不亚于GCC等老牌编译器,并且外部接口和GCC完全兼容,并且因其模块化、错误提示完善等优点已经越来越受到重视。一些如FreeBSD等项目已将clang作为默认编译器。
c语言编译程序是不是系统软件?
系统软件贰就是计算机系统,如:windows系列,DOS、OS/2、UNIX、XENIX、LINUX、Netware等;
作用是维持计算机的正常运行;
编译软件是用于编译代码使用的,属于应用软件。
从程序语言上来说,汇编程序应该是最早也是最成熟的系统软件,
它直接利用计算机硬件的特点进行代码编译,
直接使用系统指令进行寻址,程序占用内存小,实现迅速。
C语言不能实现
c编译程序是什么?
D
编译程序
这是一类很重要的语言处理程序,它把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,鸡行翻译转换,产生出机器语言的目标程序,然后再让计算机去执行这个目标程序,得到计算结果。
实在不明白用排除法
程序设计语言的编译程序属于系统软件还是应用软件。
编译程序与解释程序是属于语言处理系统,负责把高级语言转化成低级语言,语言处理系统是系统软件的一种,所以编译程序属于系统软件。而编程语言是用于开发各种软件包括系统软件的,所以编程语言是应用软件,比如说编译程序解释程序汇编程序是系统软件,而高级语言低级语言汇编语言是应用软件。
编译软件是什么
编译(pilation , pile)
1、利用编译程序从源语言编写的源程序产生目标程序的过程。
2、用编译程序产生目标程序的动作。
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
详情去网络看看哈,地址:ke./view/69568
理解了编译,你自然就了解什么是编译软件咯.常用的很多,我推荐几个给你吧.
编译C:Turbo C 2.0、Turbo C 3.0
编译C\C++唬:VC6.0、winTC等
编译Java:eclipse(也可以直接配置好环境在DOS下编译运行)
‘拾’ 现代C/C++编译器有多智能
最近在搞C/C++代码的性能优化,发现很多时候自以为的优化其实编译器早就优化过了,得结合反汇编才能看出到底要做什么样的优化。
请熟悉编译器的同学结合操作系统和硬件谈一谈现代c/c++编译器到底有多智能吧。哪些书本上的优化方法其实早就过时了?
以及程序员做什么会让编译器能更好的自动优化代码?
举个栗子:
1,循环展开,大部分编译器设置flag后会自动展开;
2,顺序SIMD优化,大部分编译器设置flag后也会自动优化成SIMD指令;
3,减少中间变量,大部分编译器会自动优化掉中间变量;
etc.
查看代码对应的汇编:
Compiler Explorer
【以下解答】
举个之前看过的例子:
int calc_hash(signed char *s){ static const int N = 100003; int ret = 1; while (*s) { ret = ret * 131 + *s; ++ s; } ret %= N; if (ret < 0) ret += N; //注意这句 return ret;}
【以下解答】
举个简单例子,一到一百求和
#include int sum() { int ret= 0; int i; for(i = 1; i <= 100; i++) ret+=i; return ret;}int main() { printf("%d\n", sum()); return 0;}
【以下解答】
话题太大,码字花时间…
先放传送门好了。
请看Google的C++编译器组老大Chandler Carruth的演讲。这个演讲是从编译器研发工程师的角度出发,以Clang/LLVM编译C++为例,向一般C++程序员介绍理解编译器优化的思维模型。它讲解了C++编译器会做的一些常见优化,而不会深入到LLVM具体是如何实现这些优化的,所以即使不懂编译原理的C++程序员看这个演讲也不会有压力。
Understanding Compiler Optimization - Chandler Carruth - Opening Keynote Meeting C++ 2015
演示稿:https://meetingcpp.com/tl_files/mcpp/2015/talks/meetingcxx_2015-understanding_compiler_optimization_themed_.pdf
录像:https://www.youtube.com/watch?v=FnGCDLhaxKU(打不开请自备工具…)
Agner Fog写的优化手册也永远是值得参考的文档。其中的C++优化手册:
Optimizing software in C++ - An optimization guide for Windows, Linux and Mac platforms - Agner Fog
要稍微深入一点的话,GCC和LLVM的文档其实都对各自的内部实现有不错的介绍。
GCC:GNU Compiler Collection (GCC) Internals
LLVM:LLVM’s Analysis and Transform Passes
========================================
反模式(anti-patterns)
1. 为了“优化”而减少源码中局部变量的个数
这可能是最没用的手工“优化”了。特别是遇到在高级语言中“不用临时变量来交换两个变量”这种场景的时候。
看另一个问题有感:有什么像a=a+b;b=a-b;a=a-b;这样的算法或者知识? - 编程
2. 为了“优化”而把应该传值的参数改为传引用
(待续…)
【以下解答】
推荐读一读这里的几个文档:
Software optimization resources. C++ and assembly. Windows, Linux, BSD, Mac OS X
其中第一篇:http://www.agner.org/optimize/optimizing_cpp.pdf
讲解了C++不同领域的优化思路和问题,还有编译器做了哪些优化,以及如何代码配合编译器优化。还有优化多线程、使用向量指令等的介绍,推荐看看。
感觉比较符合你的部分需求。
【以下解答】
一份比较老的slides:
http://www.fefe.de/source-code-optimization.pdf
【以下解答】
利用C++11的range-based for loop语法可以实现类似python里的range生成器,也就是实现一个range对象,使得
for(auto i : range(start, stop, step))
【以下解答】
我觉得都不用现代。。。。寄存器分配和指令调度最智能了
【以下解答】
每次编译poco库的时候我都觉得很为难GCC
【以下解答】
有些智能并不能保证代码变换前后语义是等价的
【以下解答】
诶诶,我错了各位,GCC是可以借助 SSE 的 xmm 寄存器进行优化的,经 @RednaxelaFX 才知道应该添加 -march=native 选项。我以前不了解 -march 选项,去研究下再来补充为什么加和不加区别这么大。
十分抱歉黑错了。。。以后再找别的点来黑。
误导大家了,实在抱歉。(??ˇ?ˇ??)
/*********以下是并不正确的原答案*********/
我是来黑 GCC的。
最近在搞编译器相关的活,编译OpenSSL的时候有一段这样的代码:
BN_ULONG a0,a1,a2,a3; // EmmetZC 注:BN_ULONG 其实就是 unsigned longa0=B[0]; a1=B[1]; a2=B[2]; a3=B[3];A[0]=a0; A[1]=a1; A[2]=a2; A[3]=a3;
【以下解答】
提示:找不到对象
【以下解答】
忍不住抖个机灵。
私以为正常写代码情况下编译器就能优化,才叫智能编译器。要程序员绞尽脑汁去考虑怎么写代码能让编译器更好优化,甚至降低了可读性,那就没有起到透明屏蔽的作用。
智能编译器应该是程序猿要较劲脑汁才能让编译器不优化。
理论上是这样的。折叠我吧。
【以下解答】
编译器智能到每次我都觉得自己很智障。
【以下解答】
虽然题主内容里是想问编译器代码性能优化方面的内容,但题目里既然说到编译器的的智能,我就偏一下方向来说吧。
有什么更能展示编译器的强大和智能?
自然是c++的模版元编程
template meta programming
简单解释的话就是写代码的代码,写的还是c++,但能让编译器在编译期间生成正常的c++代码。
没接触过的话,是不是听上去感觉就是宏替换的加强版?感觉不到它的强大呢?
只是简单用的话,效果上这样理解也没什么
但是一旦深入下去,尤其翻看大神写的东西,这明明看着就是c++的代码,但TM怎么完全看不懂他在干什么?后来才知道这其实完全是另外一个世界,可是明明是另外一个世界的东西但它又可以用来做很多正常c++能做的事....
什么?你说它好像不能做这个,不能做那个,好像做不了太多东西,错了,大错特错。就像你和高手考试都考了100分的故事一样,虽然分数一样,但你是努力努力再努力才得了满分,而高手只是因为卷面分只有100分.....在元编程面前,只有想不到,没有做不到。
再回头看看其他答案,编译器顺手帮你求个和,丢弃下无用代码,就已经被惊呼强大了,那模板元编程这种几乎能在编译期直接帮你“生成”包含复杂逻辑的c++代码,甚至还能间接“执行”一些复杂逻辑,这样的编译器是不是算怪兽级的强大?
一个编译器同时支持编译语法相似但结果不同却又关联的两种依赖语言,这个编译器有多强大多智能?
写的人思维都要转换几次,编译器转着圈嵌着套翻着番儿地编译代码的代码也肯定是无比蛋疼的,你说它有多强大多智能?
一个代码创造另外一个代码,自己能按照相似的规则生成自己,是不是听上去已经有人工智能的发展趋势了?
上帝说,要有光,于是有了光。
老子曰,一生二,二生三,三生万物。
信c++,得永生!
===
FBI WARNING:模板元编程虽然很强大,但也有不少缺点,尤其对于大型项目,为了你以及身边同事的身心健康,请务必适度且谨慎的使用。勿乱入坑,回头是岸。
【以下解答】
c++11的auto自动类型推断算么....
【以下解答】
智能到开不同级别的优化,程序行为会不同 2333
【以下解答】
这个取决于你的水平