针对软件程序的变量推论系统及方法技术方案

技术编号:13365330 阅读:52 留言:0更新日期:2016-07-18 19:23
本发明专利技术提供一种针对软件程序的变量推论系统及方法。该推论系统及方法针对一软件程序的多个第一基本区块计算对应至一未知变量的一第一变量类型输出,根据该等第一变量类型输出针对该软件程序的一第二基本区块计算对应至该未知变量的一第二变量类型输入,于该第二基本区块中包含对应至该未知变量的一原始指令时,计算对应至该未知变量的一第二变量类型生成,计算对应至该未知变量的一第二变量类型删除,以及根据该第二变量类型输入、该第二变量类型生成、该第二变量类型删除,针对该第二基本区块计算对应至该未知变量的一第二变量类型输出。

【技术实现步骤摘要】

本专利技术关于一种变量推论系统及方法。更具体而言,本专利技术关于一种针对软件程序的变量推论系统及方法
技术介绍
为了提升一软件程序的执行效率,该软件程序的原始码(sourcecode)可能会在不同的程序语言之间进行转编译(transcomplier)。举例而言,JavaScript引擎执行JavaScript语言程序代码的效率约为执行原生语言程序代码(例如C或C++语言建构的程序代码)的一半,而若先将JavaScript语言程序代码转编译为原生语言程序代码,再由JavaScript引擎来执行,则可提升整体的执行效率。JavaScript语言程序代码属于动态语言程序代码,而动态语言程序代码中可能包含动态类型(dynamictyping)以及动态名称链接(dynamicnamebinding)。动态类型乃指动态语言程序代码中的变量必须在其被执行时才能决定其类型,而动态名称链接乃指动态语言程序代码中同一函数名称会因为执行其不同的状况而连结到不同的函数。然而,由于上述特性(即动态类型与动态名称链接),在动态语言程序代码被转编译为原生语言(nativelanguage)程序代码的过程中,动态语言程序代码中的变量类型将难以被确定,进而影响转编译的整体效率(例如增加编译的时间或降低编译的正确率)。有鉴于此,如何在动态语言程序代码被转编译为原生语言程序代码的过程中,提供一种有效的变量推论方法,确实为本专利技术所属技术领域中的一项重大需求。
技术实现思路
本专利技术的一目的乃是在动态语言程序代码被转编译为原生语言程序代码的过程中,提供一种有效的变量推论方法。为达上述目的,本专利技术提供一种针对一软件程序的变量推论(variableinference)系统。该变量推论系统包含一输入装置、一处理装置及一储存装置。该输入装置用以输入一软件程序。该处理装置与该输入装置连接,并用以分割该软件程序为多个基本区块(basicblocks),其中该等基本区块包含多个第一基本区块及一第二基本区块。该处理装置针对各该第一基本区块计算对应至一未知变量的一第一变量类型(type)输出。该处理装置根据该等第一变量类型输出针对该第二基本区块计算对应至该未知变量的一第二变量类型输入。该处理装置于该第二基本区块中包含对应至该未知变量的一原始指令(primitiveinstruction)时,针对该第二基本区块计算对应至该未知变量的一第二变量类型生成。该处理装置针对该第二基本区块计算对应至该未知变量的一第二变量类型删除。该处理装置根据该第二变量类型输入、该第二变量类型生成、该第二变量类型删除,针对该第二基本区块计算对应至该未知变量的一第二变量类型输出。该储存装置与该处理装置连接,并用以储存该等第一变量类型输出及该第二变量类型输出。为达上述目的,本专利技术亦提供一种针对一软件程序的变量推论方法。该变量推论方法,包含以下步骤:由一输入装置输入一软件程序;由一处理装置分割该软件程序为多个基本区块,其中该等基本区块包含多个第一基本区块及一第二基本区块;由该处理装置针对各该第一基本区块计算对应至一未知变量的一第一变量类型输出,并由储存装置储存该等第一变量类型输出;由该处理装置根据该等第一变量类型输出针对该第二基本区块计算对应至该未知变量的一第二变量类型输入;由该处理装置于该第二基本区块中包含对应至该未知变量的一原始指令时,针对该第二基本区块计算对应至该未知变量的一第二变量类型生成;由该处理装置针对该第二基本区块计算对应至该未知变量的一第二变量类型删除;由该处理装置根据该第二变量类型输入、该第二变量类型生成、该第二变量类型删除,针对该第二基本区块计算对应至该未知变量的一第二变量类型输出;以及由该储存装置储存该第二变量类型输出。综上所述,本专利技术提供了一种针对软件程序的变量推论系统及变量推论方法。该变量推论系统及该变量推论方法可将该软件程序切割为多个基本区块,并针对各该基本区块计算一变量类型输入(即输入至目前的基本区块的变量类型)、一变量类型生成(即目前的基本区块本身所生成的变量类型)、一变量类型删除(即目前的基本区块欲删除的变量类型)及一变量类型输出(即目前的基本区块欲输出到其他基本区块的变量类型)。更具体而言,该变量推论系统及该变量推论方法可根据针对先前的基本区块所计算的变量类型输出,计算目前的基本区块的变量类型输入。该变量推论系统及该变量推论方法可根据目前的基本区块中的原始指令,计算其变量类型生成。该变量推论系统及该变量推论方法可视情况针对目前的基本区块计算其变量类型删除。针对各该基本区块,该变量推论系统及该变量推论方法可根据其变量类型输入、变量类型生成及变量类型删除计算其变量类型输出,并储存该等变量类型输出。透过上述运作,先前基本区块中有关未知变量的变量类型可以数据流(dataflow)的方式直接流入到目前的基本区块,或可储存到一储存装置(例如数据库)。然后,在计算目前的基本区块中未知变量的变量类型时,本专利技术可自先前基本区块或该储存装置中取得有关未知变量的变量类型,并据以推论出未知变量于目前的基本区块中的变量类型为何。因此,即使某一基本区块包含动态语言的特性(例如动态类型及动态名称链接),本专利技术仍可藉由先前基本区块所提供的未知变量的变量类型信息,有效地推论出未知变量的变量类型。于参阅图式及随后描述的实施方式后,本专利技术所属
的技术人员便可更了解本专利技术所解决的技术问题、本专利技术解决该技术问题所采用的技术手段及所达的功效。附图说明以下是针对附图所记载的简单说明,并非用以限定本专利技术,其中:图1为根据本专利技术的一实施例的一变量推论系统的一结构例示图;图2为根据本专利技术的一实施例的一软件语言程序的一抽象语意树及其基本区块的一例示图;图3为根据本专利技术的一实施例的一变量推论系统的一运作例示图;图4为根据本专利技术的一实施例的一晶格结构的一例示图;图5为根据本专利技术的一实施例的一变量推论系统的另一运作例示图;以及图6为根据本专利技术的一实施例的一变量推论方法的一例示图。符号说明1:变量推论系统11:输入装置13:处理装置15:储存装置2:软件程序20:JavaScript语言程序201:抽象语意树22:JavaScript语言程序24:JavaScript语言程序40a:基本区块42a、42b:第一基本区块44a本文档来自技高网
...

