《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > LabVIEW 編譯器的深層解析
LabVIEW 編譯器的深層解析
摘要: 編譯程序設計是一個復雜的話題,即使對內行的軟件工程師來說也要考慮很多專業知識。 NI LabVIEW軟件是一種多規范的圖形化編程環境,含有多種概念,包括數據流,面向對象,以及事件驅動編程。LabVIEW也是跨越多種平臺的,能夠很好地用于多種操作系統(OSs),芯片組,嵌入式設備,以及現場可編程門陣列(FPGAs)。LabVIEW編譯程序是一種精密的系統,在過去的20年中具有令人矚目的發展。探索NI公司的LabVIEW編譯程序的處理過程以及近來編譯程序的創新。
Abstract:
Key words :

編譯程序設計是一個復雜的話題,即使對內行的軟件工程師來說也要考慮很多專業知識。

NI labview/zhs">LabVIEW軟件是一種多規范的圖形化編程環境,含有多種概念,包括數據流,面向對象,以及事件驅動編程。LabVIEW也是跨越多種平臺的,能夠很好地用于多種操作系統(OSs),芯片組,嵌入式設備,以及現場可編程門陣列(FPGAs)。LabVIEW編譯程序是一種精密的系統,在過去的20年中具有令人矚目的發展。探索NI公司的LabVIEW編譯程序的處理過程以及近來編譯程序的創新。

 

LabVIEW編譯程序處理過程

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

 

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

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

圖1顯示了一個簡單VI的最初DFIR。當LabVIEW首次為VI創建一個DFIR時,這是一種G代碼的直接翻譯,DFIR圖表中的節點具有像G代碼中節點一樣的一對一的對應性。隨著編譯程序的執行,DFIR節點有可能被移動,部分分離,或者是增加,然而編譯程序將仍然保留原有的特性,例如LabVIEW代碼中固有的并行特性。


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

DFIR能夠為LabVIEW編譯程序提供兩種可觀的優勢:

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

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

 

DFIR分解與優化

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

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

圖 3. 上面是Trim Whitespace.vi 結構圖的定義

首先,Trim Whitespace.vi被內聯到調用VI,如圖4所示。現在,不可達代碼與死碼刪除運算可以簡化代碼。第一個條件結構將總是執行相同的分支,因為輸入的是一個恒定值。因此,其余的分支可以同整個第二個條件結構一起移走,因為它們從不執行。循環不變式代碼移動將匹配模式基元(Match Pattern primitive)移出循環框,確保其只被執行一次,如圖5所示。

圖 4.  subVI內聯到調用程序,導致一個 DFIR圖表等價于該 G代碼

圖 5. 一次執行產生優化的 DFIR圖表

 

DFIR后端變換

在DFIR圖表被分解與優化后,后端變換開始執行。這些變換評估并注解DFIR圖表,為最終將DFIR圖表降低為LLVM IR做好準備。聚叢程序負責將節點歸為簇,這些簇可以并行運行。替代程序識別何時分配的數據可以重新使用,何時必須制作副本。在替代程序運行后,分配程序預留出VI執行所需的內存空間。最后,編碼發生器負責將DFIR圖表轉化為可執行的機器指令用于目標處理器。

 

LLVM提供一種底層的中間表示

LLVM是一種多用途,高性能,源代碼開放的構架,原來是伊利諾斯州州立大學的作為研究項目而發明的。LLVM因為其靈活性,簡潔的API以及不受許可的限制,被廣泛用于學術研究與工業生產。在LabVIEW 2010版本,LabVIEW編碼生成器使用LLVM來生成目標機器碼。在從DFIR圖表創建編碼流后,LabVIEW訪問每個指令并創建一個等價的LLVM表示。軟件會激活多種優化掃描,最終,LLVM準時制(JIT)構架在內存中創建可執行的機器指令。現在LabVIEW可以使用LLVM來執行指令綜合,跳變線程,聚合標量替代(scalar replacement of aggregates),條件擴展,尾端調用刪除,循環不變代碼移出,死碼刪除以及循環展開。

 

DFIR與LLVM協同工作

DFIR是高級的IR具有并行性,而LLVM是底層IR,具有目標機器特性的認知,二者協同工作以優化開發者為處理器結構而編寫的LabVIEW代碼,它們能夠在處理器上被執行。

Chris Wood

Chris Wood是NI公司LabVIEW方面的傳感器軟件工程師。他擁有德克薩斯A&M大學計算機工程專業的學士學位。

 Craig Smith

