- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LabVIEW 编译器深层解析
导语:?NI LabVIEW软件是一种多规范的图形化编程环境,含有多种概念,包括数据流,面向对象,以及事件驱动编程。 编译程序设计是一个复杂的话题,即使对内行的软件工程师来说也要考虑很多专业知识。
NI 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以及不受许可的限制,被
您可能关注的文档
- hiperface dsl:数字化电机反馈被确定为市场标准.doc
- hdlc协议芯片pt7a6525及其在交换机中的应用.doc
- hil测试减少75%的飞机拦阻器控制系统现场测试时间.doc
- hima安全控制系统在电厂fsss中的应用.doc
- hf荧光灯电子镇流器的评价 .doc
- hirfl-csr真空控制系统的设计及其应用.doc
- hivert高压变频器对煤矿行业的改造.doc
- hivert高压变频器在矿井主通风机上的应用.doc
- hivert高压变频器在水厂改造中的应用.doc
- hivert高压变频器在新疆焦煤集团皮带机的应用.doc
- labview 技术在加速器磁场测量中的应用.doc
- labview还是c语言?(能够换个方式提问吗?).doc
- labview robotics 2010:感知,思考,经过优化的动作响应.doc
- labview和imaq在指针式仪表自动读数中的应用.doc
- labview和matlab在水声信号处理中的应用.doc
- labview机器人模块——机器人选板中的特殊算法和api.doc
- labview和pxi测量托克马克装置compass中聚变等离子体的温度和密度 .doc
- labview嵌入式技术的评估版本选择.doc
- labview与pxi设计并实现用于飞机前起落架电子转向系统原型的试验装置.doc
- labview与scxi为飞行中的直升机提供了一个可配置的测量系统.doc
原创力文档


文档评论(0)