CN1172304A - 调整信息生成装置和由调整装置所组成的程序开发*** - Google Patents
调整信息生成装置和由调整装置所组成的程序开发*** Download PDFInfo
- Publication number
- CN1172304A CN1172304A CN97113204A CN97113204A CN1172304A CN 1172304 A CN1172304 A CN 1172304A CN 97113204 A CN97113204 A CN 97113204A CN 97113204 A CN97113204 A CN 97113204A CN 1172304 A CN1172304 A CN 1172304A
- Authority
- CN
- China
- Prior art keywords
- variable
- information
- source code
- row
- code text
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3628—Software debugging of optimised code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
输入部201接收变量和值或输入想使执行停止的行。原语合成部204获得表示最佳化过程的信息履历。变量操作部207根据输入的变量和资源关系得到变量值。输出部208显示得到的变量值。操作可变量显示部211在各行中,在行单位中显示哪个变量是可参照设定的。最佳化过程显示部212显示对有关变量所作的最佳化处理。
Description
本发明涉及在软件开发中的一种程序开发***,由经程序变换装置生成的执行码验证是否按设计工作,在早期发现其错误的调整装置,和生成对调整装置的调整信息的调整信息生成装置组成。
近年来,称为文字处理器、个人电脑、电子手册的信息设备和称为录象机、电视、冰箱的家电制品的更新换代令人眼花。当然,随着产品变更的频繁,这些信息设备、家电制品的开发周期也非常短。因此,各厂商公司在象这样短的周期中完成新品开发中,日夜拼命地工作。另一方面,这些信息设备、家电制品中内设微机早已是公知的,在短的周期内完成该控制用程序,对于各厂商公司的技术工作者来说成为一个生死悠关的问题。
在这样的形势下,《高级语言指向的开发环境》的配备令人注目。所谓《高级语言指向的开发环境》,称为通过程序编码用高级语言始终如一地达到可作在具体机器上的动作验证的开发环境,在其配备上,成为核心的是在调整装置中用于作以高级语言级的动作验证的调整信息的生成。
所谓调整信息,是表示源码正文状态的程序和执行码状态的程序的对应关系的全部信息总称,其代表内容是表示源码正文的各行和执行代码的地址的对应关系的行地址信息,和源程序内的变量,和表示与执行码利用的寄存器、存储器的对应分配信息。这样在分配信息中明示好对应关系是因,由程序任意定义变量,并相对于仅用必要的个数,寄存器或存储器是软件本身,若明确指示在许多变量内哪个对应于哪个寄存器,则能管理用户本身所写的程序与执行码的对应关系。
下面,参照图1构成说明有关利用象这样的调整信息的调整装置已有结构。
在图1,调整装置包括:程序存储部301、生成码存储部302、最佳化信息存储部303、调整信息存储部304、输入部401、码执行部402、变量操作部403、输出部404、行显示部405。
在程序存储部301中,存储技术人员用高级语言作成的程序。
生成码存储部302存储生成的执行码。
最佳化信息存储部303存储有关在程序存储部301存储的程序的分配信息。
调整信息存储部304由表示程序的行与执行码的地址对应的行地址存储部3041、和表示函数信息的函数信息存储部3042组成。作为函数信息存储部3042的内容。函数的开始地址、函数的自变量和变量之名称和类型、变量被确保在栈中情况下,存储栈的补偿值。
输入部401从用户接受操作员想设定值的变量及想参照值的变量的指定。
码执行部402通过生成码存储部302得到执行码并执行。
变量操作部403通过最佳化信息存储部303及调整信息存储部304得到用输入部401指定的变量分配信息,判断分配给指定变量的资源。其中所谓资源,是为了表现变量分配的执行码中的存储栈或寄存器。这样在判断资源后,在码执行部402询问其资料值。通过询问一旦得到资源值,作为变量值在输出部404显示该值。
行显示部405通过程序存储部301得到程序,显示包括停止行的函数。
下面就上述构成的调整装置,就其动作进行说明。图2A表示程序存储部301的内容;图2B表示生成码存储部302的内容;图2C表示调整信息存储部304的内容;图2D表示最佳化信息存储部303的内容。
当调整装置启动,行显示部405显示函数单位的程序,输入部401显示命令总线,成为等待来自操作者的输入状态。在该输入等待状态,操作者击键,一输入想参照第10行的变量Z值的宗旨命令(参照图3A),则变量操作部403检索行地址存储部3041,检查行line10对应于哪个地址。若参照图2C所示的行地址存储部3041之一例,则了解到行line10对应于地址0×128。象这样,若判定行line10对应于地址0×128,则在码执行部402向地址0×128命令断点设定,同时在行显示部405命名用箭头给行line10作标记的意思。根据这样的箭头表示,向操作者通知到达行line10执行宗旨(参照图3B)。码执行部402使存储在生成代码存储部302中的执行码执行直到设定断点的地址0×128。若一直执行到地址0×128,则变量操作部403检索最佳化信息存储部303,判定在指定了的变量Z中分配哪个资源。在图2D的最佳化信息存储部303的一个例子中,指定的变量Z分配给寄存器D3。变量操作部403通过最佳化信息存储部303得到象这样分配的数据寄存器D3,命令码执行部402读出寄存器D3之值。一旦作出这样的命令,码执行部402读出数据寄存器D3的保持值“10”。当通过码执行部402读出数据寄存器D3的保持值“10”。则变量操作部403命令输出部404,要将读出的保持值“10”作为变量Z的保持值输出。一旦这样命令,输出部404显示变量Z的变量名称以及保持值“10”(参照图3C)。
如上述向用户输入变量名,还利用变量-资源的对应关系判定把输入的变量分配给哪样资源,向码执行部输出其资源值,借此,在机器上执行执行码状态的程序时,可向用户提示各变量值成为怎样的值。
象这样,利用变量和资源对应关系谋求提高开发效率的调整装置之缺点为,调整装置不可能在内部表现中执行的最佳化内容提示给用户,通过内部表现状态最佳化使程序内容作大改写情况下,用户达到理解怎样改写本身记述的程序前需要许多时间。
比如要变更源码正文的某变量值情况下,当通过最佳化把包括其变量的式子改写成中间变量,则若不把握其中间变量和运算式对应,则上述变更操作不可能,若其他变量和运算式的对应不把握切断地变更变量值,则担心通过其变更操作,程序发生误动作。
由于以上原因,技术人员在面对奇怪现象情况下,不能判定那是程序欠缺或是最佳化的影响原因,查明原因花费很多时间。因此弄清程序故障原因难以顺利进行。
于是,近来出现的是如特开平6-274369公报展示的调整方式。即在最佳化前后于程序变换装置中作源码正文象怎样变化的分析,是生成表示该变化过程的信息的方式。具体来说,在具有存在于源码正文同时在最佳化过程中置换成其他变量的变量情况下,分析置换后的变量被分配为怎样的资源,产生表示“置换前变量-资源”的组合的信息。
并且,通过最佳化使源码正文(S=S+2*n)内的运算式(2*n)置换成变量(n1)情况下,分析置换后的变量n1被分配为怎样的资源,若分配的资源R6判明,则产生表示上述运算式内变量(n)作为(R6/Z)表示宗旨的信息。
然而,在如特开平6-274369公报中记载的“置换前变量和资源”或“包括变量和资源的式子形式”中,不能充分地表现由使“变量的置换”、“行的削除”、“行的移动”作复杂组合的最佳化处理而产生的改写原委。
所谓内部表现状态的复杂最佳化,使称之为源码正文削除、源码正文的移动、变量的置换、移动、削除的基本算法组合。这时程序变换装置适宜地产生本身情况好的中间变量,还往往用此实施最佳化。对此在已有技术的调整方式中,经最佳化处理源码正文内的变量被置换成其他变量,即使在其置换后的源码正文被削除或向其他行移动情况下,根据那些全部作最佳化后的最终状态程序,生成显示(置换前变量和资源)或(包括变量和资源的式子)的信息。
在上述变量的置换和行的组合比较简单的情况下,这些信息虽然作为技术人员的参考值吧,但随着置换和行的组合变得更复杂,这些信息如何生成的原委难以把握。并且对其理解使技术人员变得更困难。
幸运的是设想规定调整信息的表示,要表现“复制传输”“常数传输”等知名度高的最佳化方式或新开发的引起注意力高的最佳化方式的原委。但是对于内部表现的最佳化因导入新的最佳化方式的频度也太高,即便规定如知名度高的最佳化方式和引起注意力强的最佳化方式中特例的调整信息的表示,也会担心特意规定的表示很快要过时了。
本发明的第1目的是提供一种程序开发***,具有调整信息生成装置,所述装置即使作使称之为行的削除、移动、变量置换、移动、削除的基本算法组合的复杂最佳化,也会更严密地表现其过程。
本发明的第2目的是提供一种程序开发***,具有调整信息生成装置,所述装置特点是使称之为行的削除、变量置换、移动、削除的基本算法组合构成的新的最佳化方式即便由程序变换装置进行,根据表达由其最佳化方式产生的最佳化过程,也能在最佳化过程的表达中体现扩张性。
本发明的第1及第2目的由具有调整装置的程序开发***完成,所述调整装置包括以下部分:对在翻译处理时变换为内部表达的源文件作最佳化处理期间,逐行判定对源文件中任何码是否作规定编辑内容的第一判定部分;和在对预定内容进行编辑和判定时,通过包括对应其码的源码正文的行的行号码、编辑内容和编辑前后码的成组,生成表示编辑前后变迁的变迁信息的生成部组成的调整信息生成装置,以及接受作为对于翻译后的机器语言程序的动作验证用命令的调整命令的命令接受部分;解释调整命令的内容,若在调整命令内编辑前包括对码的指示,则根据包括同码的所有变迁信息,分析由上述编辑产生的上述编辑前码的变迁原委的分析部分;表示分析后的变迁原委的第1显示部分;在构成机器语言程序的多个执行码中,参照由分析部分分析的变迁原委,检出适合于调整命令的内容,对检出的执行码作动作验证的动作验证部分。
根据该程序开发***,在最佳化过程中即便进行使称为行的削除、移动、变量的置换、移动、削除的基本算法组合的复杂最佳化,判定部分在其过程中也判定是否作规定的编辑内容,如果进行,则生成部分产生变迁信息。利用象这样判定部分监视最佳佳化过程,可通过变迁信息严密地表达内部表达的最佳化过程。从而,即便进行使称之为行的削除、移动、变量置换、移动、削除的基本算法的组合的复杂最佳化,也能更严密地表达其过程。
在翻译了的机器语言程序的调整时,调整装置解释调整命令的内容,若在调整命令内包括对编辑前码的指示,则根据包括同码的所有变迁信息,分析因上述编辑引起的上述编辑前码的变迁原委。由于象这样分析原委,第1显示部分显示分析了的变迁原委,所以比如即使利用最佳化对源码正文作大改写,程序开发者利用最佳化对如何改写的理解没有浪费时间。借此,程序开发者不会对利用最佳化过程改写的部分作翻弄,可一边回想高级语言中记述的源码正文,一边确认其动作检证。
并且权利要求1的第1判定部分的构成包括:作为第1编辑内容,判定是否实施由最佳化处理把源正文中的变量置成别的变量或常数的宗旨的编辑内容的第1判定部;和作为第2编辑内容,判定是否实施由最佳化处理把源码正文中运算式置换成别的变量或常数的宗旨的编辑内容的第2判定部;和作为第3编辑内容,判定是否实施由最佳化处理使源码正文向其他行移动的宗旨的编辑内容的第3判定部;和作为第4编辑内容,判定是否实施由最佳化处理削除源码正文的宗旨的编辑内容的第4判定部。
也可由以下部分组成生成部分:当实施第1编辑内容的编辑,生成包括该源码正文存在的行的行号码、和置换前的变量名、和置换后的变量名或常数名、和表示对那些作置换的宗旨的识别信息的第1变迁信息的第1生成部;和当实施第2编辑内容的编辑,则生成包括该源码正文存在的行的行号码、和置换前的运算式和置换后的变量名或常数、和表示对那些作置换后的宗旨的识别信息的第2变迁信息的第2生成部;和当实施第3编辑内容的编辑,则生成包括其源码正文存在前的行的行号码、和其源码正文移动后的行的行号、和表示作移动的宗旨的识别信息的第3变迁信息的第3生成部;和当实施第4编辑内容的编辑,当由最佳化处理削除源码正文,则生成包括其源码正文的行号、和表示削除其源码正文的宗旨的识别信息的第4变迁信息的第4生成部。
作为第1-第4编辑内容的变量置换、运算式的置换、行的移动、行的削除,即使是“付本传输”“常数传输”等知名度高的最佳化方式,即便是新开发令人重视的最佳化方式,也肯定是可行的编辑内容,基于象这样的编辑内容表达最佳化过程,赋于最佳化过程的表达以扩展性。所以可使最佳化过程的表达具有普遍性。借此随着最佳化方式的再现,省去了改变调整信息记载时间。
并且在调整装置中备有:存储由第1-第4生成部生成的第1-第4变迁信息的变迁信息存储部;存储由源码正文存在的行的行号和变量名-资源名的排列表达哪行的源码正文内的变量分配给哪个硬件资源的分配信息的分配存储部。
分析部分包括:第1解释部,对调整命令内所含的、应读入保持值的变量名的指示进行解释;第1检测部,若把由第1解释部解释的变量作为置换前变量或置换后变量指定的第1变迁信息及第2变迁信息存储在变迁信息存储部分中,则对此进行检测;第2检测部;若把包括在检出的第1变迁及第2变迁信息中所含的置换后变量名的分配信息存储在分配信息存储部分中,则对此作检测。
动作检证部分由以下部分构成:合成部,使检出了的第1变迁信息、第2变迁信息及分配信息与由那些包括的资源名和置换前变量名和置换后变量名组成的分配信息合成;读入部,若包括读入指示,则读入用合成的分配信息内的资源名指示的硬件资源值。
若在第1显示部分作硬件资源读入,则也可备置第1显示部分,显示把置换前变量置换成置换后变量的宗旨信息,和作为同时通过硬件资源读入那些组的值的宗旨。
若根据这构成,当操作者指定置换前变量情况下,不仅仅读出其变量的值,而且显示把置换前变量置换成置换后变量的宗旨的信息,和显示作为同时通过硬件资源读入那些组的值的宗旨,因此对于操作者可着意变量之间的关连。通过着意那这样的变量之间的关连,能提高调整工作的进展。
图1是已有的调整装置结构;
图2A表示程序存储部301的存储内容一例;
图2B表示生成码存储部302的存储内容之一例;
图2C表示调整信息存储部304的存储内容之一例;
图2D表示最佳化信息存储部303存储内容之一例;
图3A表示对输入部401输入操作之一例;
图3B表示行显示部的显示内容;
图3C表示输出部的显示内容;
图4表示程序变换装置4调整装置的内部结构,那些内部结构和程序存储部101、原语(primitive)存储部102、生成码存储部103、调整信息存储部104的输入输出关系。
图5A表示程序存储部101存储内容之一例;
图5B表示生成码存储部103存储内容之一例;
图5C表示调整信息存储部104存储内容之一例;
图5D表示原语存储部102存储内容之一例;
图5E表示由移动行信息削除部108及无用变量信息削除部109,作原语削除后的原语存储部102的存储内容;
图6A表示在原语存储部102中存储的原语的原语名、表现形式、意义内容的对应;
图6B表示最佳化项目和原语的对应关系;
图7表示本实施例的硬件模型;
图8A表示生成码存储部103中存储的执行码串之一例;
图8B表示调整信息存储部104中存储的执行码串之一例;
图9A表示在显示器502上所作输出部208、行显示部209、行信息显示部210、操作可变量显示部211、最佳化过程显示部212、变量自动显示部214的显示状态的显示例;
图9B表示在显示器502上所作行显示部209、行信息显示部210、操作可变量显示部211的显示状态的显示例;
图10表示移动削除变量判定部202处理内容的程序方框;
图11表示断点设定部211处理内容的程序方框;
图12表示操作可变数显示部211处理内容的程序方框;
图13表示码执行部206处理内容的程序方框;
图14A表示连锁显示控制部215处理内容的程序方框;
图14B表示连锁显示控制部215处理内容的程序方框;
图15A-图15C表示由连锁显示控制部215的动作产生的显示器502显示内容演变;
图16表示第2实施例的程序存储部101的存储内容之一例;
图17A表示第2实施例的程序存储部101的存储内容之一例;
图17B表示第2实施例的原语存储部102存储内容之一例;
图17C表示第2实施例的调整信息存储部104的存储内容之一例;
图17D表示第2实施例的生成码存储部103的存储内容之一例;
图18A表示第2实施例的变量操作部207处理内容的程序方框;
图18B表示第2实施例的变量操作部207处理内容的程序方框;
图19A表示码执行部206在硬件环境中执行生成码存储部103的执行码时的各寄存器保持内容之一例;
图19B是根据图18的流程操作部207进行处理时的输出部208的表示例;
图19C表示码执行部206在硬件环境中执行生成码存储部103的执行码时的各寄存器保存内容之一例。
下面参照附图4-19,说明本发明实施例。首先在图4表示本实施例的程序开发***的整体构成。本实施例的程序开发***由内装调整信息生成装置的程序变换装置、调整装置、程序存储部101、原语存储部102、生成码存储部103、以及调整信息存储部104组成,程序变换装置及调整装置彼此共享在程序存储部101、原语存储部102、生成码存储部103以及调整信息存储部104中存储的信息。
程序存储部101具有区分为行单位的存储区域,在该区域存储着技术人员用高级语言作成的源程序。
图5A表示存储源程序的程序存储部101的存储内容,是用C语言记述的程序例。本程序由多个源码正文组成,各源码正文上带有称为“行line1”“行line2”“行line3”···的行号码。在各行,存储着把记号“:”作为分隔符形成的源码正文。在这些正文内,在等号“=”的左边配以变量名部分是对其变量代入值的宗旨的正文(所谓“代入正文”)。
该代入正文存在3种状态。所谓第1状态是在等号的右边存在变量,第2状态是等号的右边存在常数,第3状态是存在由算子及被算子组成的算术表达式。
图5A说明程序存储部101中存储着程序的各行意义内容。
行line1的源码正文“void test(void)”表示函数test开始。并且所谓正文中的“void”表示函数test的引数和返回值不存在。
行line2是说明语句,作为整数型“int”说明仅在函数test中使用的暂时变量“a、b、x、y”。行line3是代入正文,表示在变量b代入100。行line4是唤出函数init的函数唤出语句。行line5,在用“while(***)”的“***”指定的条件语句为逻辑值“1”期间,表示使由“<”“>”封闭的范围、即从line5至line1 2的行重复。在行line 5中,由于在用“***”指定的条件语句中记述着“1”,所以用“<”“>”封闭的范围的重复可无限地进行。
行line 6唤出函数get Datal,用一个语句表示把函数的重复值代入变量X。
行line 7表示把算术表达式“12*6”的结果代入变量a。
行line 8设引数为a,表示唤出函数g 1。
行line 9表示把变量X代入变量Z。
行line 10设引数为Z,表示唤出函数g 2。
行line 11设引数为X,表示唤出函数g 3。
行line 12表示line 5的重复范围终止。
行line 13表示函数test终止。
原语存储部102与程序存储部101一样具有区分为行单位的存储区域。与程序存储部101不同点在于,在程序存储部101中对于存储予先由程序员作的源程序,原语存储部102在其初期状态不作任何写入。但是,原语存储部102的存储区域,一旦后述的原语生成部107启动,则作为称为原语的信息写入端使用。
生成码存储部103被分成多个小区域,具有在各小区域注明地址的存储区域。该存储区域,后述的码生成部110生成码时,作为执行码的写入端使用。
调整信息存储部104由行地址存储部1041和函数信息存储部1042组成。行地址存储部1041具有区分为对应表形式的存储区域。该对应表有地址栏和行栏,分别写入注在生成码存储部103具有的存储区域内小区域上的地址、注在程序存储部101内各行上的行号码。
在函数信息存储部1042上,存储分配给存储在程序存储部101上的源程序的函数、其引数返回值、函数的引数、变量名称和类型。并且当函数备于变换成执行码的情况下,要写入函数开始地址。并且,函数备于确保在栈的情况下,要写入栈的补偿值。
接着说明有关图4的程序变换装置的结构。程序变换装置的组成包括:内部表达变换部105、最佳化部106、原语(primitive)生成部107、移动行信息削除部108、无用变量信息削除部109、码生成部110、行-地址信息生成部111。其中,原语生成部107及行-地址信息生成部111构成调整信息生成装置。
内部表达变换部105通过程序存储部得到程序,由文字串状态变换成内部表达状态。通常虽然用语法分析表现内部表达,但为了在本实施例中说明方便起见,在程序上加修正方式表达。
最佳化部106作改写,要使得能够通过内部表达变换部105,从内部表达中变换的程序产生最佳码。因此,最佳化部包括公共部分形式最佳化部1061、常数传输最佳化部1062、付本传输最佳化部1063、循环不变形式最佳化部1064、无用码最佳化部1065、寄存器分配部1066。
在公共部分式子最佳化部1061,在多个赋值语句的右边,分析是否使用公共运算式。象这样的分析是由于通常由加法、减法、乘法、除法等的运算式,产生包括对算术运算器的控制的运算命令,算术运算器装在中央运算装置内。这些运算命令,因比其他命令所给予中央运算装置的负担要大,所以如果一旦同样的运算式在多个赋值语句内重复存在,则分配给中央运算装置的负担是根据与其赋值语句数成比例地倍增。对此现象感到担心,所以公共部分式子最佳化部1061在多个赋值语句的右边分析是否使用公共运算式。
第一个例子说明程序例,运算式“x*300”包括在4个赋值语句“y=fnc(x*300)”、“Z=(x*300)+5”、“a=b+13*(x*300)”、“a=540/(x*300)”内的情况下,公共部分式子最佳化部1061对此作出分析,把存在于赋值语句右边的那些运算式“x*300”置换成变量“t1”。一旦作这样的置换,上述4个赋值语句成为“y=fnc(t1)”、“z=t1+5”、“a=b+13*t1”、“a=540/t1”。然后当终止这样的置换,则公共部分式子最佳化部1061生成把该变量配置在左边,把上述运算式“x*300”配置在右边的赋值语句“t1=x*300”,***程序内。总合考虑,在原来四个赋值语句中存在的运算式消失了,因代之生成变量,所以对程序整体的上述运算式产生的影响低至1/4。如上所述包括公共运算式的赋值语句的数量越多,则由公共部分式子最佳化部1061产生的最佳化越是能发挥价值。
常数传输最佳化部1062有将常数代入变量的赋值语句,并且分析在赋值语句以后的其他赋值语句中是否使用其变量(是否存在于赋值语句右边)。之所以作这样的分析是由于使常数-变量间的赋值语句尽量减少的缘故。即,虽然常数-变量间的赋值语句存在,但若在其他赋值语句中不使用该变量,则赋值语句的存在无任何意义,这是因为即使立即削除也不会发生任何问题。如果在以后的赋值语句中使用代入的变量情况下,常数传输最佳化部1062分析是否可把其变量存在右边的赋值语句置换成常数。即,尝试积极的置换。如果可能,把存在于赋值语句内右边的变量置换成常数。在图5A中,line 7的源码正文“a=12*b”的变量b在行line 3中使常数100代入。为了削除该行line 3的常数100-变量b之间的赋值语句,常数传输最佳化部1062把行line 7的变量b置换成常数100,把line 7的源码正文以“a=12*b”置换成“a=12*100”。
付本传输最佳化部1063存在仅仅传输如称之为“a=b”“y=x”这样的从变量至变量的单值的赋值语句,并且在赋值语句以后别的赋值语句中,分析是否使用转移前(转送先)变量。之所以这样分析是为了尽可能减少变量-变量间的赋值语句数量。即虽然存在变量-变量间的赋值语句,但若在其他语句中不使用该转移前变量,则上述赋值语句的存在无任意意义,这是因为即便立即削除也不会产生任何问题。如果在以后的赋值语句中使用转移前变量情况下,付本传输最佳化部1063分析是否可能把其变量存在右边的赋值语句置换成转换原变量。即,为尝试积极的置换,使得变量-变量间的赋值语句也能存在。如果能置换,则把赋值语句内右边存在的变量作变量置换。在图5A中,line 9只不过是从变量x向变量z转换而已。
付本传输最佳化部1063为了削除仅意味着象这样转移的赋值语句,探索变量Z的有无使用,检测行line 9的变量z的使用。并且为了削除变量z=变量x之间的赋值语句,付本传输最佳化部1063把line 10的“g2(z)”内的“z”置换成“x”。其结果,行line 10的源码正文成为“g2(x)”。
循环不变式最佳化部1064,在循环中所包括的正文中,分析即使向循环以外移动也不会影响执行结果。通常在程序中位于循环内的部分用说成多少千次、多少百次的次数作重复的情况少,如果在循环内存在冗余的语句,则以多少千次、多少百次为单位徒劳地使其冗余的语句重复。所谓上述“即使向循环外移动也不会影响执行结果”,即使在上述的多少千次、多少百次的重复中,在带入前指定了的变量增减全部是不产生的正文,相当于“冗余正文”。一旦分析象该“冗余正文”则循环不变式最佳化部1064使该“冗余正文”向循环以外移动。在图5A的程序例子中,在行line 7中存在的“a=12*b”虽然在图5B中向作为while语句的重复对象的行line 4移动,但这是由于即便变量9及变量b使while语句重复,也可检出所有增减不发生。
无用码最佳化部1065的公共部分形式最佳化部1061、常数传输最佳化部1062、付本传输最佳化部1063为作置换而削除不要的语句。使用图5A的程序例捕捉上述处理。在图5A的一例中,在行line 7中所包括的变量b根据常数传输最佳化部1062被置换成常数100,包括在行line 10中的变量z通过付本传输最佳化部1063被置成变量x,这些已作了描述。若作这些置换,行line 3,行line 9的赋值语句已判定不需要。鉴于这种情况,无用码最佳化部1065削除line 8、line 9的赋值语句。并且无用码削除部1065其变量被公布,虽然被代入,但在其值在以后的正文中,在全部不被使用情况下将这削除。
寄存器分配部1066将程序中的变量分配给专用目的计算机所具有的寄存器或存储器。当该资源分配时,寄存器分配部1066在程序中,研究各变量的生存区间怎样相重复。给其相重复的变量分配各不同的寄存器。并且,寄存器分配部1066研究各变量的嵌套级仅为多少,或各变量的使用频度仅为多少,根据研究结果,给各变量分配优先权。然后以优先权从高到低分配寄存器。图5A的一例中,因没有使用重复b、z,所以不作分配。给变量a分配寄存器D2,给变量x分配寄存器D3。该结果最佳化了的码如图5C所示。
原语生成部107是所谓调整信息生成装置的构成要素之一,监视对调整信息生成作根据最佳化部106的最佳化,每次与此同步产生原语,写进原语存储部102。所谓原语(primitive)是调整信息的一种,是表示根据最佳经部106产生的最佳化过程的源码正文变化原委的信息。
所谓由最佳化部106产生的最佳化,具有用公共部分式子最佳化部1061从运算式向变量置的置换、用常数传输最佳化部1062从变量向常数的置换、用付本传输最佳化部1063从变量向变量置换、用循环不变式最佳化部1064从循环部的语句移动、用无用码最佳化部1065作无用语句的削除、用寄存器分配部1066对变量的寄存栈的分配,每逢实施最佳化用原语生成部107作原语生成。
有关原语的种类和表现形式的意义要参看图6A。图6A的组成包括:用如怎样的形式表达各种原语,是表示具有怎样意义的对应表,表示所有原语种类的种类栏、表示各种原语表现形式的表现形式栏、表示有象怎样意义的意义栏。
在该对应表中,种类栏作大的区分大致分为“有关变量的原语”和“有关行的原语”。在“有关变量的原语中有“变量的削除”“变量的移动”“变量的置换”“变量的资源”,在“有关行的原语”中有“行的削除”“行的移动”。
表现形式栏的“削除x1”是原语类“变量的削除”之表现形式的一例。其意义内容是表示在其右横的意义栏上。即,表示变量x1(该变量x1在至此说明中使用的图5A的程序例中不存在,这点应注意)被削除的意思。
表现形式栏的“移动x2 To:line 1”是原语类“变量的移动”的表现形式之一例,其意义内容是表示在其右栏的意义栏中。即变量x2(应注意的是,该变量x2也在至此说明中所用的图5A的程序例中不存在)表示向行line 1移动的意思。
表现形式栏的“置换x3→y1”“置换x4→5”是原语类“变量的置换”的表现形式之一例,其意义内容是在其右横的意义栏上。即,表示变量x3被置换成变量y1的意思、变量x4被置换成常数5的意思(应注意,变量x3、x4至此说明中所用的图5A的程序例中不存在)。
有关最佳化项目和生成的原语关系要参照图6B。图6B表示执行象怎样的最佳化项目情况下产生图6A所示的各表达形式的原语。在本图,参照“公共部分形式最佳化”的横排,可了解到,使“运算式的置换”栏和“正文的生成”栏作了“生成”标记。这意味着,公共部分式子最佳化部1061若作最佳化,则原语生成部107生成“运算式的置换”的原语和“正文生成”的原语。即,原语生成部的最佳化部106启动,则开始最佳化部106的动作监视。然后,当公共部分式子最佳化部1061把多个源码正文中的运算式置换成别的变量,则生成“运算式的置换”的原语。并且当公共部分式子最佳化部106产生把该运算式配置于右边,把其他变量配置于左边的源码正文,则原语生成部107生成“正文生成”的原语。
进而参看“常数传输最佳化”的横排,可看到“变量的置换”栏和“行削除”栏被作了“生成”记号。这意味着,当常数传输最佳化部1062实施最佳化,则生成“变量置换”的原语和“行削除”的原语。即原语生成部107的最佳化部106-启动,则开始最佳化部106的动作监视。然后,一旦付本传输最佳化部1063把多个源码正文中的变量置换成其他变量,则生成“变量置换”的原语。并且付本传输最佳化部1063处理后,一旦削除无用的源码正文,则原语生成部107生成“行削除”的原语。
进而参看“付本传输最佳化”的横排,可看到,“变量置换”栏和“行削除”栏作了“生成”标记。这意味着一旦付本传输最佳化部1063实施最佳化,则原语生成部107生成“变量置换”的原语和“行削除”原语。即若原语生成部107的最佳化部106启动,则开始作最佳化部106的动作监视。然后,一旦付本传输最佳化部1063把多个源码正文中的运算式置换成其他变量,则产生“变量置换”原语。并且,付本传输最佳化部1063处理之后,当削除不要的源码正文,则原语生成部107生成“行削除”。而且,无用码削除部1065宣告变量,虽然代入变量,但在其值以后的正文中;当削除全部不用的变量情况下,原语生成部107生成变量削除的原语。
下面使用图5A之程序例说明原语生成部107。在图5A的一例中,原语生成部107通过由常数传输最佳化部1062所作的行line 7的变量b,与常数100的置换动作同步,输出原语“置换b→100”。
并且,与从通过付本传输最佳化部1063所作的行line 10的变量z至变量x的置换动作同步,原语生成部107输出原语“置换z→x”。进而,根据常数传输最佳化部1062及付本传输最佳化部1063置换之后,若由循环不变式削除部1064所作的行line 7的移动,则原语生成部107输出表示行line 7的行的移动的原语“行移动To:line 4”。line3、line 9的行削除一进行,则输出表示line 3、line 9的行削除的原语“行削除”。
并且寄存器分配部1066在line 4中,对变量寄存器D2作出分配,在line 5、line 6。line 8、line 10、line 11中,若可作设定参照,则原语生成部107向line 5、line 6、line 8、line 10、line 11的各行输出表示变量和资源分配关系的原语“资源a:D2”。还有,寄存器分配部1066在line 6、line 8、line 11的各行中,对变量x寄存器D3作出分配,line 8、line 10、line 11行中,一旦变量x可成为设定参照,则原语生成部107向line 8、line 10、line 11行输出表示变量和资源分配关系的原语“资源x:D3”。其结果,原语存储部102的存储内容成图5D那样。
并且虽然是对怎样的单元生成原语,但原语生成产生行单元程序,那对于程序中一语句的一个原语。借此,在行单元中也生成表示变量和资源分配关系的原语。
而且更小的单元,用所谓执行码单元也能生成原语。本实施例的程序变换装置,由于打算向用户提供使用高级语言的开发环境,因此作成在行单元中产生原语的结构。因此,后述的调整装置也以程序行单元实现停止动作,谋求程序变换装置和调整装置之间标准的一致(所谓权利要求的变迁信息称上述原语和行号码组。
移动行信息削除部108在原语生成部107写入原语存储部102内的原语中,削除包括在移动的赋值语句中的原语。通过削除包括在象该移动后的行中的原语,移动行信息削除部108谋求降低存储在原语存储部102中的信息量。例如在图5A的程序例中,概述从line 6至line 4的后面,赋值语句“a=12*b”移动的内容。对于该赋值语句“a=12*b”,在对应于图5D所示的生成码存储部103内的行line 7的栏中,记述着“行移动TO:line 4”“置换b→100”。在对应于该图5D所示的生成码存储部103内的行line 7的栏中,表示移动的原语是“行移动TO:line 4”,所谓这以外的原语,是表示置换的原语“置换b→100”。移动行信息削除部108削除该原语,谋求降低原语量。
无用变量信息削除部109对于在移动行信息削除部108削除后的原语,削除表示无用变量和资源分配关系的原语。其中所谓“无用变量”,是在程序行中不存在,且在表示置换和移动的原语中也不包括的变量。
在图5D的一例中,变量a相当于此。其理由是在程序的哪一行中变量a都不存在。对于变量a、在line 5、line 6、line 10、line 11中,虽然输出表示变量和资源分配关系的原语“资源a:D2”,但因这些无非是表示“无用变量”资源的原语,所以削除表示在line 5、line 6、line 10、line 11输出的变量和资源的分配关系的原语“资源a:D2”。然而如line 8的源码正文,对于变量存在的原语“资源a、D2”不作削除。
在程序中不使用的变量中,此外还存在line 10的变量x,虽然输出表示变量和资源分配关系的原语“资源X:D3”,但有关此的原语不削除。其理由是,变量X输出表示置换的原语“置换Z→X”。从而,line 11中,表示输出的变量和资源和分配关系的原语“资源X:D3”不被削除。
并且无用变量信息削除部109的原语生成部107一旦生成行削除的原语,则检出包括在行削除原语中的源码正文存在的行的行号码和有同样号码的置换原语及资源分配的原语,并削除这些检出的原语。
经过以上移动行信息削除部108的削除,原语存储部102的存储内容从图5D所示的部分向图5E所示的转移。
码生成部110把由最佳化部106改写的内部表达的程序变换成执行码。使变换了的执行码存储在生成码存储部103上。所谓执行码称为组成专用目的计算机的硬件可译码可执行的码。
其中存在的问题虽然是专用目的计算机是怎样的规模,但本实施例的程序变换装置生成对图7所示规模硬件模型的执行码。在图7中,在中央运算处理装置中,准备了用于数据的寄存器D0、D1、D2、D3,用于地址的寄存器A0、A1、A2、A3,和算术运算电路ALU。而且,在中央运算处理装置内,准备了表示执行中地址的程序计数器PC、表示当前栈的打头位置的栈指示字SP。执行码和栈被配置于存储器上。
图8A表示对象这样硬件模型,程序变换装置生成的码。在图8A中生成的码,在唤出函数时,作为引数和返回值的存储端,当作寄存器使用,在函数中使用的寄存器、在函数开始时保存,函数终止时复原。
在图8A中,各地址执行码的意义如下:
0×100前的test:表示标记;
0×100的执行码表示寄存器的保存;
0×104的执行码表示子程序-init的唤出;
0×108的执行码表示立即将“12”代入寄存器D2;
0×l0C的执行码表示100乘D2、将结果代入D2;
0×10C和0×100之间的loop:表示标记;
0×110的执行码表示子程序-get Datal的唤出;
0×114的执行码通过将寄存器D0的保持值代入寄存器D3,作函数返回值的提交;
0×118的执行码通过把寄存器D2的保持值代入寄存器D0,作引数的提交;
0×11C的执行码表示子程序-g1的唤出;
0×120的执行码通过把寄存器D3的保持值代入,向寄存器D0提交引数;
0×124的执行码表示子程序-g2的唤出;
0×128的执行码通过代入寄存器D3的保持值,向寄存器D0提交引数;
0×12C的执行码表示子程序-g3的唤出;
0×130的执行码表示向标记LOOP跳跃;
0×134的执行码表示寄存器的复原;
0×134的执行码表示从子程序test向引入的函数返回。
在行-地址信息生成部111通过码生成部110,若内部表达状态的程序被变换成执行码,则表示程序的行和生成的执行码地址的关系的行地址信息写入行址存储器1041。并且,向函数信息存储部1042输出有关函数和地址关系、函数变量的信息。其结果,所作成的调整信息存储部104的内容展示于图8B中。
下面参照图4说明有关本实施例的调整装置的结构。调整装置的组成包括:输入部201,移动削除变量判定部202,断点设定203,原语合成部204,合成启动判断部205,码执行部206,变量操作部207,输出部208,行显示部209,行信息显示部210,可操作变量显示部211,最佳化过程显示部212,变量顺序切换部213,变量自动显示部214,连锁显示控制部215。
输入部201在显示器502上显示命令总线,解释其中用户键入的“想参照的变量”或“想设定的变量和期望值”。以所谓“line**的变量*的值参照”“line**的变量*的值设定为**”的形式作根据对命令总线的输入部201的解释。图9A是显示器502的显示例,在本图中,在表示参照符号y21的位置显示命令总线,等待用户输入。
移动削除变量判定部202检查是否存在由于最佳化的影响妨碍对由输入部201输入的变量的设定和参照的情况。
一旦上述处理变得具体,则其算法设定如图10的程序方框图实现。在图10的程序方框图中,步骤S1使调查对象行初始化,其中调查对象行被指定为函数的开始行(这里所谓函数,是包括使现在实行停止的行的函数。)。步骤S2中,从程序存储部101得到程序,检查与用户为设定或参照在输入部201指定的变量相同的变量在调查对象行中是否存在,若不存在,则步骤S3为NO,转移到步骤S11。在步骤S11,判定调查对象行是否达到函数内的最后行,若不是那样,则移至步骤S12。步骤12是所谓增量步骤,使调查对象行进入下一个程序行,再次转移到S2。
步骤S2、S3、S11、S12重复,直至步骤S3判定为yes,即,在到达与用户在输入部201中指定的变量相同变量存在的行期间,反复进行。步骤S3若判定yes,则经步骤S4的原语检查,根据该原语内容,有选择地使S6、S8、S10启动。步骤S6-S10的选择性启动是根据直至S5、S7、S9的判定步骤的任一个为yes来执行的。
所谓步骤S4的原语检查是从原语存储部102得到原语,判定通过最佳化调整对象行是否没有被移动、或是否设有被削除、或由最佳化存在于行的变量是否没有被削除。
如判定是移动行,则步骤S5为yes,由表示行移动的原语得到从哪行移至哪行,对输出部208作指示,向显示器502输出所谓“包括操作的变量的XXX移动到YYY。存在没有按程序设定参照的情况(在此,XXX表示调查对象行,YYY表示移动端行)”的内容。
虽然步骤S5为NO,但若步骤S7为yes,则在步骤S8中,对输出部208作指示,向显示器502输出所谓“削除包括操作的变量的XXX行(这里,XXX表示调查对象)。存在没有按程序设定、参照的情况”的内容。
虽然步骤S7为NO,但若步骤S9为yes,则向输出部208作指示,向显示器502输出所谓“在XXX行中削除操作的变量。存在没有按程序设定、参照的情况(这里,XXX表示调查对象)”的内容。
根据步骤S6、S8、S10有选择地启动,判断用户要操作的变量是否包括在移动行或削除行中,若包括时,则把存在没有按程序记述的值设定、参照情况和移动、削除行通知给用户。
断点设定部203从用户那里接受行单元的断点指定,把指定了的断点变换成执行码上的地址,在变了的地址上设定断点。象这样,使断点设定在行上时,担心设定了的行是移动行。鉴于此,断点设定部203通过从原语存储部102得到信息,判定指定了的行是否为移动行。其中若指定行为移动行,则对输出部208作指示,表示执行顺序没有按程序进行。用图11的程序方框图说明断点设定部203的算法。
在图11的程序方框中,在步骤S21,于指定了的行上设定断点。其中对断点设定部203要规定做到使用户在行line 7的赋值语句上设定断点。
在步骤21,从原语存储部102中取出用户指定了的行的原语。其中在用户指定了的line 7上,附加出现行移动的原语,通过断点设定部203取出上述原语。在步骤S22,判定取出的原语是否与行的移动有关。这里line 7向line 4的后面移动,所以在步骤23,断点设定部203通过表示行的移动的原语,得到移动端行的号码YYY,显示成“指定的行移动。在第YYY行执行后停止”。由于行号为YYY=4,所以用户上显示成“指定了的line 7向line 4移动。在line 4执行后停止”。
显示之后,在步骤S24,从行地址存储部1041得到对应于指定了的程序行的执行码地址。该情况下,由调整信息存储部104得到line 4的地址0×104,在步骤S25向得到的地址写进使发生***的命令。按以上顺序,在地址0×104上设定断点。
原语合成部204检查是否一边搜寻表示存储在原语存储部102中的最佳化过程的原语,一边把变量分配给哪个资源,行最终移动至哪行。若应检查的变量由最佳化过程变成从程序上消失的变量,则可得到其变量最终置换成哪个变量,分配给哪个资源。
如认为应调查的变量是变量Z的情况。若变量Z参照表示line 10的置换的原语,则判明被置成变量X。并一旦参照表示资源分配的原语,则变量X的资源弄清是寄存器D3。若合并这些原语,则可表达“变量Z”=“变量X”=“寄存器D3”的关系,通过把这些合成,得到“变量Z”=“寄存器D3”(变量Z存在于D3)的新的信息。将一旦合成得到的信息以“合成Z:D3”的形式写入原语存储部102,要能使第2次以后的合成省略。
合成启动判断部205判断是否在调整装置启动时使原语合成,是否使在变量参照时进行。如果判断为在调整装置启动时使合成的情况下,使原语合成部204启动,在输入有关来自用户的变量参照的指示之前,使全部行的原语合成。如果判定为变量参照时进行情况下,在输入有关来自用户变量的参照的指示时间,使其行的原语合成。作为调整装置启动时的判断基准,存在原语的信息量、程序行的行数、执行码的码尺寸大小。在本实施例中,在程序行的行数为大于一定量的情况下,将调整装置作为启动时合成原语的部分。在图5A的一例中,因程序的行为10行以上,所以根据用户的操作,判断为合成原语。
变量操作部207一旦由用户对变量实施操作,则根据其操作的控制被指示给码执行部206。所谓上述的“对根据用户的变量的操作”,是输入部201接受的内容。并且其操作的种类中,有“变量参照指示”、“参照设定指示”。
输入部z01一旦接受变量参照指示,则参照包括在原语存储器102中存储的原语中的变量和资源的对应关系,向码执行部206作出指示,要取出其资源值。若象这样指示,码执行部206取出资源值,则向输出部208指示,使变量名和值作对应显示。
并且,变量操作部207接受对变量的设定指示,若其输入部201接受变量名和期望值,则参照包括在存储于原语存储部102中的原语的变量和资源的对应,对码执行部206作指示,要在其资源上设定值。在以上处理中,作为置换由用户指定的变量的变量的情况下,在输出部208输出置换了的变量之后变化的宗旨。
例如对图5A的程序若指示操作者参照变量Z的宗旨,则变量操作部207根据在原语存储部102存储的原语,了解分配变量Z的资源D3,对于码执行部206作指示,使取出表示变量Z值的寄存器值。当取出寄存器D3之值“12”,则变量操作部207对输出部208,显示为“变量Z的值是12”。与此同时,变量操作部207根据参照有关的原语存储部102中存储的置换的原语,了解到变量Z置换成变量X,在输出部208上显示成“因为变量X置换成变量Z,所以变量X值也变化”。
码执行部206由模拟器(シミエレ-タ)、通路零位仿真器(ィンサ-キットエミエレ-タ)、监视器(モニタ)中任一个构成,利用模拟器、通路零位仿真器、和监视器的特有功能,再现专用目的计算机的硬件环境,在该硬件环境中使在生成码存储部103上存储的多个执行码依次执行,直至断点设定部203设定了的断点。一达到断点,则根据变量操作部207的指示作对该硬件环境的资源的存取。
虽然当然是由通路零位仿真器、模拟器、监视器形成的硬件环境彼此不同(对于由通路零位仿真器、监视器与形成的硬件环境实际机器的大体相同或接近,由模拟器形成的硬件环境只不过是模拟地形成在主机上),能再现的所有图7所示的硬件模型具有的数据用寄存器D0、D1、D2、D3,地址用寄存器A0、A1、A2、A3,程序计数器PC、栈指示字SP的功能之点是公共的。
图13的程序方框详细地表达了码执行部206的处理。在本图的步骤S71中,断点设定部203等待根据用户的执行码的执行,如果不作,则在步骤S72中,把程序计数器设定为在生成码存储部103中存储的打头地址“0×100”。设定之后,在步骤S73,从生成码存储部103取出由程序计数器指示的地址的执行码,在步骤S74中,判定在取出的执行码中是否附加使***发生的命令,这里所谓“使***发生的命令”,是断点设定部203写入断点设定端地址的命令。一旦完成把该命令写进地址“0×010c”,则在取出“0×100”执行码状态下,步骤S74为NO,在步骤S75中,执行由程序计数器指示的地址“0×100”的执行码。借助该执行,使地址“O×100”的执行码“Save”解码,随之,使图7所示的码件模型的数据寄存器、地址寄存器的保持值退入栈。在退避后的步骤S76,使程序计数器增量至“O×104”,转移至步骤S73。
转移后,在步骤S73,从生成码存储部103取出由程序计数器指示的地址“0×104”之执行码,在步骤S74中取出的执行码中虽然判定是否使***发生的命令被附加,但因并非附加,所以步骤74为NO,在步骤S75中,使在程序计数器指示的地址“0×104”之执行码执行。这里经执行,使地址“0×104”的执行码“Call-init”解码,据此,在程序计数器上存储“-init”的打头地址后,在步骤S76中,使程序计数器增量为“0×108”,移至步骤73(原来必须转移至码执行部206的处理“-init”,但为方便说明,使进入图8A的下一个地址“0×108”)。
转移后,在步骤S74,从生成码存储部109取出程序计数器指示的地址“0×108的执行码,在步骤S74中,判定在取出的执行码上是否附加使***发生的命令,但因没有,所以步骤S74为NO,在步骤S75中,使由程序计数器指示的地址“0×108”的执行码执行,这里通过所述的执行,使地址“0×108”的执行码“mov1Z、D2”译码。据此,在把即值“1Z”存储在数据寄存器D2中之后,在步骤S76,使程序计数器增量为“0×106”,进入步骤S73。
转移后,在步骤S74,从生成码存储部103取出由程序计数器指示的地址“0×10c”的执行码,在步骤S74中,判定在取出的执行码上是否附加使***发生的命令,由于在地址“0×10c”的执行码上附加了该***命令,所以步骤S74为yes,在步骤S77,使由程序计数器指示的地址“0×10c”的执行码执行。这里根据所谓执行,使地址“0×10c”的执行码“mul 100、D2”译码,据此,在算术运算电路中使数据寄存器D2的保持值和即值“100”相乘之后,把其结果“1200”存储在数据寄存器D2中,进行步骤S78。
在步骤S78,根据在地址“0×10c”中记述的***命令,产生***信号,码执行部206使控制转换给输入部201。象这样一旦把控制转换至输入部201,则处于表示前面所述的命令总线的输入接受状态。这里,若码执行部206从用户接受变量参照的指示,则变量操作部207参照原语存储部102,判定分配给其变量的资源,对码执行部206指示其资源保持值的取出。
码执行部206在步骤S79、S80中,等资源值取出指示,若作出取出指示,则步骤S79为yes,转至步骤S81,码执行部206使其资源名的寄存器或存储器作存取,将其值向变量操作部207输出。
显示在前面所述的命令总线的输入接受状态中,一旦接受变量设定指示,那么变量操作部207参照原语存储部102,判定分配给其变量的资源,对码执行部206指示对其资源的期望置的设定。
若作资源值的设定,则步骤80为yes,进至步骤S81,码执行部206把期望值写入其资源名的寄存器或存储器。
输出部208根据来自输入部201、移动削除变量判定部202、断点设定部203、原语合成部204的指示,在输出窗口中显示对输入部201操作者所作有关操作的解答。
行显示部209一览显示作成的多个源文件,等待由操作者所作在源文件中应作功作验证的子程序的指定。若操作者作了指定,则在接受的子程序中所包括的多个源码正文内摘录一部分,显示在规定的窗口内。显示之后,在包括于机器语言程序中的多个执行码内,把对应显示在窗口中的部分的内容配置于在窗口显示的源码正文的横方向进行显示。再把表示现在执行停止位置(是断点设定部203设定的断点设定行。)的行上用箭头表示。
行信息显示部210表示这样的行信息显示窗口,把对于在行显示窗口显示的各行表示作怎样的最佳化的原语作成对用户的可读形式(这里所谓“对读者的可读形式”是用户能读的意思)。行信息显示窗口有横写的记述栏,各记述栏的行显示窗口中包括的程序和行位置一致,通过象这样行显示窗口和行位置一致,用户可知道在行显示部209内显示的哪行中作了最佳化。图9A的一例表示对行line 7的行移动,对行line 3及行line 9的行削除。经象这样削除,用户可考察到自己记述的程序哪个附近是冗余的。
操作可能变量显示部211表示在行显示窗口内各行中注哪个变量是可设定参照标记的操作可能变量操作窗口,操作可能变量操作窗口使在行显示窗口中所包括的程序和行位置一致,各列分配用于程序内的变量名。在操作可能变量显示部211,在作为可设定参照的变量的任一行中,可知道其中操作可变量是哪个。如果在其行中出现调整信息或原语情况下,参照或设定作为可能的变量,标以“D”。
操作可能变量显示部211作行显示部209的变更控制,使保持值参照与可能的变量,保持值的设定和可能的的变量变成一目了然。
图12的流程方框是使操作可能变量显示部211的算法更详细化的图。在图12中,步骤S41是使变量的调查范围缩小的意思的初始化步骤,通过函数信息存储部1042对函数中使用的变量缩小调查范围。步骤S42中作调查对象行的初始化,其中把在行显示部209中显示的程序显示开始行作为调查对象。在步骤S43,使用原语合成部204研究在调查对象行中在函数内使用的各变量的设定参照是否可能。这里所谓“设定可能”是通过输入部101对应指定的变量的资源存在的情况下。所谓“参照可能”是对于由输入部201指定的变量的资源存在的情况,或者是变量被置换成其他变量或常数的情况。
在步骤S44中,当变量为设定可能或参照可能情况下,在步骤45中,对于设定参照可能的变量,在相当于调查对象行的行上作标记。
步骤S46工作是判定是否对于所有变量作一个调查对象行内调查的宗旨的终了判定,并且,若变量剩余,则在步骤S49中选择调查对象行内下一个变量,使步骤转移至S43。
若对全部变量作调查,则转至步骤S47。步骤S47的工作是判定是否对在行显示部209显示的程序全行调查结束的宗旨终了的判定,若不是那样,则在步骤S48中使调查对象行进入下一行、转至步骤S43。
显示顺序切换部213,作根据用户要求的程序行显示切换。这里,所谓“用户要求”有二种,即“用程序顺序号显示”的宗旨要求和“用由最佳化替换行的结果的顺序显示”的宗旨要求。如果有“用由最佳化替换行的结果顺序显示”要求时,显示顺序切换部213从原语存储部102,得到表示哪行向哪行后面移动的行移动原语,按原语在向行移动之后作行显示。而且同样,还替换行信息显示部210及操作可能变量显示部211的行显示顺序。
变量自动显示部214使用原语合成部和变量操作部显示执行停止的行的变量值和最佳化过程。
连锁显示控制部215实施为使用户马上理解断点周围的执行码及程序的对应关系的显示控制。与此同时,在变更显示开始行时,使程序和执行码两者开始位置一起变更。并且,作为显示哪一行的指定方法,规定使用称为光标移动键的键进行变更。在光标移动键中,用光标上移动键和光标下移动键。
如若用户指定要使程序和执行码两者连锁显示,则开始图14A及图14职的程序方框的处理。在步骤S51中分成2个显示区域,设置显示由程序存储部101得到的程序的程序显示框和显示由生成码存储部103得到的执行码的执行码显示框。
在步骤S52,通过显示开始行=(执行停止行-3)的式子得到显示开始位置,设定行显示部209的程序显示开始行。若规定现在停止位置在图9A的显示例中为line 10,则设连锁显示的程序显示的显示开始位置为line7。
在步骤S53中,从行地址存储部1041得到对应于设定的程序显示开始行的执行码的地址,设定成行显示部209执行码显示的显示开始地址。从调整信息存储部104的行和地址信息得到line 7的地址值,得知地址为0×108。然后对行显示部209作指示,通过line 7显示程序,对执行码通过0×108开始作显示。
在步骤S54中,在行显示部209的程序显示中,作为显示初期倒置位置,使成为执行停止位置的行倒置。使执行停止位置line 10倒置。
在步骤S55中,从行地址存储部1041得到对应设定了的程序显示倒置行的执行码地址,使行显示部209的其地址执行码倒置。通过调整信息存储部104,得到line 10的地址0×120,对行显示部209作出指定,要倒置显示0×120的位置。图15A是作上述倒置显示后的显示例。
在步骤S56中,在行显示部209中把表示停止位置的箭头设定成现在停止的行。由于现在停止位置是行line 10,所以在line 10中显示表示停止位置的箭头。
对于连锁显示控制部215,用图14B的程序方框图说明光标上移键、光标下移键被按下时的算法。
步骤S57及S58分别是用于光标上移键、光标下移键按下检测的步骤。
若检测光标下移键按下,则在步骤S59中,把行显示部209的程序显示倒置变更为一行之下,相反,若检测光标上移键的按下,则在步骤S62中,把行显示部209的程序显示倒置变更为一行之上。
S60及S63是这样的步骤,用于检测倒置行在行显示部209的上方是否找到,或倒置行在行显示部209的下方是否找到。其中图15A的显示例中,行显示部209因被分成程序框和执行码框,所以行显示部209的程序框被缩成从行line 8至line 13的范围。如此被压缩,由于倒置行在上下方向变得容易溢出,所以利用步骤S60及S63检测其溢出的有无。
步骤S61及S64是在步骤S60及S63中检测溢出时的处理,在步骤S60中,若检测到上下方向溢出,则在步骤S61中使行显示部209的程序显示开始行增加一行。在图15A的一例中通过从行line 8至行line13的范围,在下方倒置行溢出情况下,增加程序显示开始行,使成为行line 9,借此,从line 95行范围,即在行显示部209上显示从行line9至行line 14。以此,程序显示涡旋向下。
在步骤S63中当检出上方溢出,则在步骤S64中,使行显示部209的程序显示的开始行减一行。当通过从line 8至line 13的范围在上方倒置行溢出情况下,使程序的显示开始行减少,成为行line 7,从该开始行5行的范围,即在行显示部209上显示从行line 7至line 12。使程序显示向下涡旋。
其中成问题的是新的倒置行或开始行已经移动或被削除,不存在于行地址存储部1041的情况。连锁显示控制部215要考虑象这样不存在于行地址存储部1041的情况。
即在步骤S65,判定在调整信息存储部104的行地址存储部1041中是否存储相当于开始行的地址,如果存储着,则通过行地址存储部1041得到对应于设定了的程序显示开始的执行码地址,设定为行显示部209的执行码显示的显示开始地址。
在步骤S66,判定是否在调整信息存储部104的行地址存储部1041中存储着相当于开始行或倒置行的地址,若存储着,则通过行地址存储部1041得到对应于设定的程序显示的倒置行的执行码的地址,在行显示部209的执行码显示中倒置。
在步骤S67,在行显示部209把表示执行停止位置的箭头设定在现在停止的位置。
而且考虑到操作者想查看程序显示的上部,决定按下光标上移键。在步骤S58检测该按下、在步骤S62,连锁显示控制部215把行显示部209的程序显示的倒置从line 10变至line 9。
步骤S63中在确认无显示溢出之后,在步骤S65虽然从调整信息存储部104的行地址存储部1041要得到相当于line 9的地址,但因不存在,所以不作行显示部209的执行码显示部209的执行码显示的倒置。
再有考虑到用户想查看程序显示的上部,按下光标上移键。在步骤S58若检测该按下,则连锁显示控制部215在步骤S62中把行显示部209的程序显示倒置从line 9变至line 8。在步骤S63确认倒置行纳入程序显示内之后,在步骤S65确认相当于line 8的地址存在于作为0×118的行地址存储部1041中。确认之后,把执行码的显示的倒置从0×120的位置变至0×118。该结果见图15B。
并且,考虑到用户想查看程序显示的上部,按下光标上移键。由于行显示的开始行和倒置位置已经相同,所以在步骤S58中一旦作该按下检测,则在步骤62倒置行增加一行。其后,在步骤S63虽然检测倒置行是否从程序显示溢出,但由于倒置行line 7使开始行line 8减少,所以被判定程序显示溢出。象这样若判定溢出,则使显示部209的程序的显示开始行变更为line7。
变更之后,在步骤S65中,在调整信息存储部104的行地址存储部1041中,确认存在相当于line 7的址0×108,将行显示部209的执行码的显示开始地址变更为0×108。然后,把行显示部209的程序显示倒置从line8变至line7,执行码的倒置从0×118位置变至0×108。其结果,调整装置的显示见图15C。
根据如上所述的本实施例,程序变换装置虽然对高级语言状态的程序作了强有力的最佳化,可是由于将其履历作为原语,源码正文用记述的行单元表达,所以可以很分明地作高级语言状态的源码正文和各执行码的对应。调整装置虽然通过用户接受行指定及变量指定,但参照在原语存储部102上的原语,其行及变量象哪个被最佳化向用户反馈,程序可以一边着意最佳化过程,一边以高级语言级作动作检证。
并且在本实施例的程序变换装置的原语生成部107中,使用称为变量置换、变量削除、变量资源、行削除、行移动的通用性高级信息表达最佳化过程,所以在最佳化部106即使导入新的最佳化项目,通过使予先准备的原语组合也能表达最佳化过程。
并且,在本实施例的调整装置的变量操作部207中,在变量被置换成其他变量情况下,虽然对置换的结果变量设定变量值,但在输出部208对用户也可能限于提出警告:“因作置换不能设定”。
并且,在变量操作部207,操作对象即使是置换端(置换先)的变量、置换源(置换元)的变量的任一个,也可能发出警告。该情况下变量x被置换成变量y,用户要对变量y操作的情况下,通过在输出部208对用户发出“变量y通过变量x被参照。变量x之值也改变”,用户照样不理解,可防止使置换源的变量值改变。
并且,对于置换的结果变量在用户要设定变量值时,变量操作部207对输出部208,通过发出警告:“变量通过其他变量被参照”,可防止用户出差错同时也使其他变量改变。
并且,在断点设定部203中,作为削除设定的行的行的情况下,对输出部208也可显示成“因削除,断点未能设定”。
并且,在操作可能变量显示部211中,虽然作为可操作做标记也显示置换了的变量,但也可能确保在栈中或仅使资源分配的变量作标记。
在移动削除变量判定部202,虽然把移动、削除行中包括的变量和削除的变量作为调查对象,但是也把置换了的变量作为对象,借此,要对在其他行中置换了的变量操作情况下,能向用户发出警告。
在行显示部209,用最佳化了的行的顺序号显示情况下,虽然根据移动的结果显示控制行,但没有显示削除了的行,借此,能表达最佳化结果。并且有关变量当置换了的变量存在的情况下,通过用置换了的结果变量显示程序,可清楚展示变量被置换成什么。
第2实施例
第2实施例展示了一种结构,即使在运算式被置换成暂时变量的情况下,也能容易地终止变量操作。图16是第2实施例的程序变换装置作成码生成对象的程序例子。
付本传输最佳化部1063在图16的行line 5中从变量t1向变量x作代入,分析变量x的行line 6中与即值“0”作比较的程序内容。分析该内容的付本传输最佳化部1063若把行line 5的变量x置换成变量t1,则考虑从行line 2的变量t1向变量x的代入可削除。然后,可把行line 5的赋值语句“if(x)”的程序变量x置换成暂时变量t1,形成line 5的赋语句“if(t1)”。
当付本传输最佳化部1063的置换一结束,则公共部分形成最佳化部1061分析行line 5-行line 9,行line 7“y=x+3”和行line 9“z=x+3”其右边都为“x+3”,在该不变的状态下,了解到使称为“x+3”的计算重复2次。为了避开象这样同样内容计算的冗余重复,生成把右边“x+3”代入暂时变量t2的赋值语句“t2=x+3”,同时,把line 9的右边“x+3”置换成暂时变量t2。借此,相同内容计算2次重复用新生成的“t2=x+3”的1次可解决,置换后启动无用码最佳化部1065,无用码最佳化部1065削除通过置换变得冗余的行line 5内的赋值语句“x=t1”。
原语存储部102存储由付本传输最佳化部1063所作的最佳化信息。图17B是原语存储部102之内容。参照图17B,了解到行line 6的变量x被置换成变量t1,并且,行line 7、行line 9的运算式“x+3”被置换成变量t2。在图17D中表示对于图17A码生成部110生成的执行码。图17C中表示对于图17A行-地址信息生成部111生成的行-地址间对应关系。
第2实施例的变量操作部207根据图18A、18B所示的方框流程进行变量操作。参照图18A的流程方框说明第2实施例的变量操作部207的处理。在图18A的流程方框步骤S71中,变量操作部207等待来自输入部201的变量名及操作类别的指示。
要参照行line 6的变量x之值,用户作出指定,对于输入部201的命令总线参照行line 7变量x之值。象这样为进行向输入部201的输入,则在步骤S72,变量操作部207参照存储在原语存储部102中的原语,对输入部201判定用户指定的变量被置换成什么。然后在步骤S73中,判定变量是否被置换成暂时变量,在步骤S81判定包括指定的变量x的运算式a(x)是否被置换成暂时变量。这时用户对输入部201指定的行line 7中,变量x存在于运算式“x+3”内,“x+3”因置换成暂时变量“t2”,所以步骤S73为NO,步骤S81为yes,向步骤S82转换。在步骤S82中,变量操作部207从存储在原语存储部102中的原语中得到运算式置换单位(置换先)的暂时变量名t2。在行line 7中,运算式“x+3”因被置换成作为暂时变量的暂时变量t2,所以得到暂时变量t2。
接着在步骤S83,变量操作部207判定是否参照用户对输入部201指定了的操作种类。该情况下由于参照,所以在步骤S84中,从原语存储部102得到分配给得到的暂时变量的资源。
图17B中表示的行line 7的原语暂时变量t2一旦被参照,则可了解到暂时变量t2被分配给数据寄存器D1。象这样,一旦弄清是数据寄存器D1,则在码执行部206中查询资源保持值。其中码执行部206在现实的硬件环境中,各寄存器的值是图19A所示的情况下,显然数据寄存器D1的保持值为“15”。这样,一旦获得调整装置的保持值,则,在步骤S86中,把原语中所含的运算式a(x)的运算结果作为其资源的保持值,在运算式中火车作为被算子使用的变量x之值倒过来算。暂时变量t2值为“15”,置换源(置き换え元)的运算式为“x+3”。并且,在原语存储部102中存储着的原语中,由于“x+3=t2”关系成立,所以“x”之值为“12”。
象这样获得倒算结果,如图19B所示,使变量x之值显示在输出部208中。
接着查看该值,用户决定对输入部201实施操作,要把变量x设定成“20”。这种情况与前次的动作一样,步骤S73为NO,步骤S81为yes,经过步骤S82虽然转移到步骤S83,但这次由于设定操作种类,所以为NO,转至步骤S88。在步骤S88,变量操作部207从输入部201接受要求值“20”,将此作为变量x之值代入运算式a(x),算出运算式a(x)的运算结果。由于“x+3=t2”的关系成立,所以运算式9(x)的运算结果为“23”,暂时变量t2值为“23”。这样一旦算出暂时变量值,则在步骤S90中,从原语存储部102得到分配给运算式a(x)的置换端(置换先)暂时变量的资源数据寄存器D1,命令要把运算式a(x)的运算结果设定在资源数据寄存器D1之中。这样,数据寄存器D1之值如图21C所示,被更新成“23”。
以上虽然是置换成运算式情况下的处理,但也说明仅仅被置换成暂时变量情况下的处理。该情况在步骤S73中是yes,变量操作部207从存储在原语存储部102中存储的原语得到暂时变量名。然后,通过原语存储部102得到分配给在步骤S74中获得的暂时变量的资源。
若参照操作种类,则在码执行部206中查询获得的资源保持值,使其资源值显示在输出部208中,若设定操作种类,则从输入部201接受要求值,命令在码执行部206上将其值设定成上述资源。
如上所述,根据本发明,利用程序变换装置的最佳化功能,即便是把包括程序变量的形式置换成暂时变量情况下,用户也能参照存在于自己记述的程序内的变量值,并且,能作对其变量值的设定。
此外在本实施例中,虽然展示了对包括在置换成暂时变量的程序式子中的变量作参照之例子,但对于输入部输入的值,变量操作部207计算暂时变量之值,通过变量操作部设定,也可设对程序变量的值。
并且,在本实施例,在调整装置中,通过原语存储部102得到表示程序变量和暂时变量关系的计算式,得到暂时变量分配给哪个资源的信息,首先通过程序变量检索包括在式子中的暂时变量名,接着虽然通过暂时变量名检索资源名,但予先在程序变换装置中,检索原语存储部102,得到程序变量和资源名的关系,也可是把表示变量和资源名关系的式子存储在原语存储部102中。这时,在调整装置中,仅参照存储在原语存储部102上的式子,就能获得程序变量位于哪个资源的信息。
Claims (24)
1一种程序开发***,包括:监视由多个源码正文组成的源文件的翻译处理,生成调整用信息的调整信息生成装置,和进行由翻译处理得到的机器语言程序的动作检证的调整装置;其特征是,
调整信息生成装置包括以下部分:
第1判定部分,在对翻译处理时变换成内部表达的源文件进行最佳化处理期间,在每行判定对源文件中哪一个码作了规定的编辑内容;
生成部分,当判定为进行了规定的编辑内容情况下,通过包括对应于其码的源码正文的行的行号码、和编辑内容及编辑前后码的编组,生成表示编辑前后变迁的变迁信息;
调整装置包括以下部分:
命令接受部分,接受作为对翻译后机器语言程序的动作验证用命令的调整命令;
分析部分,分析调整命令的内容,若在调整命令内编辑前包括对码的指示,则根据包括同码的全部变迁信息,分析根据所述编辑的所述编辑前码的变迁原委;
第1显示部分,显示分析了的变迁原委;
动作验证部分,在构成机器语言程序的多个执行码内,参照由分析部分析了的变迁原委,检测相当于调整命令的内容,对检出了的执行码进行动作验证。
2如权利要求1的程序开发***,其特征是第1判定部分包括以下部分:
第1判定部,作为第1编辑内容,判定是否进行利用最佳化处理,将源码正文中的变量置换成其他变量或常数的宗旨的编辑内容;
第2判定部,作为第2编辑内容,判定是否进行编辑内容,所述编辑内容的宗旨是利用最佳化处理把源码正文中的运算式置换成其他变量或常数;
第3判定部,作为第3编辑内容,判定是否进行利用最佳化处理,把源码正文向其他行移动的宗旨的编辑内容;
第4判定部,作为第4编辑内容,判定是否进行利用最佳化处理,削除源码正文的宗旨的编辑内容;
生成部分包括以下部分:
第1生成部,若进行第1编辑内容的编辑,则产生包括以下内容的第1变迁信息,其中有该源码正文存在的行的行号码,和置换前的变量名,和置换后的变量名或常数名,和表示对那些作置换的宗旨的识别信息;
第2生成部,若进行第2编辑内容的编辑,则产生包括以下内容的第2变迁信息,其中有该源码正文存在的行的行号码,和置换前的运算式和置换后的变量名或常数,和表示对那些作置换的宗旨的识别信息;
第3生成部,若进行第3编辑内容的编辑,则生成包括以下内容的第3变迁信息,其中有其源码正文存在的开始行的行号码,和其源码正文移动后的行的行号码,和表示进行移动的宗旨的识别信息;第4生成部,若进行第4编辑内容的编辑,一旦由最佳化处理削除源码正文,则产生包括以下内容的第4变迁信息,其中有其源码正文的行号码、和表示削除其源码正文的宗旨的识别信息。
3如权利要求2的程序开发***,其特征是调整信息生成装置还包括以下部分:
第1检测部分,当第3生成部产生第3变迁信息,则通过第2生成部在这以前生成的第1、第2变迁信息内,检出与包括在该第3变迁信息中的源码正文的移动开始行号码具有同一行号码的;
第1削除部分,削除检出的第1、第2变迁信息。
4如权利要求3的程序开发***,其特征是调整信息生成装置还包括以下部分:
第2检测部分,当第4生成部生成第4变迁信息,则检出第1、第2变迁信息,这些信息具有与包括在第4变迁信息中的源码正文存在的行的行号码相同的行号码;
第2削除部分,削除检出的第1、第2变迁信息。
5如权利要求2的程序开发***,其特征是调整装置包括以下部分:
变迁信息存储部分,存储由第1-第4生成部生成的第1-第4变迁信息;
分配信息存储部分,存储由源码正文存在的行的行号码和变量名-资源名排列,表达哪行的源码正文内的变量分配给哪个硬件资源的分配信息;
分析部分包括以下部分:
第1解释部,解释包括在调整命令内,应读入保持值的变量名的指示;
第1检测部,如果把第1变迁信息及第2信息存储在变迁信息存储部中,则对此作检测,其中所述第1及第2变迁信息是把由第1解释部解释的变量作为置换前变量或置换后变量指定的;
第2检测部,如果把包括置换后变量名的分配信息存储在分配信息存储部中,则对此作检测,所述置换后变量名包括在检出的第1变迁信息及第2变迁信息中;
动作验证部分包括以下部分:
合成部,把检出的第1变迁信息、第2变迁信息及分配信息合成在由包括那些的资源名,和置换前变量名,和置换后变量名组成的分配信息中;
读入部,如果包括读入指示,则读入用合成的分配信息内的资源名指示的硬件资源值;
第1显示部分包括以下部分:
第1显示部,若作硬件资源读入,则显示将置换前变量置换成置换后变量的宗旨信息,和作为同时通过硬件资源读入那些组的值的宗旨。
6如权利要求5的程序开发***,其特征是调装置包括以下部分,
分析部分包括以下部分:
第2解释部,解释包括在调整命令内,应写入要求值的变量名的指示;
第1检测部,若将第1变迁信息、第2变迁信息存储在调整信息存储部,则对此作检测,所述变迁信息是把由操作者指示的变量作为置换前变量或置换后变量指定的;
第2检测部,如果包括置换后变量名的分配信息存在,则对此作检测,置换后变量名包括在检出了的第1变迁信息、第2变迁信息中;
合成部,把被检出的第1、第2变迁信息及分配信息合成于由包括那些的资源名、和置换前变量名、和置换后变量名组成分配信息中;
动作验证部分包括以下部分:
写入部,若操作者的指示是写入指示,则在用合成了的分配信息内硬件名指示的硬件资源中写入要求值;
第1显示部分包括以下部分:
第2显示部,若作硬件资源的写入,则显示信息,所述信息表示将置换前变量置换后变量的宗旨,和由这些置换前变量、置换后变量组成的变量组同时被设定为有关要求值的宗旨。
7如权利要求6的程序开发***,其特征是调整装置包括以下部分:
行-地址信息存储部分,存储由源码正文存在的行的行号码和有关执行码地址表达哪行源码正文被置换成哪个执行码的行-地址信息;
第3解释部,解释包括应该读写的变量的源码正文的行号码;
动作验证部分包括以下部分:
第1取出部,取出对应于由第3解释部解释的行号码的执行码地址;
第2取出部,作为具有对应于取出的地址的行号码的分配信息,取出在由合成部合成的分配信息中展示的资源的资源名;
第1地址确定部,把取出的地址作为断点设定单位(设定先)地址确定;
执行部,实施机器语言程序,直到确定了的断点设定单位地址;
读入部及写入部,根据执行部的机器语言执行之后,实施对于用取出的资源名指示的硬件资源的读写。
8如权利要求7的程序开发***,其特征是调整位置包括以下部分,
分析部分包括以下部分:
第5判定部,当应读入值的变量指示或应写入要求值的变量的指示由第2解释部解释,则判定参照第3变迁信息,包括那些变量的源码正文是否已移动;
第6判定部,若应读入值的变量指示或应写入要求值的变量指示由第1、2解释部被解释,则参照第4变迁信息,判定包括操作者指定了的变量的源码正文是否已削除;
第1显示部分包括以下部分:
第1警告部,在移动情况下,由于其源码正文从有关行移动,所以向操作者警告指示的读写没能进行的意思;
第2警告部,在作削除的情况下,由于其源码正文从有关行被削除,所以向操作者警告指示的读写没能进行的意思;
第3警告部,虽然没有作移动及削除,但当包括由第2检测部检测的第1变迁信息、第2变迁信息中所含的置换后变量名的分配信息不存在情况下,警告有关其变量的读写不进行的意思。
9如权利要求8的程序开发***,其特征是分析部分包括以下部分:
第4解释部,解释执行任一调整命令中所含机器语言程序的意思的指示,和应设定断点的行的指示;
第7判定部,参照第3、4变迁信息,判定指示的行的源码正文移至其他行还是存在于原来的行;
第1显示部分包括以下部分:
告知部,向其他行移动情况下,告知移动单位的行号码和在其移动单位设定断点的意思;
动作验证部分包括以下部分:
第1地址确定部,在存在于原来行的情况下或被削除情况下,根据存储部中存储的移动单位的行号码的源码正文和执行码的对应关系,确定断点设定单位的地址;
第2地址确定部,当判定为向其他行移动情况下,根据存储部中存储部移动单位的行号码的源码正文和执行码的对应关系,确定断点设定单位地址;
执行部,执行机器语言程序,达到确定的断点设定单位地址。
10如权利要求5的程序开发***,其特征是调整装置包括以下部分:
函数指定接受部分,在源文件中通过操作者接受应作动作验证的函数指定;
第2显示部分,在包括在接受的函数内的多个源码正文内摘录一部分,显示于规定的窗口中;
第3显示部分,在包括于机器语言程序中的多个执行码内,在显示于窗口内的源码正文的规定方向上配置,显示对应于窗口显示的内容;
调整命令接受部分,接受指示显示的任一个源码正文的调整命令;
调整信息生成装置进一步还包括以下部分:
第1修饰部分,当把任何行作为断点设定单位,调整命令接受部接受指示了的调整命令,则修饰由第2显示部显示的窗口内有关源码正文显示;
第2判定部分,当由第1修饰部分修饰任一行,则判定修饰了的源码正文对应于哪个地址的执行码;
第2修饰部分,修饰通过由第3显示部分显示的窗口内的第2判定部判定的地址执行码显示。
11如权利要求10的程序开发***,其特征是调整装置包括以下部分:
第3检测部分,当函数指定接受部从操作者接受应作动作验证的函数指定,则在其函数中包括的源码正文内,检测在第3变迁信息中作为移动源的源码正文指定的部分。
第4检测部分,若函数指定接受部通过操作者接受应作动作验证的函数指定,则在其函数中包括的源码正文内,检测在第4变迁信息中作为削除的源码正文指定的部分;
第1标记附加部分,在由第3检测部分检出的所有行上作出显示,其源码正文要附加移动的宗旨标记;
第2标记附加部分,在由第4检测部分检出的所有行上作出显示,其源码正文要附加削除了的宗旨标记。
12如权利要求11的程序开发***,其特征是调整装置包括以下装置:
第5检测部分,全部检测包括在由函数指定部指定了的函数中的变量;
第6检测部分,检测包括检出的变量的第1变迁信息、及分配信息;
配置部分,作出显示,要使检出的分配信息中所含的资源名、置换前变量、置换后变量、置换那些的宗旨在包括被检出的各个变量的源码正文的一定方向上配置。
13如权利要求12的程序开发***,其特征是调整装置包括以下部分:
第3判定部分,参照包括所述源码正文中各变量的分配信息,判定对应于那些变量的资源的可读入部分;
记号配置部分,在包括判定为可能的变量的源码正文上作出显示,要配置表示可能的记号。
14如权利要求5的程序开发***,其特征是包括以下部分:
计数部分,当把第1-第4变迁信息及分配信息存储在存储部中,则对其信息量作计数;
控制部分,当计数的信息量为规定基准以下,则控制合成部分,使得在变迁信息存储部分及分配信息存储部分中存储着的第1变迁信息及分配信息与由那些包括着的资源名,和置换前变量名和置换后变量名组成的分配信息合成。
15如权利要求5的程序开发***,其特征是调整装置包括以下部分:
计数部,当把第1-第4变迁信息及分配信息存储在存储部分中,则对源码正文的行数作计数;
控制部分,若计数的行数为规定的基准以下,则控制合成部分,使把变迁信息存储部分及分配信息存储部分中存储了的第1变迁信息及分配信息与由那些包括的资源名,和置换前变量名、和置换后变量名组成的分配信号合成。
16如权利要求5的程序开发***,其特征是调整装置包括以下部分:
计数部分,对执行码的码大小作计数;
控制部分,当计数了的码大小为规定基准以下,则对合成部分作控制,使变迁信息存储部分及分配信息存储部分中存储着的第1变迁信息及分配信息与由那些包括的资源名、和置换前变量名、和置换后变量名组成的分配信息合成。
17一种调整信息生成装置,监视由多个源码正文组成的源文件翻译处理,生成调整用信息,其特征是,
调整信息生成装置包括以下部分:
第1判定部分,对于在翻译处理时变换成内部表达的源文件所作最佳化处理期间,逐行判定对于源文件中哪个码作规定编辑内容;
生成部分,在判定为作规定编辑内容情况下,通过包括对应于其码的源码正文的行的行号码、和编辑内容、和编辑前后的码的编组,生成表示编辑前后变迁的变迁信息;
所述第1判定部分包括以下部分:
第1判定部,作为第1编辑内容,判定是否作通过最佳化处理把源码正文中变量置换成其他变量或常数的宗旨的编辑内容;
第2判定部,作为第2编辑内容,判定是否作通过最佳化处理把源码正文中的运算式置换成其他变量或常数的宗旨的编辑内容;
第3判定部,作为第3编辑内容,判定是否作通过最佳化处理使源码正文向其他行移动的宗旨的编辑内容;
第4判定部,作为第4编辑内容,判定是否作由最佳化处理削除源码正文的宗旨的编辑内容;
生成部分包括以下部分:
第1生成部,当实施第1编辑内容的编辑,则生成包括以下部分的第1变迁信息:有关源码正文存在的行的行号码、置换前的变量名、置换后的变量名或常数名、和表示置换那些的宗旨的识别信息;
第2生成部,当进行第2编辑内容的编辑,则生成包括以下部分的第2变迁信息:有关源码正文存在的行的行号码、置换前的运算式和置换后的变量名或常数、表示置换那些的宗旨的识别信息;
第3生成部,当进行第3编辑内容的编辑,则生成包括以下部分的第3变迁信息;其源码正文存在的原来行的行号码、其源码正文移动后的行的行号码、表示移动进行宗旨的识别信息;
第4生成部,当作第4编辑内容的编辑,一旦通过最佳化处理削除源码正文,则生成包括其源码正文的行号码、和表示削除其源码正文的宗旨的识别信息。
18如权利要求17的调整信息生成装置,其特征是还包括以下部分:
第1检测部分,当第3生成部生成第3变迁信息,则通过第1、2生成部,在在此之前生成的第1、2变迁信息内,检测有与在该第3变迁信息中包括的源码正文移动源的行号码同样行号码的部分;
第1削除部分,削除检测了的第1、2变迁信息。
19如权利要求18的调整信息生成装置,其特征是还包括以下部分:
第2检测部分,当第4生成部生成第4变迁信息,则检测与第4变迁信息中含有的源码正文存在的行的行号码有同一行号码的第1、2变迁信息;
第2削除部分,削除检出了的第1、2变迁信息。
20一种调整装置,翻译由多个源码正文组成的源文件,作得到的机器语言程序的动作验证,其特征是,源文件在翻译处理时转换成内部表达的状态中,作好规定的编辑内容,
调整装置包括以下部分:
存储部分,通过包括对应于作规定编辑内容的码的源码正文的行的行号码、编辑内容、编辑前后码的编组,存储表示编辑前后的变迁的变迁信息;
命令接受部分,对翻译后的机器语言程序,接受作为动作检证用命令的调整命令;
分析部分,解释调整命令的内容,若在调整命令内包括对编辑前码的指示,则根据包括同码的所有变迁信息,分析根据所述编辑的所述编辑前码的变迁原委;
第1显示部分,显示分析了的变迁原委;
动作验证部分,在构成机器语言程序的多个执行码内,参照由分析部分析的变迁原委检测相当于调整命令的执行码,对检测了的执行码作动作验证。
21如权利要求20的调整装置,其特征是存储部分包括以下内容:
变迁信息存储部分,存储由第1-4生成部生成的第1-4变迁信息;
分配信息存储部分,存储由源码正文存在的行的行号码和变量名-资源名的排列表达哪行源码正文内变量分配给哪个硬件资源的分配信息;
分析部分包括以下部分:
第1解释部,解释包括在调整命令内的应读入保持值的变量名的指示;
第1检测部,若在变迁信息存储部分存储把通过第1解释部解释的变量作为置换前变量或置换后变量指定的第1、2变迁信息,则对此作检测;
第2检测部,若把包括在检测的第1、2变迁信息中所含的置换后变量名的分配信息存储在分配信息的存储部分中,则对此作检测;
动作检证部分包括以下部分:
合成部,将检出的第1、2变迁信息及分配信息,与由包括那些的资源名、置换前变量名、置换后变量名组成的分配信息合成;
读入部,若包括读入指示,则读入用合成的分配信息内资源名指示的硬件资源值;
第1显示部分包括以下部分:
第1显示部,当进行硬件资源的读入,则显示把置换前变量置换成置换后变量的宗旨的数据,和作为同时通过硬件资源读入那些组的值的宗旨。
22如权利要求21的调整装置,其特征是包括以下部分,
分析部分包括以下部分:
第2解释部,解释包括在调整命令内的应写入要求值的变量名指示;
第1检测部,若在调整信息存储部分中存储把由作者指示的变量作为置换前变量或置换后变量指示的第1、2变迁信息,则对此作检测;
第2检测部,若包括在检出了的第1、2变迁信息中所含的置换后变量名的分配信息存在,则对此作检测;
合成部,把检出了的第1、2变迁信息及分配信息与由包括那些的资源,置换前变量名、置换后变量名组成的分配信息合成;
动作验证部分包括以下部分:
写入部,来自操作者的指示若是写入指示,则在用合成了的分配信息内的硬件名指示的硬件资源上写入要求值;
第1显示部分包括以下部分:
第2显示部,当作硬件资源写入,则显示把置换前变量置换后变量的宗旨,和同时把由置换后变量组成的变量组设定成有关要求值的宗旨的信息。
23如权利要求22的调整装置,其特征是包括以下部分;
行-地址信息存储部分,存储通过源码正文存在的行的行号码和有关执行码地址,表达哪行源码正文被变换成哪个执行码的行地址信息;
第3解释部,解释包括应读写的变量的源码正文的行号码;
动作验证部分包括以下部分:
第1取出部,取出对应于由第3解释部解释的行号码的执行码地址;
第2取出部,作为具有对应于取出的地址的行号码的分配信息,取出在由合成部合成的分配信息中所示的资源的资源名;
第1地址确定部,把取出了的地址作为断点设定前地址确定;
执行部,执行机器语言程,直到确定了的断点设定前地址。
读入部及写入部,在根据执行部的机器语言程序执行之后,进行对用取出的资源名指示的硬件资源的读写。
24如权利要求23的调整装置,其特征是包括以下部分,
分析部分包括以下部分:
第5判定部,当利用第1,2解释部解释应读入值的变量指示或应写入要求值的变量的指示,则判定是否参照第3变迁信息包括那些变量的源码正文已经移动;
第6判定部,当利用第1、2解释部解释应读入值的变量指示或写入要求值的变量指示,则参照第4变迁信息,判定是否包括操作者指定了的变量的源码正文已被削除;
第1显示部分包括以下部分:
第1警告部,在移动情况下,为了其源码正文被从有关行移动,所以向操作者警告指示的读写不进行的宗旨;
第2警告部,在削除了的情况下,为了其源码正文从有关行被削除,所以向操作者警告指示了的读写行不进行的宗旨;
第3警告部,虽然不作移动及削除,当包括由第2检测部检测的第1、2变迁信息中不含的置换后变量名的分配信息不存在情况下,警告有关其变量的读写不进行的宗旨。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP169195/1996 | 1996-06-28 | ||
JP169195/96 | 1996-06-28 | ||
JP8169195A JPH1021086A (ja) | 1996-06-28 | 1996-06-28 | プログラム変換装置とデバッグ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1172304A true CN1172304A (zh) | 1998-02-04 |
CN1143225C CN1143225C (zh) | 2004-03-24 |
Family
ID=15881985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB971132046A Expired - Fee Related CN1143225C (zh) | 1996-06-28 | 1997-03-28 | 调整信息生成装置和由调整装置所组成的程序开发*** |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP0817049B1 (zh) |
JP (1) | JPH1021086A (zh) |
KR (1) | KR100417655B1 (zh) |
CN (1) | CN1143225C (zh) |
DE (1) | DE69712986T2 (zh) |
TW (1) | TW366451B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240743A (zh) * | 2018-08-03 | 2019-01-18 | 挖财网络技术有限公司 | 一种利用特定标签来进行代码切换的方法 |
CN109643091A (zh) * | 2016-08-24 | 2019-04-16 | 三菱电机株式会社 | 可编程逻辑控制器 |
CN111164341A (zh) * | 2017-09-25 | 2020-05-15 | 株式会社富士金 | 阀装置、调整信息生成方法、流量调整方法、流体控制装置、流量控制方法、半导体制造装置和半导体制造方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6269454B1 (en) * | 1998-11-06 | 2001-07-31 | Advanced Micro Devices, Inc. | Maintaining object information concurrent with data optimization for debugging |
JP3612294B2 (ja) | 2001-08-06 | 2005-01-19 | 松下電器産業株式会社 | デバッグ方法およびデバッグ装置 |
US8239832B2 (en) * | 2007-05-25 | 2012-08-07 | Microsoft Corporation | In-process debugging using external debugging infrastructure |
JP2015194881A (ja) | 2014-03-31 | 2015-11-05 | 富士通株式会社 | コンパイル装置、コンパイラプログラム、コンパイル方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4667290A (en) * | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
US4953084A (en) * | 1987-11-16 | 1990-08-28 | Hewlett-Packard Company | Method and apparatus using variable ranges to support symbolic debugging of optimized code |
JPH03240837A (ja) * | 1990-02-19 | 1991-10-28 | Nec Corp | デバッグ情報生成装置 |
AU4598593A (en) * | 1992-06-05 | 1994-01-04 | Convex Computer Corporation | Computer program debugging in the presence of compiler synthesized variables |
US5371747A (en) * | 1992-06-05 | 1994-12-06 | Convex Computer Corporation | Debugger program which includes correlation of computer program source code with optimized object code |
JPH06274369A (ja) * | 1993-03-19 | 1994-09-30 | Hitachi Ltd | 最適化プログラムのデバッグ方式 |
-
1996
- 1996-06-28 JP JP8169195A patent/JPH1021086A/ja not_active Withdrawn
-
1997
- 1997-03-27 DE DE69712986T patent/DE69712986T2/de not_active Expired - Fee Related
- 1997-03-27 EP EP97302199A patent/EP0817049B1/en not_active Expired - Lifetime
- 1997-03-27 TW TW086103957A patent/TW366451B/zh active
- 1997-03-28 CN CNB971132046A patent/CN1143225C/zh not_active Expired - Fee Related
- 1997-03-28 KR KR1019970011066A patent/KR100417655B1/ko not_active IP Right Cessation
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109643091A (zh) * | 2016-08-24 | 2019-04-16 | 三菱电机株式会社 | 可编程逻辑控制器 |
CN109643091B (zh) * | 2016-08-24 | 2020-07-14 | 三菱电机株式会社 | 可编程逻辑控制器 |
CN111164341A (zh) * | 2017-09-25 | 2020-05-15 | 株式会社富士金 | 阀装置、调整信息生成方法、流量调整方法、流体控制装置、流量控制方法、半导体制造装置和半导体制造方法 |
US11512993B2 (en) | 2017-09-25 | 2022-11-29 | Fujikin Incorporated | Valve device, adjustment information generating method, flow rate adjusting method, fluid control system, flow rate control method, semiconductor manufacturing system and semiconductor manufacturing method |
CN109240743A (zh) * | 2018-08-03 | 2019-01-18 | 挖财网络技术有限公司 | 一种利用特定标签来进行代码切换的方法 |
CN109240743B (zh) * | 2018-08-03 | 2021-07-27 | 挖财网络技术有限公司 | 一种利用特定标签来进行代码切换的方法 |
Also Published As
Publication number | Publication date |
---|---|
JPH1021086A (ja) | 1998-01-23 |
DE69712986D1 (de) | 2002-07-11 |
EP0817049A1 (en) | 1998-01-07 |
EP0817049B1 (en) | 2002-06-05 |
TW366451B (en) | 1999-08-11 |
KR980004050A (ko) | 1998-03-30 |
DE69712986T2 (de) | 2002-10-17 |
CN1143225C (zh) | 2004-03-24 |
KR100417655B1 (ko) | 2004-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1203409C (zh) | 软件调试方法和软件开发辅助方法 | |
CN1293465C (zh) | Gui显示装置及光标或gui组件动画显示处理方法 | |
CN100338573C (zh) | 设计用户界面样式的方法以及具有自适应用户界面的设备 | |
CN1102934A (zh) | 增量连接*** | |
CN1773508A (zh) | 把源文档转换成目标网页文件的方法 | |
CN101048729A (zh) | 用于编辑标记语言文档的文档处理和管理方法 | |
CN1711522A (zh) | 图形用户接口建模*** | |
CN1811702A (zh) | 开发门户应用和自动部署门户应用的***和方法 | |
CN1609796A (zh) | 应用编程接口(api)的设计 | |
CN1591411A (zh) | 数据处理*** | |
CN1437110A (zh) | 用于断点设定的装置和方法 | |
CN1731398A (zh) | 信息处理装置、文档检索方法 | |
CN1228558A (zh) | 程序变换方法和程序变换*** | |
CN1265207A (zh) | 生成2000年测试例的***和方法 | |
CN1969272A (zh) | 自动生成内容的导入 | |
CN1758221A (zh) | 程序处理装置 | |
CN1379882A (zh) | 将二维数据转换为标准形式的方法 | |
CN1143225C (zh) | 调整信息生成装置和由调整装置所组成的程序开发*** | |
CN101057233A (zh) | 文档处理装置和文档处理方法 | |
CN1744093A (zh) | 数据流图处理方法及具备可重构电路的处理装置 | |
CN1300718C (zh) | 信息显示装置和信息显示处理程序 | |
CN1244057C (zh) | 内容服务器装置和内容提供方法 | |
CN1862545A (zh) | 绘制原理图设计文件的方法和*** | |
CN1875343A (zh) | 用于建立软件套件的***和方法 | |
CN1650262A (zh) | 交互设计*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |