<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > LabVIEW編譯程序設(shè)計

          LabVIEW編譯程序設(shè)計

          作者: 時間:2010-10-19 來源:網(wǎng)絡(luò) 收藏

            是一個復(fù)雜的話題,即使對內(nèi)行的軟件工程師來說也要考慮很多專業(yè)知識。

          本文引用地址:http://www.ex-cimer.com/article/195256.htm

            NI 軟件是一種多規(guī)范的圖形化編程環(huán)境,含有多種概念,包括數(shù)據(jù)流,面向?qū)ο?,以及事件?qū)動編程。也是跨越多種平臺的,能夠很好地用于多種操作系統(tǒng)(OSs),芯片組,嵌入式設(shè)備,以及現(xiàn)場可編程門陣列(FPGAs)。程序是一種精密的系統(tǒng),在過去的20年中具有令人矚目的發(fā)展。探索NI公司的LabVIEW程序的處理過程以及近來編譯程序的創(chuàng)新。

            LabVIEW編譯程序處理過程

            首先一個VI的編譯是類的擴(kuò)展,主要負(fù)責(zé)將隱含的類解析為適于終端輸出與檢查句法錯誤的類型。在類擴(kuò)展之后,VI從編輯模型轉(zhuǎn)化為可以被編譯程序使用的數(shù)據(jù)流中間表示(DFIR)圖表。編譯程序執(zhí)行幾種變換,例如在DFIR圖表分解過程中的死碼刪除,優(yōu)化,并為代碼生成做好準(zhǔn)備。DFIR接下來被轉(zhuǎn)化成底層的虛擬機(jī)(LLVM)中間表示(IR),有關(guān)IR的一系列掃描被運(yùn)行,以利于更進(jìn)一步的優(yōu)化與底層化——最終——變?yōu)闄C(jī)器碼。

            DFIR提供一種高級的中間表示

            DFIR是一種分級的,結(jié)構(gòu)圖代碼的,基于圖表的IR。類似于G代碼,DFIR包含很多具有端點(diǎn)的節(jié)點(diǎn),能夠與其它端點(diǎn)相連。一些節(jié)點(diǎn),例如框圖,含有圖表,這些圖表也可以依此類推地包含其它節(jié)點(diǎn)。

            圖1顯示了一個簡單VI的最初DFIR。當(dāng)LabVIEW首次為VI創(chuàng)建一個DFIR時,這是一種G代碼的直接翻譯,DFIR圖表中的節(jié)點(diǎn)具有像G 代碼中節(jié)點(diǎn)一樣的一對一的對應(yīng)性。隨著編譯程序的執(zhí)行,DFIR節(jié)點(diǎn)有可能被移動,部分分離,或者是增加,然而編譯程序?qū)⑷匀槐A粼械奶匦裕?LabVIEW代碼中固有的并行特性。

            

          查看一個簡單VI 的初始 DFIR 圖表 www.elecfans.com

            圖 1. 查看一個簡單VI 的初始 DFIR 圖表

            DFIR能夠?yàn)長abVIEW編譯程序提供兩種可觀的優(yōu)勢:

            1. DFIR將編輯程序從編譯程序的表示中分離——在DFIR出現(xiàn)以前,LabVIEW具有一個單獨(dú)的VI表示,由編輯程序和編譯程序共享。這樣在編譯過程中,阻止了編譯程序修改表示,也會使引入編譯程序優(yōu)化很困難。DFIR引入了一系列的優(yōu)化與分解措施,能夠極大地提高LabVIEW代碼的性能,僅要求結(jié)構(gòu)圖節(jié)點(diǎn)與連線被斷開并可以移動。

            2. DFIR作為多個編譯程序的前段與后段的公用連接點(diǎn)——今天,LabVIEW能處理很多明顯不同的任務(wù)。類似地,LabVIEW也為用戶提供了多種算法模式,例如LabVIEW MathScript,C一體化,仿真圖表,以及狀態(tài)表(statecharts)。DFIR提供了一種常用IR,它由前端生成而由后端使用,使不同組合的重新使用更加便利。

            DFIR分解與優(yōu)化

            一旦進(jìn)入DFIR,VI運(yùn)行一系列的分解變換,來縮減或標(biāo)準(zhǔn)化DFIR圖表。在DFIR圖表徹底分解后,DFIR優(yōu)化掃描開始。有超過30種分解與優(yōu)化能夠提高LabVIEW代碼的性能。請仔細(xì)查看圖2和3顯示的簡單VI,它被稱為Trim Whitespace VI(Trim Whitespace.vi),來自vi.lib。

            

          2.png

            圖 2. 這是任意 DFIR分解前的 VI

            

          Trim Whitespace.vi 結(jié)構(gòu)圖的定義 www.elecfans.com

            圖 3. 上面是Trim Whitespace.vi 結(jié)構(gòu)圖的定義

            首先,Trim Whitespace.vi被內(nèi)聯(lián)到調(diào)用VI,如圖4所示?,F(xiàn)在,不可達(dá)代碼與死碼刪除運(yùn)算可以簡化代碼。第一個條件結(jié)構(gòu)將總是執(zhí)行相同的分支,因?yàn)檩斎氲氖且粋€恒定值。因此,其余的分支可以同整個第二個條件結(jié)構(gòu)一起移走,因?yàn)樗鼈儚牟粓?zhí)行。循環(huán)不變式代碼移動將匹配模式基元(Match Pattern primitive)移出循環(huán)框,確保其只被執(zhí)行一次,如圖5所示。

            

            圖 4. subVI內(nèi)聯(lián)到調(diào)用程序,導(dǎo)致一個 DFIR圖表等價于該 G代碼

            

          5.png

            圖 5. 一次執(zhí)行產(chǎn)生優(yōu)化的 DFIR圖表


          上一頁 1 2 下一頁

          關(guān)鍵詞: LabVIEW 編譯 程序設(shè)計

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();