在過去數(shù)十年,摩爾定律一直支配著半導(dǎo)體的發(fā)展。隨著MCU的性能越來越強(qiáng),嵌入式產(chǎn)品也越來越智能,嵌入式軟件也變得越來越復(fù)雜。編譯器作為嵌入式軟件開發(fā)的基礎(chǔ)工具,將程序員編寫的源代碼轉(zhuǎn)換為底層硬件可以執(zhí)行的機(jī)器指令。一款優(yōu)秀的編譯器既需要對(duì)程序進(jìn)行優(yōu)化,確保程序可以高效地運(yùn)行,同時(shí)又需要保證轉(zhuǎn)換的一致性。
Python的創(chuàng)始人是一位荷蘭籍的程序員——吉多·范羅蘇姆(Guido van Rossum),江湖外號(hào)“龜叔”。據(jù)說這個(gè)外號(hào)是由于Guido的開頭與龜?shù)钠匆鬵ui相同得來的,所以Guido也被程序員們戲稱為“龜叔”。在1989年的圣誕節(jié)假期,龜叔為了打發(fā)時(shí)間,在家開始寫Python語言的編譯器。1991年,Python語言編譯器正式誕生,Python這一名稱正是來自于龜叔非常喜歡的著名系列喜劇《蒙提·派森的飛行馬戲團(tuán)》(The Monty Python's Flying Circus)。而python一詞也有著蟒蛇的意思,所以Logo也設(shè)計(jì)為兩條蟒蛇的圖案。
從匯編角度來說,如果“test %al, %al”能改成“test %0x1, %al”就沒有匪夷所思的問題了,如此一來應(yīng)該會(huì)降低CPU的效率,畢竟執(zhí)行指令還需要一個(gè)立即數(shù),我沒搞過編譯器也沒設(shè)計(jì)過CPU,純屬瞎猜,能搞編譯器的家伙都是大牛的存在,咱們吃瓜的參合個(gè)啥!
ZigBee 無線網(wǎng)絡(luò)節(jié)點(diǎn)開發(fā)平臺(tái)軟件開發(fā)平臺(tái) IAR Embedded Workbench(簡(jiǎn)稱 EW)的 C/C++交叉編譯器和調(diào)試器是今天世界最完整的和最容易使用專業(yè)嵌入式應(yīng)用開發(fā)工具。EW 對(duì)不同的微處理器提供一樣直觀用戶界面。
PathWave RFPro 與新思科技定制化編譯器相輔相成,可提供無線晶片設(shè)計(jì)工作流程所需的整合式電磁模擬工具
在MCU開發(fā)和應(yīng)用中,工程師都需要進(jìn)行MCU的能力測(cè)試,通用的做法是用Benchmark(基準(zhǔn))程序來測(cè)試。然而,在做基準(zhǔn)測(cè)試時(shí),編譯器的優(yōu)化能力也在測(cè)試結(jié)果中有較為明顯的影響,同一套硬件平臺(tái),選用不同的編譯器和不同的優(yōu)化選項(xiàng),可能得出的結(jié)果相差較大。
Part1一、讓自己習(xí)慣C條款01:視C為一個(gè)語言聯(lián)邦C并不是一個(gè)帶有一組守則的一體語言:他是從四個(gè)次語言(C、Object-OrientedC、Template、STL)?組成的聯(lián)邦政府,每個(gè)次語言都有自己的規(guī)約。記住這四個(gè)次于語言你就會(huì)發(fā)現(xiàn)C容易了解得多。條款02:盡量以co...
星標(biāo)「嵌入式大雜燴」,一起進(jìn)步!來源:www.cnblogs.com/Chaobs/p/4510768.html不知道你有沒有想過,某種編程語言的第一個(gè)編譯器是怎么來的呢?這不就是“雞生蛋,蛋生雞”的問題嗎?先說最后的結(jié)論:任何一種語言的第一個(gè)編譯器肯定是使用其他語言寫出來的。以...
最近芯片公司挺火的,編譯器崗位突然多了起來。不知道什么時(shí)候開始,編譯原理總被人說成是用來炫耀的“屠龍技”,對(duì)此我不敢茍同,編譯原理實(shí)打?qū)嵉氖且婚T對(duì)你我工作大有裨益的技術(shù)。?編譯技術(shù)簡(jiǎn)單點(diǎn)說,就是把高級(jí)語言的代碼翻譯成為計(jì)算機(jī)可以理解和運(yùn)行的二進(jìn)制代碼的技術(shù)。我們經(jīng)常會(huì)碰到需要編譯...
在嵌入式開發(fā)中,代碼的體積和運(yùn)行效率非常重要,代碼體積往往和芯片的FLASH、RAM容量對(duì)應(yīng),程序的運(yùn)行效率也要求在相應(yīng)能力的處理器上運(yùn)行。在大多數(shù)情況下,成熟的開發(fā)人員都希望降低代碼體積、提高代碼運(yùn)行效率,然而具體該怎么做呢?本篇文章將以國(guó)際知名編譯器廠商IAR Systems的編譯器為例,來解答開發(fā)人員在實(shí)際工作中常常遇到的問題,工程師朋友們可以在IAR編譯器上進(jìn)行實(shí)踐驗(yàn)證。
星標(biāo)「嵌入式大雜燴」,一起進(jìn)步!作者|strongerHuang微信公眾號(hào)|strongerHuang作為程序員,使用編譯器是必備技能,但是從入門到放棄,基本上就是在開發(fā)環(huán)境安裝、配置這一步。。。大家可能體會(huì)過,使用編譯器不是一件簡(jiǎn)單的事,下載、安裝、各種配置······但最終不...
關(guān)注星標(biāo)公眾號(hào),不錯(cuò)過精彩內(nèi)容作者|strongerHuang微信公眾號(hào)?|?嵌入式專欄為了方便大家平時(shí)公交、地鐵、外出辦事也能用手機(jī)回顧查看文章,我特意用心精選,并分類整理了部分文章:多款優(yōu)秀的支持C、C等多種語言的在線編譯器嵌入式開發(fā)中那些常用的工具軟件幾款非常優(yōu)秀且常用的代...
↓推薦關(guān)注↓英特爾的長(zhǎng)期編譯器專家JamesReinders在一篇博客中透露,他們將在下一代英特爾C/C編譯器中使用LLVM開源基礎(chǔ)架構(gòu);并分享了一些相關(guān)信息?!癓LVM有助于我們實(shí)現(xiàn)為英特爾架構(gòu)提供最佳C/C編譯器的目標(biāo)。最新的英特爾C/C編譯器使用LLVM,可提供更快的編譯時(shí)...
點(diǎn)擊上方“小麥大叔”,選擇“置頂/星標(biāo)公眾號(hào)”福利干貨,第一時(shí)間送達(dá)大家好,我是小麥,上次寫過一篇文章《Keil編譯太慢怎么辦?教你一招,提速10倍?》,減少了中間文件的生成,確實(shí)把編譯速度提高了很多,其實(shí)沒有從根本上解決問題,有大佬提出用直接上AC6。于是我就切換到AC6上嘗試...
↓推薦關(guān)注↓英特爾的長(zhǎng)期編譯器專家JamesReinders在一篇博客中透露,他們將在下一代英特爾C/C編譯器中使用LLVM開源基礎(chǔ)架構(gòu);并分享了一些相關(guān)信息?!癓LVM有助于我們實(shí)現(xiàn)為英特爾架構(gòu)提供最佳C/C編譯器的目標(biāo)。最新的英特爾C/C編譯器使用LLVM,可提供更快的編譯時(shí)...
一、GCC簡(jiǎn)介TheGNUCompilerCollection,通常簡(jiǎn)稱GCC,是一套由GNU開發(fā)的編譯器集,為什么是編輯器集而不是編譯器呢?那是因?yàn)樗粌H支持C語言編譯,還支持C,Ada,ObjectiveC等許多語言。另外GCC對(duì)硬件平臺(tái)的支持,可以所無所不在,它不僅支持X8...
總有些讀者問我C是如何入門的?我好像一直也沒有總結(jié)過一篇文章。其實(shí)說真的,學(xué)習(xí)任何一門語言都是靠實(shí)踐,我現(xiàn)在還清晰的記得,我用C做的第一個(gè)項(xiàng)目就是實(shí)現(xiàn)一個(gè)小型編譯器。大二的時(shí)候?qū)W習(xí)編譯原理,當(dāng)時(shí)的大作業(yè)就是要實(shí)現(xiàn)個(gè)編譯器。當(dāng)時(shí)對(duì)編譯原理就非常感興趣,感覺各種詞法分析語法分析非常有...
數(shù)組名和指針是兩個(gè)往往很容易讓人們混淆的概念,很多人以為數(shù)組名就是一個(gè)指針,也有很多人知道數(shù)組名不同于指針但是僅知道數(shù)組名的值不能像指針一樣改變。
很多使用過Keil MDK的工程師都發(fā)現(xiàn)了一個(gè)問題,Keil MDK編譯代碼的時(shí)候,速度很慢。
2015年我加入華為中軟院編譯器實(shí)驗(yàn)室,那時(shí)候它還叫歐拉六部。其實(shí)程序員敲代碼寫的編程語言機(jī)器是看不懂的,需要先翻譯成匯編語言,也就是一條條指令,再轉(zhuǎn)換成二進(jìn)制,這樣機(jī)器才明白我們要做什么。編譯器就像是“翻譯官”,把程序員懂的編程語言轉(zhuǎn)化成機(jī)器認(rèn)識(shí)的二進(jìn)制,如果這個(gè)“翻譯官”看不懂編程語言或者翻譯的速度慢,在性能上的影響就可想而知了。