【技术保护点】
一种针对软件程序的变量推论系统,包含:输入装置,用以输入软件程序;处理装置,与该输入装置连接,并用以分割该软件程序为多个基本区块,其中该等基本区块包含多个第一基本区块及第二基本区块,且该处理装置针对各该第一基本区块计算对应至未知变量的第一变量类型输出,根据该等第一变量类型输出针对该第二基本区块计算对应至该未知变量的第二变量类型输入,于该第二基本区块中包含对应至该未知变量的原始指令时,针对该第二基本区块计算对应至该未知变量的第二变量类型生成,针对该第二基本区块计算对应至该未知变量的第二变量类型删除,以及根据该第二变量类型输入、该第二变量类型生成、该第二变量类型删除,针对该第二基本区块计算对应至该未知变量的第二变量类型输出;以及储存装置,与该处理装置连接,并用以储存该等第一变量类型输出及该第二变量类型输出。

【技术特征摘要】
1.一种针对软件程序的变量推论系统,包含:
输入装置,用以输入软件程序;
处理装置,与该输入装置连接,并用以分割该软件程序为多个基本区块,
其中该等基本区块包含多个第一基本区块及第二基本区块,且该处理装置针对
各该第一基本区块计算对应至未知变量的第一变量类型输出,根据该等第一变
量类型输出针对该第二基本区块计算对应至该未知变量的第二变量类型输入,
于该第二基本区块中包含对应至该未知变量的原始指令时,针对该第二基本区
块计算对应至该未知变量的第二变量类型生成,针对该第二基本区块计算对应
至该未知变量的第二变量类型删除,以及根据该第二变量类型输入、该第二变
量类型生成、该第二变量类型删除,针对该第二基本区块计算对应至该未知变
量的第二变量类型输出;以及
储存装置,与该处理装置连接,并用以储存该等第一变量类型输出及该第
二变量类型输出。
2.如权利要求1所述的变量推论系统,其特征在于,该处理装置根据以下方
程计算对应至该未知变量的该第二变量类型输入:
TYPEin(ni)=T_MERGE(TYPEout(nj),TYPEoutl(nk))
其中ni表示该第二基本区块,Pred(ni)表示该等第一基本区块,nj与nk表
示该等第一基本区块中的任二个第一基本区块,T_MERGE(*)表示类型融合运
算。
3.如权利要求1所述的变量推论系统,其特征在于,该原始指令包含二来源
操作数、目的操作数及运算,且该处理装置根据该等来源操作数、该目的操作
数及该运算,计算对应至该未知变量的该第二变量类型生成。
4.如权利要求1所述的变量推论系统,其特征在于,该处理装置根据以下方
程计算对应至该未知变量的该第二变量类型输出:
TYPEout(ni)=TYPEgen(ni)∪(TYPEin(ni)-TYPEkill(ni))
其中ni表示该第二基本区块,∪表示联集运算,且TYPEout(ni)、TYPEgen(ni)、
TYPEin(ni)与TYPEkill(ni)分别表示该第二变量类型输出、该第二变量类型生成、
该第二变量类型输入与该第二变量类型删除。
5.如权利要求4所述的变量推论系统,其特征在于,若该未知变量于该第二
基本区块中被重新定义,则该处理装置根据该第二变量类型删除而删除先前输
入的第二变量类型输入。
6.如权利要求1所述的变量推论系统,其特征在于:该处理装置更用以针对
各该第一基本区块计算对应至未知变量的第一变量数值输出,根据该等第一变
量数值输出针对该第二基本区块计算对应至该未知变量的第二变量数值输入,
于该第二基本区块中包含对应至该未知变量的原始指令时,针对该第二基本区
块计算对应至该未知变量的第二变量数值生成,针对该第二基本区块计算对应
至该未知变量的第二变量数值删除,以及根据该第二变量数值输入、该第二变
量数值生成、该第二变量数值删除,针对该第二基本区块计算对应至该未知变
量的第二变量数值输出;以及该储存装置更用以储存该等第一变量数值输出及
该第二变量数值输出。
7.如权利要求6所述的变量推论系统,其特征在于,该处理装置根据以下方
程计算对应至该未知变量的该第二变量数值输入:
VALUEin(ni)=V_MERGE(VALUEout(nj),VALUEoutl(nk))
其中ni表示该第二基本区块,Pred(ni)表示该等第一基本区块,nj与nk表
示该等第一基本区块中的任二个第一基本区块,V_MERGE(*)表示数值融合运
算。
8.如权利要求6所述的变量推论系统,其特征在于,该原始指令包含二来源
操作数、目的操作数及运算,且该处理装置根据该等来源操作数、该目的操作

\t数及该运算,计算对应至该未知变量的该第二变量数值生成。
9.如权利要求6所述的变量推论系统,其特征在于,该处理装置根据以下方
程计算对应至该未知变量的该第二变量数值输出:
VALUEout(ni)=VALUEgen(ni)∪(VALUEin(ni)-VALUEEkill(ni))
其中ni表示该第二基本区块,∪表示联集运算,且VALUEout(ni)、
VALUEgen(ni)、VALUEin(ni)与VALUEkill(ni)分别表示该第二变量数值输出、
该第二变量数值生成、该第二变量数值输入与该第二变量数值删除。
10.如权利要求9所述的变量推论系统,其特征在于,若该未知变量于该第二
基本区块中被重新定义,则该处理装置根据该第二变量数值删除而删除先前输
入的第二变量数值输入。
11.一种针对软件程序的变量推论方法,包含以下步骤:
由输入装置输入软件程序;
由处理装...

【专利技术属性】
技术研发人员:游逸平吴晞浩郑育镕陈静芳
申请(专利权)人:财团法人资讯工业策进会
类型:发明
国别省市:中国台湾;71

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1