編譯器是什麼樣
需要准備的材料分別有:電腦、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
【以下解答】
這個取決於你的水平