Craig Smith是NI公司的首席軟件工程師。他擁有德克薩斯A&M大學計算機科學專業的學士與碩士學位。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美性片在线观看| 免播放器亚洲一区| 久久精品二区三区| 亚洲一二三区精品| 国内精品久久久久影院色| 老鸭窝毛片一区二区三区| 香蕉视频成人在线观看 | 在线播放精品| 狠狠操狠狠色综合网| 国产一区二区三区在线观看网站| 欧美激情国产日韩| 亚洲欧美日韩直播| 亚洲亚洲精品三区日韩精品在线视频 | 中日韩美女免费视频网址在线观看| 国产欧美精品在线播放| 欧美视频在线播放| 欧美色欧美亚洲另类七区| 欧美日韩免费在线视频| 欧美日韩亚洲一区二区三区在线| 久久精品一区二区国产| 欧美一区免费| 欧美一区亚洲一区| 久久精品一级爱片| 久久亚洲春色中文字幕| 亚洲一区二区高清视频| 亚洲午夜激情免费视频| 一本一本久久a久久精品牛牛影视| 欧美一区二区三区在线播放| 欧美一区亚洲二区| 亚洲国产mv| 亚洲精品国产精品乱码不99按摩| 亚洲欧美一区二区视频| 亚洲欧美日韩天堂| 久久精品99无色码中文字幕| 亚洲一区二区免费看| 亚洲高清免费| 日韩视频精品在线观看| 在线一区二区三区做爰视频网站| 91久久国产综合久久| 国产在线播放一区二区三区| 一区二区三区在线观看视频| 亚洲品质自拍| 亚洲免费在线观看视频| 欧美主播一区二区三区美女 久久精品人 | 亚洲欧美日韩中文播放| 欧美中文字幕视频| 亚洲免费在线视频一区 二区| 亚洲精品在线免费观看视频| 一本色道久久综合亚洲精品不| 亚洲精品欧美专区| 一区二区三区久久久| 亚洲精品乱码| 亚洲欧美日韩直播| 久久夜色精品一区| 欧美精品电影| 国产麻豆午夜三级精品| 亚洲第一毛片| 一区二区三区日韩| 欧美一乱一性一交一视频| 亚洲精品视频一区| 性久久久久久久| 香蕉久久夜色精品国产| 久久资源在线| 国产精品第一页第二页第三页| 欧美性事免费在线观看| 国产欧美日韩一区二区三区在线 | 久久三级视频| 欧美日韩国内自拍| 国产视频一区三区| 亚洲美女黄色片| 欧美在线影院在线视频| av成人老司机| 久久视频在线看| 欧美性做爰毛片| 在线看国产一区| 亚洲欧美另类综合偷拍| 亚洲美女黄色片| 久久久精品999| 国产精品扒开腿做爽爽爽视频 | 亚洲中午字幕| 毛片一区二区| 国产伦精品一区二区三区在线观看 | 亚洲欧美日韩一区二区在线 | 国产精品美女黄网| 1000部精品久久久久久久久| 亚洲国产色一区| 亚洲欧美激情四射在线日| 欧美一区91| 亚洲一级二级在线| 欧美成黄导航| 国产自产女人91一区在线观看| 一区二区三区在线观看国产| 亚洲国产精品久久久| 亚洲欧美在线网| 亚洲男同1069视频| 久久精品一区二区三区不卡牛牛| 久久网站免费| 欧美日韩精品免费看| 在线观看福利一区| 99成人在线| 亚洲日本电影在线| 美女网站久久| 欧美日韩国产欧| 1769国产精品| 亚洲国产精品久久| 久久一区中文字幕| 国产三区二区一区久久| 亚洲一区二区三区四区在线观看| 久久福利资源站| 午夜老司机精品| 欧美日精品一区视频| 国产午夜精品一区二区三区欧美 | 黄色成人精品网站| 欧美一区二区三区喷汁尤物| 亚洲精品国产精品国自产观看浪潮 | 欧美激情综合色| 在线观看中文字幕不卡| 一本色道久久综合精品竹菊 | 欧美专区日韩专区| 香蕉久久夜色精品国产| 国产精品久久久久毛片软件 | 欧美a级一区二区| 影音先锋在线一区| 亚洲性xxxx| 亚洲午夜一区二区| 另类综合日韩欧美亚洲| 国产一区二区中文| 欧美在线一二三| 久色成人在线| 亚洲国产另类久久久精品极度| 亚洲在线一区| 午夜在线播放视频欧美| 国产欧美日韩不卡免费| 香蕉成人啪国产精品视频综合网| 亚洲色图在线视频| 欧美日韩精品一区二区天天拍小说 | 亚洲国产精品一区在线观看不卡| 午夜欧美精品久久久久久久| 国产精品久久久久99| 亚洲国产美女精品久久久久∴| 亚洲欧美怡红院| 久久久久久久激情视频| 狠狠色丁香婷综合久久| 91久久夜色精品国产网站| 欧美激情视频在线播放| 99国产精品视频免费观看| 亚洲主播在线观看| 国产九色精品成人porny| 欧美尤物一区| 欧美国产综合| 一区二区三区四区精品| 久久精品成人一区二区三区| 欧美视频网址| 亚洲欧美日韩视频一区| 久久先锋影音| 亚洲欧洲三级| 欧美亚洲综合在线| 欧美午夜大胆人体| 亚洲综合电影| 免费成人性网站| 一区二区三区导航| 久久国产精品久久久| 国产精品无人区| 欧美怡红院视频| 久久精品免费观看| 怡红院精品视频| 一区二区三区四区五区视频 | 亚洲精品黄色| 小黄鸭精品密入口导航| 在线观看视频一区| 亚洲国产成人不卡| 欧美成人激情视频| 亚洲第一页在线| 亚洲国产经典视频| 欧美日韩国产123| 性感少妇一区| 久久国产精彩视频| 国产女主播一区二区三区| 久久精品国产成人| 欧美日韩中文字幕在线| 欧美在线资源| 国产精品v日韩精品v欧美精品网站| 亚洲少妇自拍| 久久一区二区三区四区| 国产精品99久久久久久白浆小说| 亚洲一区视频在线观看视频| 国内偷自视频区视频综合| 亚洲午夜精品一区二区| 国产精品国产三级国产普通话99 | 国产视频综合在线| 欧美一区二区三区免费观看视频 | 麻豆精品精品国产自在97香蕉| 尤物99国产成人精品视频| 亚洲影视在线播放| 亚洲国产精品一区| 欧美影院午夜播放| 日韩一级大片| 亚洲欧美在线看| 亚洲国内自拍| 久久久久国产精品人|