專利名稱:調(diào)整信息生成裝置和由調(diào)整裝置所組成的程序開發(fā)系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及在軟件開發(fā)中的一種程序開發(fā)系統(tǒng),由經(jīng)程序變換裝置生成的執(zhí)行碼驗證是否按設計工作,在早期發(fā)現(xiàn)其錯誤的調(diào)整裝置,和生成對調(diào)整裝置的調(diào)整信息的調(diào)整信息生成裝置組成。
近年來,稱為文字處理器、個人電腦、電子手冊的信息設備和稱為錄象機、電視、冰箱的家電制品的更新?lián)Q代令人眼花。當然,隨著產(chǎn)品變更的頻繁,這些信息設備、家電制品的開發(fā)周期也非常短。因此,各廠商公司在象這樣短的周期中完成新品開發(fā)中,日夜拼命地工作。另一方面,這些信息設備、家電制品中內(nèi)設微機早已是公知的,在短的周期內(nèi)完成該控制用程序,對于各廠商公司的技術工作者來說成為一個生死悠關的問題。
在這樣的形勢下,《高級語言指向的開發(fā)環(huán)境》的配備令人注目。所謂《高級語言指向的開發(fā)環(huán)境》,稱為通過程序編碼用高級語言始終如一地達到可作在具體機器上的動作驗證的開發(fā)環(huán)境,在其配備上,成為核心的是在調(diào)整裝置中用于作以高級語言級的動作驗證的調(diào)整信息的生成。
所謂調(diào)整信息,是表示源碼正文狀態(tài)的程序和執(zhí)行碼狀態(tài)的程序的對應關系的全部信息總稱,其代表內(nèi)容是表示源碼正文的各行和執(zhí)行代碼的地址的對應關系的行地址信息,和源程序內(nèi)的變量,和表示與執(zhí)行碼利用的寄存器、存儲器的對應分配信息。這樣在分配信息中明示好對應關系是因,由程序任意定義變量,并相對于僅用必要的個數(shù),寄存器或存儲器是軟件本身,若明確指示在許多變量內(nèi)哪個對應于哪個寄存器,則能管理用戶本身所寫的程序與執(zhí)行碼的對應關系。
下面,參照
圖1構(gòu)成說明有關利用象這樣的調(diào)整信息的調(diào)整裝置已有結(jié)構(gòu)。
在圖1,調(diào)整裝置包括程序存儲部301、生成碼存儲部302、最佳化信息存儲部303、調(diào)整信息存儲部304、輸入部401、碼執(zhí)行部402、變量操作部403、輸出部404、行顯示部405。
在程序存儲部301中,存儲技術人員用高級語言作成的程序。
生成碼存儲部302存儲生成的執(zhí)行碼。
最佳化信息存儲部303存儲有關在程序存儲部301存儲的程序的分配信息。
調(diào)整信息存儲部304由表示程序的行與執(zhí)行碼的地址對應的行地址存儲部3041、和表示函數(shù)信息的函數(shù)信息存儲部3042組成。作為函數(shù)信息存儲部3042的內(nèi)容。函數(shù)的開始地址、函數(shù)的自變量和變量之名稱和類型、變量被確保在棧中情況下,存儲棧的補償值。
輸入部401從用戶接受操作員想設定值的變量及想?yún)⒄罩档淖兞康闹付ā?br>
碼執(zhí)行部402通過生成碼存儲部302得到執(zhí)行碼并執(zhí)行。
變量操作部403通過最佳化信息存儲部303及調(diào)整信息存儲部304得到用輸入部401指定的變量分配信息,判斷分配給指定變量的資源。其中所謂資源,是為了表現(xiàn)變量分配的執(zhí)行碼中的存儲?;蚣拇嫫鳌_@樣在判斷資源后,在碼執(zhí)行部402詢問其資料值。通過詢問一旦得到資源值,作為變量值在輸出部404顯示該值。
行顯示部405通過程序存儲部301得到程序,顯示包括停止行的函數(shù)。
下面就上述構(gòu)成的調(diào)整裝置,就其動作進行說明。圖2A表示程序存儲部301的內(nèi)容;圖2B表示生成碼存儲部302的內(nèi)容;圖2C表示調(diào)整信息存儲部304的內(nèi)容;圖2D表示最佳化信息存儲部303的內(nèi)容。
當調(diào)整裝置啟動,行顯示部405顯示函數(shù)單位的程序,輸入部401顯示命令總線,成為等待來自操作者的輸入狀態(tài)。在該輸入等待狀態(tài),操作者擊鍵,一輸入想?yún)⒄盏?0行的變量Z值的宗旨命令(參照圖3A),則變量操作部403檢索行地址存儲部3041,檢查行l(wèi)ine10對應于哪個地址。若參照圖2C所示的行地址存儲部3041之一例,則了解到行l(wèi)ine10對應于地址0×128。象這樣,若判定行l(wèi)ine10對應于地址0×128,則在碼執(zhí)行部402向地址0×128命令斷點設定,同時在行顯示部405命名用箭頭給行l(wèi)ine10作標記的意思。根據(jù)這樣的箭頭表示,向操作者通知到達行l(wèi)ine10執(zhí)行宗旨(參照圖3B)。碼執(zhí)行部402使存儲在生成代碼存儲部302中的執(zhí)行碼執(zhí)行直到設定斷點的地址0×128。若一直執(zhí)行到地址0×128,則變量操作部403檢索最佳化信息存儲部303,判定在指定了的變量Z中分配哪個資源。在圖2D的最佳化信息存儲部303的一個例子中,指定的變量Z分配給寄存器D3。變量操作部403通過最佳化信息存儲部303得到象這樣分配的數(shù)據(jù)寄存器D3,命令碼執(zhí)行部402讀出寄存器D3之值。一旦作出這樣的命令,碼執(zhí)行部402讀出數(shù)據(jù)寄存器D3的保持值“10”。當通過碼執(zhí)行部402讀出數(shù)據(jù)寄存器D3的保持值“10”。則變量操作部403命令輸出部404,要將讀出的保持值“10”作為變量Z的保持值輸出。一旦這樣命令,輸出部404顯示變量Z的變量名稱以及保持值“10”(參照圖3C)。
如上述向用戶輸入變量名,還利用變量-資源的對應關系判定把輸入的變量分配給哪樣資源,向碼執(zhí)行部輸出其資源值,借此,在機器上執(zhí)行執(zhí)行碼狀態(tài)的程序時,可向用戶提示各變量值成為怎樣的值。
象這樣,利用變量和資源對應關系謀求提高開發(fā)效率的調(diào)整裝置之缺點為,調(diào)整裝置不可能在內(nèi)部表現(xiàn)中執(zhí)行的最佳化內(nèi)容提示給用戶,通過內(nèi)部表現(xiàn)狀態(tài)最佳化使程序內(nèi)容作大改寫情況下,用戶達到理解怎樣改寫本身記述的程序前需要許多時間。
比如要變更源碼正文的某變量值情況下,當通過最佳化把包括其變量的式子改寫成中間變量,則若不把握其中間變量和運算式對應,則上述變更操作不可能,若其他變量和運算式的對應不把握切斷地變更變量值,則擔心通過其變更操作,程序發(fā)生誤動作。
由于以上原因,技術人員在面對奇怪現(xiàn)象情況下,不能判定那是程序欠缺或是最佳化的影響原因,查明原因花費很多時間。因此弄清程序故障原因難以順利進行。
于是,近來出現(xiàn)的是如特開平6-274369公報展示的調(diào)整方式。即在最佳化前后于程序變換裝置中作源碼正文象怎樣變化的分析,是生成表示該變化過程的信息的方式。具體來說,在具有存在于源碼正文同時在最佳化過程中置換成其他變量的變量情況下,分析置換后的變量被分配為怎樣的資源,產(chǎn)生表示“置換前變量-資源”的組合的信息。
并且,通過最佳化使源碼正文(S=S+2*n)內(nèi)的運算式(2*n)置換成變量(n1)情況下,分析置換后的變量n1被分配為怎樣的資源,若分配的資源R6判明,則產(chǎn)生表示上述運算式內(nèi)變量(n)作為(R6/Z)表示宗旨的信息。
然而,在如特開平6-274369公報中記載的“置換前變量和資源”或“包括變量和資源的式子形式”中,不能充分地表現(xiàn)由使“變量的置換”、“行的削除”、“行的移動”作復雜組合的最佳化處理而產(chǎn)生的改寫原委。
所謂內(nèi)部表現(xiàn)狀態(tài)的復雜最佳化,使稱之為源碼正文削除、源碼正文的移動、變量的置換、移動、削除的基本算法組合。這時程序變換裝置適宜地產(chǎn)生本身情況好的中間變量,還往往用此實施最佳化。對此在已有技術的調(diào)整方式中,經(jīng)最佳化處理源碼正文內(nèi)的變量被置換成其他變量,即使在其置換后的源碼正文被削除或向其他行移動情況下,根據(jù)那些全部作最佳化后的最終狀態(tài)程序,生成顯示(置換前變量和資源)或(包括變量和資源的式子)的信息。
在上述變量的置換和行的組合比較簡單的情況下,這些信息雖然作為技術人員的參考值吧,但隨著置換和行的組合變得更復雜,這些信息如何生成的原委難以把握。并且對其理解使技術人員變得更困難。
幸運的是設想規(guī)定調(diào)整信息的表示,要表現(xiàn)“復制傳輸”“常數(shù)傳輸”等知名度高的最佳化方式或新開發(fā)的引起注意力高的最佳化方式的原委。但是對于內(nèi)部表現(xiàn)的最佳化因?qū)胄碌淖罴鸦绞降念l度也太高,即便規(guī)定如知名度高的最佳化方式和引起注意力強的最佳化方式中特例的調(diào)整信息的表示,也會擔心特意規(guī)定的表示很快要過時了。
本發(fā)明的第1目的是提供一種程序開發(fā)系統(tǒng),具有調(diào)整信息生成裝置,所述裝置即使作使稱之為行的削除、移動、變量置換、移動、削除的基本算法組合的復雜最佳化,也會更嚴密地表現(xiàn)其過程。
本發(fā)明的第2目的是提供一種程序開發(fā)系統(tǒng),具有調(diào)整信息生成裝置,所述裝置特點是使稱之為行的削除、變量置換、移動、削除的基本算法組合構(gòu)成的新的最佳化方式即便由程序變換裝置進行,根據(jù)表達由其最佳化方式產(chǎn)生的最佳化過程,也能在最佳化過程的表達中體現(xiàn)擴張性。
本發(fā)明的第1及第2目的由具有調(diào)整裝置的程序開發(fā)系統(tǒng)完成,所述調(diào)整裝置包括以下部分對在翻譯處理時變換為內(nèi)部表達的源文件作最佳化處理期間,逐行判定對源文件中任何碼是否作規(guī)定編輯內(nèi)容的第一判定部分;和在對預定內(nèi)容進行編輯和判定時,通過包括對應其碼的源碼正文的行的行號碼、編輯內(nèi)容和編輯前后碼的成組,生成表示編輯前后變遷的變遷信息的生成部組成的調(diào)整信息生成裝置,以及接受作為對于翻譯后的機器語言程序的動作驗證用命令的調(diào)整命令的命令接受部分;解釋調(diào)整命令的內(nèi)容,若在調(diào)整命令內(nèi)編輯前包括對碼的指示,則根據(jù)包括同碼的所有變遷信息,分析由上述編輯產(chǎn)生的上述編輯前碼的變遷原委的分析部分;表示分析后的變遷原委的第1顯示部分;在構(gòu)成機器語言程序的多個執(zhí)行碼中,參照由分析部分分析的變遷原委,檢出適合于調(diào)整命令的內(nèi)容,對檢出的執(zhí)行碼作動作驗證的動作驗證部分。
根據(jù)該程序開發(fā)系統(tǒng),在最佳化過程中即便進行使稱為行的削除、移動、變量的置換、移動、削除的基本算法組合的復雜最佳化,判定部分在其過程中也判定是否作規(guī)定的編輯內(nèi)容,如果進行,則生成部分產(chǎn)生變遷信息。利用象這樣判定部分監(jiān)視最佳佳化過程,可通過變遷信息嚴密地表達內(nèi)部表達的最佳化過程。從而,即便進行使稱之為行的削除、移動、變量置換、移動、削除的基本算法的組合的復雜最佳化,也能更嚴密地表達其過程。
在翻譯了的機器語言程序的調(diào)整時,調(diào)整裝置解釋調(diào)整命令的內(nèi)容,若在調(diào)整命令內(nèi)包括對編輯前碼的指示,則根據(jù)包括同碼的所有變遷信息,分析因上述編輯引起的上述編輯前碼的變遷原委。由于象這樣分析原委,第1顯示部分顯示分析了的變遷原委,所以比如即使利用最佳化對源碼正文作大改寫,程序開發(fā)者利用最佳化對如何改寫的理解沒有浪費時間。借此,程序開發(fā)者不會對利用最佳化過程改寫的部分作翻弄,可一邊回想高級語言中記述的源碼正文,一邊確認其動作檢證。
并且權(quán)利要求1的第1判定部分的構(gòu)成包括作為第1編輯內(nèi)容,判定是否實施由最佳化處理把源正文中的變量置成別的變量或常數(shù)的宗旨的編輯內(nèi)容的第1判定部;和作為第2編輯內(nèi)容,判定是否實施由最佳化處理把源碼正文中運算式置換成別的變量或常數(shù)的宗旨的編輯內(nèi)容的第2判定部;和作為第3編輯內(nèi)容,判定是否實施由最佳化處理使源碼正文向其他行移動的宗旨的編輯內(nèi)容的第3判定部;和作為第4編輯內(nèi)容,判定是否實施由最佳化處理削除源碼正文的宗旨的編輯內(nèi)容的第4判定部。
也可由以下部分組成生成部分當實施第1編輯內(nèi)容的編輯,生成包括該源碼正文存在的行的行號碼、和置換前的變量名、和置換后的變量名或常數(shù)名、和表示對那些作置換的宗旨的識別信息的第1變遷信息的第1生成部;和當實施第2編輯內(nèi)容的編輯,則生成包括該源碼正文存在的行的行號碼、和置換前的運算式和置換后的變量名或常數(shù)、和表示對那些作置換后的宗旨的識別信息的第2變遷信息的第2生成部;和當實施第3編輯內(nèi)容的編輯,則生成包括其源碼正文存在前的行的行號碼、和其源碼正文移動后的行的行號、和表示作移動的宗旨的識別信息的第3變遷信息的第3生成部;和當實施第4編輯內(nèi)容的編輯,當由最佳化處理削除源碼正文,則生成包括其源碼正文的行號、和表示削除其源碼正文的宗旨的識別信息的第4變遷信息的第4生成部。
作為第1-第4編輯內(nèi)容的變量置換、運算式的置換、行的移動、行的削除,即使是“付本傳輸”“常數(shù)傳輸”等知名度高的最佳化方式,即便是新開發(fā)令人重視的最佳化方式,也肯定是可行的編輯內(nèi)容,基于象這樣的編輯內(nèi)容表達最佳化過程,賦于最佳化過程的表達以擴展性。所以可使最佳化過程的表達具有普遍性。借此隨著最佳化方式的再現(xiàn),省去了改變調(diào)整信息記載時間。
并且在調(diào)整裝置中備有存儲由第1-第4生成部生成的第1-第4變遷信息的變遷信息存儲部;存儲由源碼正文存在的行的行號和變量名-資源名的排列表達哪行的源碼正文內(nèi)的變量分配給哪個硬件資源的分配信息的分配存儲部。
分析部分包括第1解釋部,對調(diào)整命令內(nèi)所含的、應讀入保持值的變量名的指示進行解釋;第1檢測部,若把由第1解釋部解釋的變量作為置換前變量或置換后變量指定的第1變遷信息及第2變遷信息存儲在變遷信息存儲部分中,則對此進行檢測;第2檢測部;若把包括在檢出的第1變遷及第2變遷信息中所含的置換后變量名的分配信息存儲在分配信息存儲部分中,則對此作檢測。
動作檢證部分由以下部分構(gòu)成合成部,使檢出了的第1變遷信息、第2變遷信息及分配信息與由那些包括的資源名和置換前變量名和置換后變量名組成的分配信息合成;讀入部,若包括讀入指示,則讀入用合成的分配信息內(nèi)的資源名指示的硬件資源值。
若在第1顯示部分作硬件資源讀入,則也可備置第1顯示部分,顯示把置換前變量置換成置換后變量的宗旨信息,和作為同時通過硬件資源讀入那些組的值的宗旨。
若根據(jù)這構(gòu)成,當操作者指定置換前變量情況下,不僅僅讀出其變量的值,而且顯示把置換前變量置換成置換后變量的宗旨的信息,和顯示作為同時通過硬件資源讀入那些組的值的宗旨,因此對于操作者可著意變量之間的關連。通過著意那這樣的變量之間的關連,能提高調(diào)整工作的進展。
圖1是已有的調(diào)整裝置結(jié)構(gòu);圖2A表示程序存儲部301的存儲內(nèi)容一例;圖2B表示生成碼存儲部302的存儲內(nèi)容之一例;圖2C表示調(diào)整信息存儲部304的存儲內(nèi)容之一例;圖2D表示最佳化信息存儲部303存儲內(nèi)容之一例;圖3A表示對輸入部401輸入操作之一例;圖3B表示行顯示部的顯示內(nèi)容;圖3C表示輸出部的顯示內(nèi)容;圖4表示程序變換裝置4調(diào)整裝置的內(nèi)部結(jié)構(gòu),那些內(nèi)部結(jié)構(gòu)和程序存儲部101、原語(primitive)存儲部102、生成碼存儲部103、調(diào)整信息存儲部104的輸入輸出關系。
圖5A表示程序存儲部101存儲內(nèi)容之一例;圖5B表示生成碼存儲部103存儲內(nèi)容之一例;圖5C表示調(diào)整信息存儲部104存儲內(nèi)容之一例;圖5D表示原語存儲部102存儲內(nèi)容之一例;圖5E表示由移動行信息削除部108及無用變量信息削除部109,作原語削除后的原語存儲部102的存儲內(nèi)容;圖6A表示在原語存儲部102中存儲的原語的原語名、表現(xiàn)形式、意義內(nèi)容的對應;圖6B表示最佳化項目和原語的對應關系;圖7表示本實施例的硬件模型;圖8A表示生成碼存儲部103中存儲的執(zhí)行碼串之一例;圖8B表示調(diào)整信息存儲部104中存儲的執(zhí)行碼串之一例;圖9A表示在顯示器502上所作輸出部208、行顯示部209、行信息顯示部210、操作可變量顯示部211、最佳化過程顯示部212、變量自動顯示部214的顯示狀態(tài)的顯示例;圖9B表示在顯示器502上所作行顯示部209、行信息顯示部210、操作可變量顯示部211的顯示狀態(tài)的顯示例;圖10表示移動削除變量判定部202處理內(nèi)容的程序方框;圖11表示斷點設定部211處理內(nèi)容的程序方框;圖12表示操作可變數(shù)顯示部211處理內(nèi)容的程序方框;圖13表示碼執(zhí)行部206處理內(nèi)容的程序方框;圖14A表示連鎖顯示控制部215處理內(nèi)容的程序方框;圖14B表示連鎖顯示控制部215處理內(nèi)容的程序方框;圖15A-圖15C表示由連鎖顯示控制部215的動作產(chǎn)生的顯示器502顯示內(nèi)容演變;圖16表示第2實施例的程序存儲部101的存儲內(nèi)容之一例;圖17A表示第2實施例的程序存儲部101的存儲內(nèi)容之一例;圖17B表示第2實施例的原語存儲部102存儲內(nèi)容之一例;圖17C表示第2實施例的調(diào)整信息存儲部104的存儲內(nèi)容之一例;圖17D表示第2實施例的生成碼存儲部103的存儲內(nèi)容之一例;圖18A表示第2實施例的變量操作部207處理內(nèi)容的程序方框;圖18B表示第2實施例的變量操作部207處理內(nèi)容的程序方框;圖19A表示碼執(zhí)行部206在硬件環(huán)境中執(zhí)行生成碼存儲部103的執(zhí)行碼時的各寄存器保持內(nèi)容之一例;圖19B是根據(jù)圖18的流程操作部207進行處理時的輸出部208的表示例;圖19C表示碼執(zhí)行部206在硬件環(huán)境中執(zhí)行生成碼存儲部103的執(zhí)行碼時的各寄存器保存內(nèi)容之一例。
下面參照附圖4-19,說明本發(fā)明實施例。首先在圖4表示本實施例的程序開發(fā)系統(tǒng)的整體構(gòu)成。本實施例的程序開發(fā)系統(tǒng)由內(nèi)裝調(diào)整信息生成裝置的程序變換裝置、調(diào)整裝置、程序存儲部101、原語存儲部102、生成碼存儲部103、以及調(diào)整信息存儲部104組成,程序變換裝置及調(diào)整裝置彼此共享在程序存儲部101、原語存儲部102、生成碼存儲部103以及調(diào)整信息存儲部104中存儲的信息。
程序存儲部101具有區(qū)分為行單位的存儲區(qū)域,在該區(qū)域存儲著技術人員用高級語言作成的源程序。
圖5A表示存儲源程序的程序存儲部101的存儲內(nèi)容,是用C語言記述的程序例。本程序由多個源碼正文組成,各源碼正文上帶有稱為“行l(wèi)ine1”“行l(wèi)ine2”“行l(wèi)ine3”···的行號碼。在各行,存儲著把記號“”作為分隔符形成的源碼正文。在這些正文內(nèi),在等號“=”的左邊配以變量名部分是對其變量代入值的宗旨的正文(所謂“代入正文”)。
該代入正文存在3種狀態(tài)。所謂第1狀態(tài)是在等號的右邊存在變量,第2狀態(tài)是等號的右邊存在常數(shù),第3狀態(tài)是存在由算子及被算子組成的算術表達式。
圖5A說明程序存儲部101中存儲著程序的各行意義內(nèi)容。
行l(wèi)ine1的源碼正文“void test(void)”表示函數(shù)test開始。并且所謂正文中的“void”表示函數(shù)test的引數(shù)和返回值不存在。
行l(wèi)ine2是說明語句,作為整數(shù)型“int”說明僅在函數(shù)test中使用的暫時變量“a、b、x、y”。行l(wèi)ine3是代入正文,表示在變量b代入100。行l(wèi)ine4是喚出函數(shù)init的函數(shù)喚出語句。行l(wèi)ine5,在用“while(***)”的“***”指定的條件語句為邏輯值“1”期間,表示使由“<”“>”封閉的范圍、即從line5至line1 2的行重復。在行l(wèi)ine 5中,由于在用“***”指定的條件語句中記述著“1”,所以用“<”“>”封閉的范圍的重復可無限地進行。
行l(wèi)ine 6喚出函數(shù)get Datal,用一個語句表示把函數(shù)的重復值代入變量X。
行l(wèi)ine 7表示把算術表達式“12*6”的結(jié)果代入變量a。
行l(wèi)ine 8設引數(shù)為a,表示喚出函數(shù)g 1。
行l(wèi)ine 9表示把變量X代入變量Z。
行l(wèi)ine 10設引數(shù)為Z,表示喚出函數(shù)g 2。
行l(wèi)ine 11設引數(shù)為X,表示喚出函數(shù)g 3。
行l(wèi)ine 12表示line 5的重復范圍終止。
行l(wèi)ine 13表示函數(shù)test終止。
原語存儲部102與程序存儲部101一樣具有區(qū)分為行單位的存儲區(qū)域。與程序存儲部101不同點在于,在程序存儲部101中對于存儲予先由程序員作的源程序,原語存儲部102在其初期狀態(tài)不作任何寫入。但是,原語存儲部102的存儲區(qū)域,一旦后述的原語生成部107啟動,則作為稱為原語的信息寫入端使用。
生成碼存儲部103被分成多個小區(qū)域,具有在各小區(qū)域注明地址的存儲區(qū)域。該存儲區(qū)域,后述的碼生成部110生成碼時,作為執(zhí)行碼的寫入端使用。
調(diào)整信息存儲部104由行地址存儲部1041和函數(shù)信息存儲部1042組成。行地址存儲部1041具有區(qū)分為對應表形式的存儲區(qū)域。該對應表有地址欄和行欄,分別寫入注在生成碼存儲部103具有的存儲區(qū)域內(nèi)小區(qū)域上的地址、注在程序存儲部101內(nèi)各行上的行號碼。
在函數(shù)信息存儲部1042上,存儲分配給存儲在程序存儲部101上的源程序的函數(shù)、其引數(shù)返回值、函數(shù)的引數(shù)、變量名稱和類型。并且當函數(shù)備于變換成執(zhí)行碼的情況下,要寫入函數(shù)開始地址。并且,函數(shù)備于確保在棧的情況下,要寫入棧的補償值。
接著說明有關圖4的程序變換裝置的結(jié)構(gòu)。程序變換裝置的組成包括內(nèi)部表達變換部105、最佳化部106、原語(primitive)生成部107、移動行信息削除部108、無用變量信息削除部109、碼生成部110、行-地址信息生成部111。其中,原語生成部107及行-地址信息生成部111構(gòu)成調(diào)整信息生成裝置。
內(nèi)部表達變換部105通過程序存儲部得到程序,由文字串狀態(tài)變換成內(nèi)部表達狀態(tài)。通常雖然用語法分析表現(xiàn)內(nèi)部表達,但為了在本實施例中說明方便起見,在程序上加修正方式表達。
最佳化部106作改寫,要使得能夠通過內(nèi)部表達變換部105,從內(nèi)部表達中變換的程序產(chǎn)生最佳碼。因此,最佳化部包括公共部分形式最佳化部1061、常數(shù)傳輸最佳化部1062、付本傳輸最佳化部1063、循環(huán)不變形式最佳化部1064、無用碼最佳化部1065、寄存器分配部1066。
在公共部分式子最佳化部1061,在多個賦值語句的右邊,分析是否使用公共運算式。象這樣的分析是由于通常由加法、減法、乘法、除法等的運算式,產(chǎn)生包括對算術運算器的控制的運算命令,算術運算器裝在中央運算裝置內(nèi)。這些運算命令,因比其他命令所給予中央運算裝置的負擔要大,所以如果一旦同樣的運算式在多個賦值語句內(nèi)重復存在,則分配給中央運算裝置的負擔是根據(jù)與其賦值語句數(shù)成比例地倍增。對此現(xiàn)象感到擔心,所以公共部分式子最佳化部1061在多個賦值語句的右邊分析是否使用公共運算式。
第一個例子說明程序例,運算式“x*300”包括在4個賦值語句“y=fnc(x*300)”、“Z=(x*300)+5”、“a=b+13*(x*300)”、“a=540/(x*300)”內(nèi)的情況下,公共部分式子最佳化部1061對此作出分析,把存在于賦值語句右邊的那些運算式“x*300”置換成變量“t1”。一旦作這樣的置換,上述4個賦值語句成為“y=fnc(t1)”、“z=t1+5”、“a=b+13*t1”、“a=540/t1”。然后當終止這樣的置換,則公共部分式子最佳化部1061生成把該變量配置在左邊,把上述運算式“x*300”配置在右邊的賦值語句“t1=x*300”,插入程序內(nèi)。總合考慮,在原來四個賦值語句中存在的運算式消失了,因代之生成變量,所以對程序整體的上述運算式產(chǎn)生的影響低至1/4。如上所述包括公共運算式的賦值語句的數(shù)量越多,則由公共部分式子最佳化部1061產(chǎn)生的最佳化越是能發(fā)揮價值。
常數(shù)傳輸最佳化部1062有將常數(shù)代入變量的賦值語句,并且分析在賦值語句以后的其他賦值語句中是否使用其變量(是否存在于賦值語句右邊)。之所以作這樣的分析是由于使常數(shù)-變量間的賦值語句盡量減少的緣故。即,雖然常數(shù)-變量間的賦值語句存在,但若在其他賦值語句中不使用該變量,則賦值語句的存在無任何意義,這是因為即使立即削除也不會發(fā)生任何問題。如果在以后的賦值語句中使用代入的變量情況下,常數(shù)傳輸最佳化部1062分析是否可把其變量存在右邊的賦值語句置換成常數(shù)。即,嘗試積極的置換。如果可能,把存在于賦值語句內(nèi)右邊的變量置換成常數(shù)。在圖5A中,line 7的源碼正文“a=12*b”的變量b在行l(wèi)ine 3中使常數(shù)100代入。為了削除該行l(wèi)ine 3的常數(shù)100-變量b之間的賦值語句,常數(shù)傳輸最佳化部1062把行l(wèi)ine 7的變量b置換成常數(shù)100,把line 7的源碼正文以“a=12*b”置換成“a=12*100”。
付本傳輸最佳化部1063存在僅僅傳輸如稱之為“a=b”“y=x”這樣的從變量至變量的單值的賦值語句,并且在賦值語句以后別的賦值語句中,分析是否使用轉(zhuǎn)移前(轉(zhuǎn)送先)變量。之所以這樣分析是為了盡可能減少變量-變量間的賦值語句數(shù)量。即雖然存在變量-變量間的賦值語句,但若在其他語句中不使用該轉(zhuǎn)移前變量,則上述賦值語句的存在無任意意義,這是因為即便立即削除也不會產(chǎn)生任何問題。如果在以后的賦值語句中使用轉(zhuǎn)移前變量情況下,付本傳輸最佳化部1063分析是否可能把其變量存在右邊的賦值語句置換成轉(zhuǎn)換原變量。即,為嘗試積極的置換,使得變量-變量間的賦值語句也能存在。如果能置換,則把賦值語句內(nèi)右邊存在的變量作變量置換。在圖5A中,line 9只不過是從變量x向變量z轉(zhuǎn)換而已。
付本傳輸最佳化部1063為了削除僅意味著象這樣轉(zhuǎn)移的賦值語句,探索變量Z的有無使用,檢測行l(wèi)ine 9的變量z的使用。并且為了削除變量z=變量x之間的賦值語句,付本傳輸最佳化部1063把line 10的“g2(z)”內(nèi)的“z”置換成“x”。其結(jié)果,行l(wèi)ine 10的源碼正文成為“g2(x)”。
循環(huán)不變式最佳化部1064,在循環(huán)中所包括的正文中,分析即使向循環(huán)以外移動也不會影響執(zhí)行結(jié)果。通常在程序中位于循環(huán)內(nèi)的部分用說成多少千次、多少百次的次數(shù)作重復的情況少,如果在循環(huán)內(nèi)存在冗余的語句,則以多少千次、多少百次為單位徒勞地使其冗余的語句重復。所謂上述“即使向循環(huán)外移動也不會影響執(zhí)行結(jié)果”,即使在上述的多少千次、多少百次的重復中,在帶入前指定了的變量增減全部是不產(chǎn)生的正文,相當于“冗余正文”。一旦分析象該“冗余正文”則循環(huán)不變式最佳化部1064使該“冗余正文”向循環(huán)以外移動。在圖5A的程序例子中,在行l(wèi)ine 7中存在的“a=12*b”雖然在圖5B中向作為while語句的重復對象的行l(wèi)ine 4移動,但這是由于即便變量9及變量b使while語句重復,也可檢出所有增減不發(fā)生。
無用碼最佳化部1065的公共部分形式最佳化部1061、常數(shù)傳輸最佳化部1062、付本傳輸最佳化部1063為作置換而削除不要的語句。使用圖5A的程序例捕捉上述處理。在圖5A的一例中,在行l(wèi)ine 7中所包括的變量b根據(jù)常數(shù)傳輸最佳化部1062被置換成常數(shù)100,包括在行l(wèi)ine 10中的變量z通過付本傳輸最佳化部1063被置成變量x,這些已作了描述。若作這些置換,行l(wèi)ine 3,行l(wèi)ine 9的賦值語句已判定不需要。鑒于這種情況,無用碼最佳化部1065削除line 8、line 9的賦值語句。并且無用碼削除部1065其變量被公布,雖然被代入,但在其值在以后的正文中,在全部不被使用情況下將這削除。
寄存器分配部1066將程序中的變量分配給專用目的計算機所具有的寄存器或存儲器。當該資源分配時,寄存器分配部1066在程序中,研究各變量的生存區(qū)間怎樣相重復。給其相重復的變量分配各不同的寄存器。并且,寄存器分配部1066研究各變量的嵌套級僅為多少,或各變量的使用頻度僅為多少,根據(jù)研究結(jié)果,給各變量分配優(yōu)先權(quán)。然后以優(yōu)先權(quán)從高到低分配寄存器。圖5A的一例中,因沒有使用重復b、z,所以不作分配。給變量a分配寄存器D2,給變量x分配寄存器D3。該結(jié)果最佳化了的碼如圖5C所示。
原語生成部107是所謂調(diào)整信息生成裝置的構(gòu)成要素之一,監(jiān)視對調(diào)整信息生成作根據(jù)最佳化部106的最佳化,每次與此同步產(chǎn)生原語,寫進原語存儲部102。所謂原語(primitive)是調(diào)整信息的一種,是表示根據(jù)最佳經(jīng)部106產(chǎn)生的最佳化過程的源碼正文變化原委的信息。
所謂由最佳化部106產(chǎn)生的最佳化,具有用公共部分式子最佳化部1061從運算式向變量置的置換、用常數(shù)傳輸最佳化部1062從變量向常數(shù)的置換、用付本傳輸最佳化部1063從變量向變量置換、用循環(huán)不變式最佳化部1064從循環(huán)部的語句移動、用無用碼最佳化部1065作無用語句的削除、用寄存器分配部1066對變量的寄存棧的分配,每逢實施最佳化用原語生成部107作原語生成。
有關原語的種類和表現(xiàn)形式的意義要參看圖6A。圖6A的組成包括用如怎樣的形式表達各種原語,是表示具有怎樣意義的對應表,表示所有原語種類的種類欄、表示各種原語表現(xiàn)形式的表現(xiàn)形式欄、表示有象怎樣意義的意義欄。
在該對應表中,種類欄作大的區(qū)分大致分為“有關變量的原語”和“有關行的原語”。在“有關變量的原語中有“變量的削除”“變量的移動”“變量的置換”“變量的資源”,在“有關行的原語”中有“行的削除”“行的移動”。
表現(xiàn)形式欄的“削除x1”是原語類“變量的削除”之表現(xiàn)形式的一例。其意義內(nèi)容是表示在其右橫的意義欄上。即,表示變量x1(該變量x1在至此說明中使用的圖5A的程序例中不存在,這點應注意)被削除的意思。
表現(xiàn)形式欄的“移動x2 Toline 1”是原語類“變量的移動”的表現(xiàn)形式之一例,其意義內(nèi)容是表示在其右欄的意義欄中。即變量x2(應注意的是,該變量x2也在至此說明中所用的圖5A的程序例中不存在)表示向行l(wèi)ine 1移動的意思。
表現(xiàn)形式欄的“置換x3→y1”“置換x4→5”是原語類“變量的置換”的表現(xiàn)形式之一例,其意義內(nèi)容是在其右橫的意義欄上。即,表示變量x3被置換成變量y1的意思、變量x4被置換成常數(shù)5的意思(應注意,變量x3、x4至此說明中所用的圖5A的程序例中不存在)。
有關最佳化項目和生成的原語關系要參照圖6B。圖6B表示執(zhí)行象怎樣的最佳化項目情況下產(chǎn)生圖6A所示的各表達形式的原語。在本圖,參照“公共部分形式最佳化”的橫排,可了解到,使“運算式的置換”欄和“正文的生成”欄作了“生成”標記。這意味著,公共部分式子最佳化部1061若作最佳化,則原語生成部107生成“運算式的置換”的原語和“正文生成”的原語。即,原語生成部的最佳化部106啟動,則開始最佳化部106的動作監(jiān)視。然后,當公共部分式子最佳化部1061把多個源碼正文中的運算式置換成別的變量,則生成“運算式的置換”的原語。并且當公共部分式子最佳化部106產(chǎn)生把該運算式配置于右邊,把其他變量配置于左邊的源碼正文,則原語生成部107生成“正文生成”的原語。
進而參看“常數(shù)傳輸最佳化”的橫排,可看到“變量的置換”欄和“行削除”欄被作了“生成”記號。這意味著,當常數(shù)傳輸最佳化部1062實施最佳化,則生成“變量置換”的原語和“行削除”的原語。即原語生成部107的最佳化部106-啟動,則開始最佳化部106的動作監(jiān)視。然后,一旦付本傳輸最佳化部1063把多個源碼正文中的變量置換成其他變量,則生成“變量置換”的原語。并且付本傳輸最佳化部1063處理后,一旦削除無用的源碼正文,則原語生成部107生成“行削除”的原語。
進而參看“付本傳輸最佳化”的橫排,可看到,“變量置換”欄和“行削除”欄作了“生成”標記。這意味著一旦付本傳輸最佳化部1063實施最佳化,則原語生成部107生成“變量置換”的原語和“行削除”原語。即若原語生成部107的最佳化部106啟動,則開始作最佳化部106的動作監(jiān)視。然后,一旦付本傳輸最佳化部1063把多個源碼正文中的運算式置換成其他變量,則產(chǎn)生“變量置換”原語。并且,付本傳輸最佳化部1063處理之后,當削除不要的源碼正文,則原語生成部107生成“行削除”。而且,無用碼削除部1065宣告變量,雖然代入變量,但在其值以后的正文中;當削除全部不用的變量情況下,原語生成部107生成變量削除的原語。
下面使用圖5A之程序例說明原語生成部107。在圖5A的一例中,原語生成部107通過由常數(shù)傳輸最佳化部1062所作的行l(wèi)ine 7的變量b,與常數(shù)100的置換動作同步,輸出原語“置換b→100”。
并且,與從通過付本傳輸最佳化部1063所作的行l(wèi)ine 10的變量z至變量x的置換動作同步,原語生成部107輸出原語“置換z→x”。進而,根據(jù)常數(shù)傳輸最佳化部1062及付本傳輸最佳化部1063置換之后,若由循環(huán)不變式削除部1064所作的行l(wèi)ine 7的移動,則原語生成部107輸出表示行l(wèi)ine 7的行的移動的原語“行移動Toline 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的各行輸出表示變量和資源分配關系的原語“資源aD2”。還有,寄存器分配部1066在line 6、line 8、line 11的各行中,對變量x寄存器D3作出分配,line 8、line 10、line 11行中,一旦變量x可成為設定參照,則原語生成部107向line 8、line 10、line 11行輸出表示變量和資源分配關系的原語“資源xD3”。其結(jié)果,原語存儲部102的存儲內(nèi)容成圖5D那樣。
并且雖然是對怎樣的單元生成原語,但原語生成產(chǎn)生行單元程序,那對于程序中一語句的一個原語。借此,在行單元中也生成表示變量和資源分配關系的原語。
而且更小的單元,用所謂執(zhí)行碼單元也能生成原語。本實施例的程序變換裝置,由于打算向用戶提供使用高級語言的開發(fā)環(huán)境,因此作成在行單元中產(chǎn)生原語的結(jié)構(gòu)。因此,后述的調(diào)整裝置也以程序行單元實現(xiàn)停止動作,謀求程序變換裝置和調(diào)整裝置之間標準的一致(所謂權(quán)利要求的變遷信息稱上述原語和行號碼組。
移動行信息削除部108在原語生成部107寫入原語存儲部102內(nèi)的原語中,削除包括在移動的賦值語句中的原語。通過削除包括在象該移動后的行中的原語,移動行信息削除部108謀求降低存儲在原語存儲部102中的信息量。例如在圖5A的程序例中,概述從line 6至line 4的后面,賦值語句“a=12*b”移動的內(nèi)容。對于該賦值語句“a=12*b”,在對應于圖5D所示的生成碼存儲部103內(nèi)的行l(wèi)ine 7的欄中,記述著“行移動TOline 4”“置換b→100”。在對應于該圖5D所示的生成碼存儲部103內(nèi)的行l(wèi)ine 7的欄中,表示移動的原語是“行移動TOline 4”,所謂這以外的原語,是表示置換的原語“置換b→100”。移動行信息削除部108削除該原語,謀求降低原語量。
無用變量信息削除部109對于在移動行信息削除部108削除后的原語,削除表示無用變量和資源分配關系的原語。其中所謂“無用變量”,是在程序行中不存在,且在表示置換和移動的原語中也不包括的變量。
在圖5D的一例中,變量a相當于此。其理由是在程序的哪一行中變量a都不存在。對于變量a、在line 5、line 6、line 10、line 11中,雖然輸出表示變量和資源分配關系的原語“資源aD2”,但因這些無非是表示“無用變量”資源的原語,所以削除表示在line 5、line 6、line 10、line 11輸出的變量和資源的分配關系的原語“資源aD2”。然而如line 8的源碼正文,對于變量存在的原語“資源a、D2”不作削除。
在程序中不使用的變量中,此外還存在line 10的變量x,雖然輸出表示變量和資源分配關系的原語“資源XD3”,但有關此的原語不削除。其理由是,變量X輸出表示置換的原語“置換Z→X”。從而,line 11中,表示輸出的變量和資源和分配關系的原語“資源XD3”不被削除。
并且無用變量信息削除部109的原語生成部107一旦生成行削除的原語,則檢出包括在行削除原語中的源碼正文存在的行的行號碼和有同樣號碼的置換原語及資源分配的原語,并削除這些檢出的原語。
經(jīng)過以上移動行信息削除部108的削除,原語存儲部102的存儲內(nèi)容從圖5D所示的部分向圖5E所示的轉(zhuǎn)移。
碼生成部110把由最佳化部106改寫的內(nèi)部表達的程序變換成執(zhí)行碼。使變換了的執(zhí)行碼存儲在生成碼存儲部103上。所謂執(zhí)行碼稱為組成專用目的計算機的硬件可譯碼可執(zhí)行的碼。
其中存在的問題雖然是專用目的計算機是怎樣的規(guī)模,但本實施例的程序變換裝置生成對圖7所示規(guī)模硬件模型的執(zhí)行碼。在圖7中,在中央運算處理裝置中,準備了用于數(shù)據(jù)的寄存器D0、D1、D2、D3,用于地址的寄存器A0、A1、A2、A3,和算術運算電路ALU。而且,在中央運算處理裝置內(nèi),準備了表示執(zhí)行中地址的程序計數(shù)器PC、表示當前棧的打頭位置的棧指示字SP。執(zhí)行碼和棧被配置于存儲器上。
圖8A表示對象這樣硬件模型,程序變換裝置生成的碼。在圖8A中生成的碼,在喚出函數(shù)時,作為引數(shù)和返回值的存儲端,當作寄存器使用,在函數(shù)中使用的寄存器、在函數(shù)開始時保存,函數(shù)終止時復原。
在圖8A中,各地址執(zhí)行碼的意義如下0×100前的test表示標記;0×100的執(zhí)行碼表示寄存器的保存;0×104的執(zhí)行碼表示子程序-init的喚出;0×108的執(zhí)行碼表示立即將“12”代入寄存器D2;0×l0C的執(zhí)行碼表示100乘D2、將結(jié)果代入D2;0×10C和0×100之間的loop表示標記;0×110的執(zhí)行碼表示子程序-get Datal的喚出;0×114的執(zhí)行碼通過將寄存器D0的保持值代入寄存器D3,作函數(shù)返回值的提交;0×118的執(zhí)行碼通過把寄存器D2的保持值代入寄存器D0,作引數(shù)的提交;0×11C的執(zhí)行碼表示子程序-g1的喚出;0×120的執(zhí)行碼通過把寄存器D3的保持值代入,向寄存器D0提交引數(shù);0×124的執(zhí)行碼表示子程序-g2的喚出;0×128的執(zhí)行碼通過代入寄存器D3的保持值,向寄存器D0提交引數(shù);0×12C的執(zhí)行碼表示子程序-g3的喚出;0×130的執(zhí)行碼表示向標記LOOP跳躍;0×134的執(zhí)行碼表示寄存器的復原;
0×134的執(zhí)行碼表示從子程序test向引入的函數(shù)返回。
在行-地址信息生成部111通過碼生成部110,若內(nèi)部表達狀態(tài)的程序被變換成執(zhí)行碼,則表示程序的行和生成的執(zhí)行碼地址的關系的行地址信息寫入行址存儲器1041。并且,向函數(shù)信息存儲部1042輸出有關函數(shù)和地址關系、函數(shù)變量的信息。其結(jié)果,所作成的調(diào)整信息存儲部104的內(nèi)容展示于圖8B中。
下面參照圖4說明有關本實施例的調(diào)整裝置的結(jié)構(gòu)。調(diào)整裝置的組成包括輸入部201,移動削除變量判定部202,斷點設定203,原語合成部204,合成啟動判斷部205,碼執(zhí)行部206,變量操作部207,輸出部208,行顯示部209,行信息顯示部210,可操作變量顯示部211,最佳化過程顯示部212,變量順序切換部213,變量自動顯示部214,連鎖顯示控制部215。
輸入部201在顯示器502上顯示命令總線,解釋其中用戶鍵入的“想?yún)⒄盏淖兞俊被颉跋朐O定的變量和期望值”。以所謂“l(fā)ine**的變量*的值參照”“l(fā)ine**的變量*的值設定為**”的形式作根據(jù)對命令總線的輸入部201的解釋。圖9A是顯示器502的顯示例,在本圖中,在表示參照符號y21的位置顯示命令總線,等待用戶輸入。
移動削除變量判定部202檢查是否存在由于最佳化的影響妨礙對由輸入部201輸入的變量的設定和參照的情況。
一旦上述處理變得具體,則其算法設定如圖10的程序方框圖實現(xiàn)。在圖10的程序方框圖中,步驟S1使調(diào)查對象行初始化,其中調(diào)查對象行被指定為函數(shù)的開始行(這里所謂函數(shù),是包括使現(xiàn)在實行停止的行的函數(shù)。)。步驟S2中,從程序存儲部101得到程序,檢查與用戶為設定或參照在輸入部201指定的變量相同的變量在調(diào)查對象行中是否存在,若不存在,則步驟S3為NO,轉(zhuǎn)移到步驟S11。在步驟S11,判定調(diào)查對象行是否達到函數(shù)內(nèi)的最后行,若不是那樣,則移至步驟S12。步驟12是所謂增量步驟,使調(diào)查對象行進入下一個程序行,再次轉(zhuǎn)移到S2。
步驟S2、S3、S11、S12重復,直至步驟S3判定為yes,即,在到達與用戶在輸入部201中指定的變量相同變量存在的行期間,反復進行。步驟S3若判定yes,則經(jīng)步驟S4的原語檢查,根據(jù)該原語內(nèi)容,有選擇地使S6、S8、S10啟動。步驟S6-S10的選擇性啟動是根據(jù)直至S5、S7、S9的判定步驟的任一個為yes來執(zhí)行的。
所謂步驟S4的原語檢查是從原語存儲部102得到原語,判定通過最佳化調(diào)整對象行是否沒有被移動、或是否設有被削除、或由最佳化存在于行的變量是否沒有被削除。
如判定是移動行,則步驟S5為yes,由表示行移動的原語得到從哪行移至哪行,對輸出部208作指示,向顯示器502輸出所謂“包括操作的變量的XXX移動到Y(jié)YY。存在沒有按程序設定參照的情況(在此,XXX表示調(diào)查對象行,YYY表示移動端行)”的內(nèi)容。
雖然步驟S5為NO,但若步驟S7為yes,則在步驟S8中,對輸出部208作指示,向顯示器502輸出所謂“削除包括操作的變量的XXX行(這里,XXX表示調(diào)查對象)。存在沒有按程序設定、參照的情況”的內(nèi)容。
雖然步驟S7為NO,但若步驟S9為yes,則向輸出部208作指示,向顯示器502輸出所謂“在XXX行中削除操作的變量。存在沒有按程序設定、參照的情況(這里,XXX表示調(diào)查對象)”的內(nèi)容。
根據(jù)步驟S6、S8、S10有選擇地啟動,判斷用戶要操作的變量是否包括在移動行或削除行中,若包括時,則把存在沒有按程序記述的值設定、參照情況和移動、削除行通知給用戶。
斷點設定部203從用戶那里接受行單元的斷點指定,把指定了的斷點變換成執(zhí)行碼上的地址,在變了的地址上設定斷點。象這樣,使斷點設定在行上時,擔心設定了的行是移動行。鑒于此,斷點設定部203通過從原語存儲部102得到信息,判定指定了的行是否為移動行。其中若指定行為移動行,則對輸出部208作指示,表示執(zhí)行順序沒有按程序進行。用圖11的程序方框圖說明斷點設定部203的算法。
在圖11的程序方框中,在步驟S21,于指定了的行上設定斷點。其中對斷點設定部203要規(guī)定做到使用戶在行l(wèi)ine 7的賦值語句上設定斷點。
在步驟21,從原語存儲部102中取出用戶指定了的行的原語。其中在用戶指定了的line 7上,附加出現(xiàn)行移動的原語,通過斷點設定部203取出上述原語。在步驟S22,判定取出的原語是否與行的移動有關。這里line 7向line 4的后面移動,所以在步驟23,斷點設定部203通過表示行的移動的原語,得到移動端行的號碼YYY,顯示成“指定的行移動。在第YYY行執(zhí)行后停止”。由于行號為YYY=4,所以用戶上顯示成“指定了的line 7向line 4移動。在line 4執(zhí)行后停止”。
顯示之后,在步驟S24,從行地址存儲部1041得到對應于指定了的程序行的執(zhí)行碼地址。該情況下,由調(diào)整信息存儲部104得到line 4的地址0×104,在步驟S25向得到的地址寫進使發(fā)生插入的命令。按以上順序,在地址0×104上設定斷點。
原語合成部204檢查是否一邊搜尋表示存儲在原語存儲部102中的最佳化過程的原語,一邊把變量分配給哪個資源,行最終移動至哪行。若應檢查的變量由最佳化過程變成從程序上消失的變量,則可得到其變量最終置換成哪個變量,分配給哪個資源。
如認為應調(diào)查的變量是變量Z的情況。若變量Z參照表示line 10的置換的原語,則判明被置成變量X。并一旦參照表示資源分配的原語,則變量X的資源弄清是寄存器D3。若合并這些原語,則可表達“變量Z”=“變量X”=“寄存器D3”的關系,通過把這些合成,得到“變量Z”=“寄存器D3”(變量Z存在于D3)的新的信息。將一旦合成得到的信息以“合成ZD3”的形式寫入原語存儲部102,要能使第2次以后的合成省略。
合成啟動判斷部205判斷是否在調(diào)整裝置啟動時使原語合成,是否使在變量參照時進行。如果判斷為在調(diào)整裝置啟動時使合成的情況下,使原語合成部204啟動,在輸入有關來自用戶的變量參照的指示之前,使全部行的原語合成。如果判定為變量參照時進行情況下,在輸入有關來自用戶變量的參照的指示時間,使其行的原語合成。作為調(diào)整裝置啟動時的判斷基準,存在原語的信息量、程序行的行數(shù)、執(zhí)行碼的碼尺寸大小。在本實施例中,在程序行的行數(shù)為大于一定量的情況下,將調(diào)整裝置作為啟動時合成原語的部分。在圖5A的一例中,因程序的行為10行以上,所以根據(jù)用戶的操作,判斷為合成原語。
變量操作部207一旦由用戶對變量實施操作,則根據(jù)其操作的控制被指示給碼執(zhí)行部206。所謂上述的“對根據(jù)用戶的變量的操作”,是輸入部201接受的內(nèi)容。并且其操作的種類中,有“變量參照指示”、“參照設定指示”。
輸入部z01一旦接受變量參照指示,則參照包括在原語存儲器102中存儲的原語中的變量和資源的對應關系,向碼執(zhí)行部206作出指示,要取出其資源值。若象這樣指示,碼執(zhí)行部206取出資源值,則向輸出部208指示,使變量名和值作對應顯示。
并且,變量操作部207接受對變量的設定指示,若其輸入部201接受變量名和期望值,則參照包括在存儲于原語存儲部102中的原語的變量和資源的對應,對碼執(zhí)行部206作指示,要在其資源上設定值。在以上處理中,作為置換由用戶指定的變量的變量的情況下,在輸出部208輸出置換了的變量之后變化的宗旨。
例如對圖5A的程序若指示操作者參照變量Z的宗旨,則變量操作部207根據(jù)在原語存儲部102存儲的原語,了解分配變量Z的資源D3,對于碼執(zhí)行部206作指示,使取出表示變量Z值的寄存器值。當取出寄存器D3之值“12”,則變量操作部207對輸出部208,顯示為“變量Z的值是12”。與此同時,變量操作部207根據(jù)參照有關的原語存儲部102中存儲的置換的原語,了解到變量Z置換成變量X,在輸出部208上顯示成“因為變量X置換成變量Z,所以變量X值也變化”。
碼執(zhí)行部206由模擬器(シミエレ-タ)、通路零位仿真器(ィンサ-キットエミエレ-タ)、監(jiān)視器(モニタ)中任一個構(gòu)成,利用模擬器、通路零位仿真器、和監(jiān)視器的特有功能,再現(xiàn)專用目的計算機的硬件環(huán)境,在該硬件環(huán)境中使在生成碼存儲部103上存儲的多個執(zhí)行碼依次執(zhí)行,直至斷點設定部203設定了的斷點。一達到斷點,則根據(jù)變量操作部207的指示作對該硬件環(huán)境的資源的存取。
雖然當然是由通路零位仿真器、模擬器、監(jiān)視器形成的硬件環(huán)境彼此不同(對于由通路零位仿真器、監(jiān)視器與形成的硬件環(huán)境實際機器的大體相同或接近,由模擬器形成的硬件環(huán)境只不過是模擬地形成在主機上),能再現(xiàn)的所有圖7所示的硬件模型具有的數(shù)據(jù)用寄存器D0、D1、D2、D3,地址用寄存器A0、A1、A2、A3,程序計數(shù)器PC、棧指示字SP的功能之點是公共的。
圖13的程序方框詳細地表達了碼執(zhí)行部206的處理。在本圖的步驟S71中,斷點設定部203等待根據(jù)用戶的執(zhí)行碼的執(zhí)行,如果不作,則在步驟S72中,把程序計數(shù)器設定為在生成碼存儲部103中存儲的打頭地址“0×100”。設定之后,在步驟S73,從生成碼存儲部103取出由程序計數(shù)器指示的地址的執(zhí)行碼,在步驟S74中,判定在取出的執(zhí)行碼中是否附加使插入發(fā)生的命令,這里所謂“使插入發(fā)生的命令”,是斷點設定部203寫入斷點設定端地址的命令。一旦完成把該命令寫進地址“0×010c”,則在取出“0×100”執(zhí)行碼狀態(tài)下,步驟S74為NO,在步驟S75中,執(zhí)行由程序計數(shù)器指示的地址“0×100”的執(zhí)行碼。借助該執(zhí)行,使地址“O×100”的執(zhí)行碼“Save”解碼,隨之,使圖7所示的碼件模型的數(shù)據(jù)寄存器、地址寄存器的保持值退入棧。在退避后的步驟S76,使程序計數(shù)器增量至“O×104”,轉(zhuǎn)移至步驟S73。
轉(zhuǎn)移后,在步驟S73,從生成碼存儲部103取出由程序計數(shù)器指示的地址“0×104”之執(zhí)行碼,在步驟S74中取出的執(zhí)行碼中雖然判定是否使插入發(fā)生的命令被附加,但因并非附加,所以步驟74為NO,在步驟S75中,使在程序計數(shù)器指示的地址“0×104”之執(zhí)行碼執(zhí)行。這里經(jīng)執(zhí)行,使地址“0×104”的執(zhí)行碼“Call-init”解碼,據(jù)此,在程序計數(shù)器上存儲“-init”的打頭地址后,在步驟S76中,使程序計數(shù)器增量為“0×108”,移至步驟73(原來必須轉(zhuǎn)移至碼執(zhí)行部206的處理“-init”,但為方便說明,使進入圖8A的下一個地址“0×108”)。
轉(zhuǎn)移后,在步驟S74,從生成碼存儲部109取出程序計數(shù)器指示的地址“0×108的執(zhí)行碼,在步驟S74中,判定在取出的執(zhí)行碼上是否附加使插入發(fā)生的命令,但因沒有,所以步驟S74為NO,在步驟S75中,使由程序計數(shù)器指示的地址“0×108”的執(zhí)行碼執(zhí)行,這里通過所述的執(zhí)行,使地址“0×108”的執(zhí)行碼“mov1Z、D2”譯碼。據(jù)此,在把即值“1Z”存儲在數(shù)據(jù)寄存器D2中之后,在步驟S76,使程序計數(shù)器增量為“0×106”,進入步驟S73。
轉(zhuǎn)移后,在步驟S74,從生成碼存儲部103取出由程序計數(shù)器指示的地址“0×10c”的執(zhí)行碼,在步驟S74中,判定在取出的執(zhí)行碼上是否附加使插入發(fā)生的命令,由于在地址“0×10c”的執(zhí)行碼上附加了該插入命令,所以步驟S74為yes,在步驟S77,使由程序計數(shù)器指示的地址“0×10c”的執(zhí)行碼執(zhí)行。這里根據(jù)所謂執(zhí)行,使地址“0×10c”的執(zhí)行碼“mul 100、D2”譯碼,據(jù)此,在算術運算電路中使數(shù)據(jù)寄存器D2的保持值和即值“100”相乘之后,把其結(jié)果“1200”存儲在數(shù)據(jù)寄存器D2中,進行步驟S78。
在步驟S78,根據(jù)在地址“0×10c”中記述的插入命令,產(chǎn)生插入信號,碼執(zhí)行部206使控制轉(zhuǎn)換給輸入部201。象這樣一旦把控制轉(zhuǎn)換至輸入部201,則處于表示前面所述的命令總線的輸入接受狀態(tài)。這里,若碼執(zhí)行部206從用戶接受變量參照的指示,則變量操作部207參照原語存儲部102,判定分配給其變量的資源,對碼執(zhí)行部206指示其資源保持值的取出。
碼執(zhí)行部206在步驟S79、S80中,等資源值取出指示,若作出取出指示,則步驟S79為yes,轉(zhuǎn)至步驟S81,碼執(zhí)行部206使其資源名的寄存器或存儲器作存取,將其值向變量操作部207輸出。
顯示在前面所述的命令總線的輸入接受狀態(tài)中,一旦接受變量設定指示,那么變量操作部207參照原語存儲部102,判定分配給其變量的資源,對碼執(zhí)行部206指示對其資源的期望置的設定。
若作資源值的設定,則步驟80為yes,進至步驟S81,碼執(zhí)行部206把期望值寫入其資源名的寄存器或存儲器。
輸出部208根據(jù)來自輸入部201、移動削除變量判定部202、斷點設定部203、原語合成部204的指示,在輸出窗口中顯示對輸入部201操作者所作有關操作的解答。
行顯示部209一覽顯示作成的多個源文件,等待由操作者所作在源文件中應作功作驗證的子程序的指定。若操作者作了指定,則在接受的子程序中所包括的多個源碼正文內(nèi)摘錄一部分,顯示在規(guī)定的窗口內(nèi)。顯示之后,在包括于機器語言程序中的多個執(zhí)行碼內(nèi),把對應顯示在窗口中的部分的內(nèi)容配置于在窗口顯示的源碼正文的橫方向進行顯示。再把表示現(xiàn)在執(zhí)行停止位置(是斷點設定部203設定的斷點設定行。)的行上用箭頭表示。
行信息顯示部210表示這樣的行信息顯示窗口,把對于在行顯示窗口顯示的各行表示作怎樣的最佳化的原語作成對用戶的可讀形式(這里所謂“對讀者的可讀形式”是用戶能讀的意思)。行信息顯示窗口有橫寫的記述欄,各記述欄的行顯示窗口中包括的程序和行位置一致,通過象這樣行顯示窗口和行位置一致,用戶可知道在行顯示部209內(nèi)顯示的哪行中作了最佳化。圖9A的一例表示對行l(wèi)ine 7的行移動,對行l(wèi)ine 3及行l(wèi)ine 9的行削除。經(jīng)象這樣削除,用戶可考察到自己記述的程序哪個附近是冗余的。
操作可能變量顯示部211表示在行顯示窗口內(nèi)各行中注哪個變量是可設定參照標記的操作可能變量操作窗口,操作可能變量操作窗口使在行顯示窗口中所包括的程序和行位置一致,各列分配用于程序內(nèi)的變量名。在操作可能變量顯示部211,在作為可設定參照的變量的任一行中,可知道其中操作可變量是哪個。如果在其行中出現(xiàn)調(diào)整信息或原語情況下,參照或設定作為可能的變量,標以“D”。
操作可能變量顯示部211作行顯示部209的變更控制,使保持值參照與可能的變量,保持值的設定和可能的的變量變成一目了然。
圖12的流程方框是使操作可能變量顯示部211的算法更詳細化的圖。在圖12中,步驟S41是使變量的調(diào)查范圍縮小的意思的初始化步驟,通過函數(shù)信息存儲部1042對函數(shù)中使用的變量縮小調(diào)查范圍。步驟S42中作調(diào)查對象行的初始化,其中把在行顯示部209中顯示的程序顯示開始行作為調(diào)查對象。在步驟S43,使用原語合成部204研究在調(diào)查對象行中在函數(shù)內(nèi)使用的各變量的設定參照是否可能。這里所謂“設定可能”是通過輸入部101對應指定的變量的資源存在的情況下。所謂“參照可能”是對于由輸入部201指定的變量的資源存在的情況,或者是變量被置換成其他變量或常數(shù)的情況。
在步驟S44中,當變量為設定可能或參照可能情況下,在步驟45中,對于設定參照可能的變量,在相當于調(diào)查對象行的行上作標記。
步驟S46工作是判定是否對于所有變量作一個調(diào)查對象行內(nèi)調(diào)查的宗旨的終了判定,并且,若變量剩余,則在步驟S49中選擇調(diào)查對象行內(nèi)下一個變量,使步驟轉(zhuǎn)移至S43。
若對全部變量作調(diào)查,則轉(zhuǎn)至步驟S47。步驟S47的工作是判定是否對在行顯示部209顯示的程序全行調(diào)查結(jié)束的宗旨終了的判定,若不是那樣,則在步驟S48中使調(diào)查對象行進入下一行、轉(zhuǎn)至步驟S43。
顯示順序切換部213,作根據(jù)用戶要求的程序行顯示切換。這里,所謂“用戶要求”有二種,即“用程序順序號顯示”的宗旨要求和“用由最佳化替換行的結(jié)果的順序顯示”的宗旨要求。如果有“用由最佳化替換行的結(jié)果順序顯示”要求時,顯示順序切換部213從原語存儲部102,得到表示哪行向哪行后面移動的行移動原語,按原語在向行移動之后作行顯示。而且同樣,還替換行信息顯示部210及操作可能變量顯示部211的行顯示順序。
變量自動顯示部214使用原語合成部和變量操作部顯示執(zhí)行停止的行的變量值和最佳化過程。
連鎖顯示控制部215實施為使用戶馬上理解斷點周圍的執(zhí)行碼及程序的對應關系的顯示控制。與此同時,在變更顯示開始行時,使程序和執(zhí)行碼兩者開始位置一起變更。并且,作為顯示哪一行的指定方法,規(guī)定使用稱為光標移動鍵的鍵進行變更。在光標移動鍵中,用光標上移動鍵和光標下移動鍵。
如若用戶指定要使程序和執(zhí)行碼兩者連鎖顯示,則開始圖14A及圖14職的程序方框的處理。在步驟S51中分成2個顯示區(qū)域,設置顯示由程序存儲部101得到的程序的程序顯示框和顯示由生成碼存儲部103得到的執(zhí)行碼的執(zhí)行碼顯示框。
在步驟S52,通過顯示開始行=(執(zhí)行停止行-3)的式子得到顯示開始位置,設定行顯示部209的程序顯示開始行。若規(guī)定現(xiàn)在停止位置在圖9A的顯示例中為line 10,則設連鎖顯示的程序顯示的顯示開始位置為line7。
在步驟S53中,從行地址存儲部1041得到對應于設定的程序顯示開始行的執(zhí)行碼的地址,設定成行顯示部209執(zhí)行碼顯示的顯示開始地址。從調(diào)整信息存儲部104的行和地址信息得到line 7的地址值,得知地址為0×108。然后對行顯示部209作指示,通過line 7顯示程序,對執(zhí)行碼通過0×108開始作顯示。
在步驟S54中,在行顯示部209的程序顯示中,作為顯示初期倒置位置,使成為執(zhí)行停止位置的行倒置。使執(zhí)行停止位置line 10倒置。
在步驟S55中,從行地址存儲部1041得到對應設定了的程序顯示倒置行的執(zhí)行碼地址,使行顯示部209的其地址執(zhí)行碼倒置。通過調(diào)整信息存儲部104,得到line 10的地址0×120,對行顯示部209作出指定,要倒置顯示0×120的位置。圖15A是作上述倒置顯示后的顯示例。
在步驟S56中,在行顯示部209中把表示停止位置的箭頭設定成現(xiàn)在停止的行。由于現(xiàn)在停止位置是行l(wèi)ine 10,所以在line 10中顯示表示停止位置的箭頭。
對于連鎖顯示控制部215,用圖14B的程序方框圖說明光標上移鍵、光標下移鍵被按下時的算法。
步驟S57及S58分別是用于光標上移鍵、光標下移鍵按下檢測的步驟。
若檢測光標下移鍵按下,則在步驟S59中,把行顯示部209的程序顯示倒置變更為一行之下,相反,若檢測光標上移鍵的按下,則在步驟S62中,把行顯示部209的程序顯示倒置變更為一行之上。
S60及S63是這樣的步驟,用于檢測倒置行在行顯示部209的上方是否找到,或倒置行在行顯示部209的下方是否找到。其中圖15A的顯示例中,行顯示部209因被分成程序框和執(zhí)行碼框,所以行顯示部209的程序框被縮成從行l(wèi)ine 8至line 13的范圍。如此被壓縮,由于倒置行在上下方向變得容易溢出,所以利用步驟S60及S63檢測其溢出的有無。
步驟S61及S64是在步驟S60及S63中檢測溢出時的處理,在步驟S60中,若檢測到上下方向溢出,則在步驟S61中使行顯示部209的程序顯示開始行增加一行。在圖15A的一例中通過從行l(wèi)ine 8至行l(wèi)ine13的范圍,在下方倒置行溢出情況下,增加程序顯示開始行,使成為行l(wèi)ine 9,借此,從line 95行范圍,即在行顯示部209上顯示從行l(wèi)ine9至行l(wèi)ine 14。以此,程序顯示渦旋向下。
在步驟S63中當檢出上方溢出,則在步驟S64中,使行顯示部209的程序顯示的開始行減一行。當通過從line 8至line 13的范圍在上方倒置行溢出情況下,使程序的顯示開始行減少,成為行l(wèi)ine 7,從該開始行5行的范圍,即在行顯示部209上顯示從行l(wèi)ine 7至line 12。使程序顯示向下渦旋。
其中成問題的是新的倒置行或開始行已經(jīng)移動或被削除,不存在于行地址存儲部1041的情況。連鎖顯示控制部215要考慮象這樣不存在于行地址存儲部1041的情況。
即在步驟S65,判定在調(diào)整信息存儲部104的行地址存儲部1041中是否存儲相當于開始行的地址,如果存儲著,則通過行地址存儲部1041得到對應于設定了的程序顯示開始的執(zhí)行碼地址,設定為行顯示部209的執(zhí)行碼顯示的顯示開始地址。
在步驟S66,判定是否在調(diào)整信息存儲部104的行地址存儲部1041中存儲著相當于開始行或倒置行的地址,若存儲著,則通過行地址存儲部1041得到對應于設定的程序顯示的倒置行的執(zhí)行碼的地址,在行顯示部209的執(zhí)行碼顯示中倒置。
在步驟S67,在行顯示部209把表示執(zhí)行停止位置的箭頭設定在現(xiàn)在停止的位置。
而且考慮到操作者想查看程序顯示的上部,決定按下光標上移鍵。在步驟S58檢測該按下、在步驟S62,連鎖顯示控制部215把行顯示部209的程序顯示的倒置從line 10變至line 9。
步驟S63中在確認無顯示溢出之后,在步驟S65雖然從調(diào)整信息存儲部104的行地址存儲部1041要得到相當于line 9的地址,但因不存在,所以不作行顯示部209的執(zhí)行碼顯示部209的執(zhí)行碼顯示的倒置。
再有考慮到用戶想查看程序顯示的上部,按下光標上移鍵。在步驟S58若檢測該按下,則連鎖顯示控制部215在步驟S62中把行顯示部209的程序顯示倒置從line 9變至line 8。在步驟S63確認倒置行納入程序顯示內(nèi)之后,在步驟S65確認相當于line 8的地址存在于作為0×118的行地址存儲部1041中。確認之后,把執(zhí)行碼的顯示的倒置從0×120的位置變至0×118。該結(jié)果見圖15B。
并且,考慮到用戶想查看程序顯示的上部,按下光標上移鍵。由于行顯示的開始行和倒置位置已經(jīng)相同,所以在步驟S58中一旦作該按下檢測,則在步驟62倒置行增加一行。其后,在步驟S63雖然檢測倒置行是否從程序顯示溢出,但由于倒置行l(wèi)ine 7使開始行l(wèi)ine 8減少,所以被判定程序顯示溢出。象這樣若判定溢出,則使顯示部209的程序的顯示開始行變更為line7。
變更之后,在步驟S65中,在調(diào)整信息存儲部104的行地址存儲部1041中,確認存在相當于line 7的址0×108,將行顯示部209的執(zhí)行碼的顯示開始地址變更為0×108。然后,把行顯示部209的程序顯示倒置從line8變至line7,執(zhí)行碼的倒置從0×118位置變至0×108。其結(jié)果,調(diào)整裝置的顯示見圖15C。
根據(jù)如上所述的本實施例,程序變換裝置雖然對高級語言狀態(tài)的程序作了強有力的最佳化,可是由于將其履歷作為原語,源碼正文用記述的行單元表達,所以可以很分明地作高級語言狀態(tài)的源碼正文和各執(zhí)行碼的對應。調(diào)整裝置雖然通過用戶接受行指定及變量指定,但參照在原語存儲部102上的原語,其行及變量象哪個被最佳化向用戶反饋,程序可以一邊著意最佳化過程,一邊以高級語言級作動作檢證。
并且在本實施例的程序變換裝置的原語生成部107中,使用稱為變量置換、變量削除、變量資源、行削除、行移動的通用性高級信息表達最佳化過程,所以在最佳化部106即使導入新的最佳化項目,通過使予先準備的原語組合也能表達最佳化過程。
并且,在本實施例的調(diào)整裝置的變量操作部207中,在變量被置換成其他變量情況下,雖然對置換的結(jié)果變量設定變量值,但在輸出部208對用戶也可能限于提出警告“因作置換不能設定”。
并且,在變量操作部207,操作對象即使是置換端(置換先)的變量、置換源(置換元)的變量的任一個,也可能發(fā)出警告。該情況下變量x被置換成變量y,用戶要對變量y操作的情況下,通過在輸出部208對用戶發(fā)出“變量y通過變量x被參照。變量x之值也改變”,用戶照樣不理解,可防止使置換源的變量值改變。
并且,對于置換的結(jié)果變量在用戶要設定變量值時,變量操作部207對輸出部208,通過發(fā)出警告“變量通過其他變量被參照”,可防止用戶出差錯同時也使其他變量改變。
并且,在斷點設定部203中,作為削除設定的行的行的情況下,對輸出部208也可顯示成“因削除,斷點未能設定”。
并且,在操作可能變量顯示部211中,雖然作為可操作做標記也顯示置換了的變量,但也可能確保在棧中或僅使資源分配的變量作標記。
在移動削除變量判定部202,雖然把移動、削除行中包括的變量和削除的變量作為調(diào)查對象,但是也把置換了的變量作為對象,借此,要對在其他行中置換了的變量操作情況下,能向用戶發(fā)出警告。
在行顯示部209,用最佳化了的行的順序號顯示情況下,雖然根據(jù)移動的結(jié)果顯示控制行,但沒有顯示削除了的行,借此,能表達最佳化結(jié)果。并且有關變量當置換了的變量存在的情況下,通過用置換了的結(jié)果變量顯示程序,可清楚展示變量被置換成什么。
第2實施例第2實施例展示了一種結(jié)構(gòu),即使在運算式被置換成暫時變量的情況下,也能容易地終止變量操作。圖16是第2實施例的程序變換裝置作成碼生成對象的程序例子。
付本傳輸最佳化部1063在圖16的行l(wèi)ine 5中從變量t1向變量x作代入,分析變量x的行l(wèi)ine 6中與即值“0”作比較的程序內(nèi)容。分析該內(nèi)容的付本傳輸最佳化部1063若把行l(wèi)ine 5的變量x置換成變量t1,則考慮從行l(wèi)ine 2的變量t1向變量x的代入可削除。然后,可把行l(wèi)ine 5的賦值語句“if(x)”的程序變量x置換成暫時變量t1,形成line 5的賦語句“if(t1)”。
當付本傳輸最佳化部1063的置換一結(jié)束,則公共部分形成最佳化部1061分析行l(wèi)ine 5-行l(wèi)ine 9,行l(wèi)ine 7“y=x+3”和行l(wèi)ine 9“z=x+3”其右邊都為“x+3”,在該不變的狀態(tài)下,了解到使稱為“x+3”的計算重復2次。為了避開象這樣同樣內(nèi)容計算的冗余重復,生成把右邊“x+3”代入暫時變量t2的賦值語句“t2=x+3”,同時,把line 9的右邊“x+3”置換成暫時變量t2。借此,相同內(nèi)容計算2次重復用新生成的“t2=x+3”的1次可解決,置換后啟動無用碼最佳化部1065,無用碼最佳化部1065削除通過置換變得冗余的行l(wèi)ine 5內(nèi)的賦值語句“x=t1”。
原語存儲部102存儲由付本傳輸最佳化部1063所作的最佳化信息。圖17B是原語存儲部102之內(nèi)容。參照圖17B,了解到行l(wèi)ine 6的變量x被置換成變量t1,并且,行l(wèi)ine 7、行l(wèi)ine 9的運算式“x+3”被置換成變量t2。在圖17D中表示對于圖17A碼生成部110生成的執(zhí)行碼。圖17C中表示對于圖17A行-地址信息生成部111生成的行-地址間對應關系。
第2實施例的變量操作部207根據(jù)圖18A、18B所示的方框流程進行變量操作。參照圖18A的流程方框說明第2實施例的變量操作部207的處理。在圖18A的流程方框步驟S71中,變量操作部207等待來自輸入部201的變量名及操作類別的指示。
要參照行l(wèi)ine 6的變量x之值,用戶作出指定,對于輸入部201的命令總線參照行l(wèi)ine 7變量x之值。象這樣為進行向輸入部201的輸入,則在步驟S72,變量操作部207參照存儲在原語存儲部102中的原語,對輸入部201判定用戶指定的變量被置換成什么。然后在步驟S73中,判定變量是否被置換成暫時變量,在步驟S81判定包括指定的變量x的運算式a(x)是否被置換成暫時變量。這時用戶對輸入部201指定的行l(wèi)ine 7中,變量x存在于運算式“x+3”內(nèi),“x+3”因置換成暫時變量“t2”,所以步驟S73為NO,步驟S81為yes,向步驟S82轉(zhuǎn)換。在步驟S82中,變量操作部207從存儲在原語存儲部102中的原語中得到運算式置換單位(置換先)的暫時變量名t2。在行l(wèi)ine 7中,運算式“x+3”因被置換成作為暫時變量的暫時變量t2,所以得到暫時變量t2。
接著在步驟S83,變量操作部207判定是否參照用戶對輸入部201指定了的操作種類。該情況下由于參照,所以在步驟S84中,從原語存儲部102得到分配給得到的暫時變量的資源。
圖17B中表示的行l(wèi)ine 7的原語暫時變量t2一旦被參照,則可了解到暫時變量t2被分配給數(shù)據(jù)寄存器D1。象這樣,一旦弄清是數(shù)據(jù)寄存器D1,則在碼執(zhí)行部206中查詢資源保持值。其中碼執(zhí)行部206在現(xiàn)實的硬件環(huán)境中,各寄存器的值是圖19A所示的情況下,顯然數(shù)據(jù)寄存器D1的保持值為“15”。這樣,一旦獲得調(diào)整裝置的保持值,則,在步驟S86中,把原語中所含的運算式a(x)的運算結(jié)果作為其資源的保持值,在運算式中火車作為被算子使用的變量x之值倒過來算。暫時變量t2值為“15”,置換源(置き換え元)的運算式為“x+3”。并且,在原語存儲部102中存儲著的原語中,由于“x+3=t2”關系成立,所以“x”之值為“12”。
象這樣獲得倒算結(jié)果,如圖19B所示,使變量x之值顯示在輸出部208中。
接著查看該值,用戶決定對輸入部201實施操作,要把變量x設定成“20”。這種情況與前次的動作一樣,步驟S73為NO,步驟S81為yes,經(jīng)過步驟S82雖然轉(zhuǎn)移到步驟S83,但這次由于設定操作種類,所以為NO,轉(zhuǎn)至步驟S88。在步驟S88,變量操作部207從輸入部201接受要求值“20”,將此作為變量x之值代入運算式a(x),算出運算式a(x)的運算結(jié)果。由于“x+3=t2”的關系成立,所以運算式9(x)的運算結(jié)果為“23”,暫時變量t2值為“23”。這樣一旦算出暫時變量值,則在步驟S90中,從原語存儲部102得到分配給運算式a(x)的置換端(置換先)暫時變量的資源數(shù)據(jù)寄存器D1,命令要把運算式a(x)的運算結(jié)果設定在資源數(shù)據(jù)寄存器D1之中。這樣,數(shù)據(jù)寄存器D1之值如圖21C所示,被更新成“23”。
以上雖然是置換成運算式情況下的處理,但也說明僅僅被置換成暫時變量情況下的處理。該情況在步驟S73中是yes,變量操作部207從存儲在原語存儲部102中存儲的原語得到暫時變量名。然后,通過原語存儲部102得到分配給在步驟S74中獲得的暫時變量的資源。
若參照操作種類,則在碼執(zhí)行部206中查詢獲得的資源保持值,使其資源值顯示在輸出部208中,若設定操作種類,則從輸入部201接受要求值,命令在碼執(zhí)行部206上將其值設定成上述資源。
如上所述,根據(jù)本發(fā)明,利用程序變換裝置的最佳化功能,即便是把包括程序變量的形式置換成暫時變量情況下,用戶也能參照存在于自己記述的程序內(nèi)的變量值,并且,能作對其變量值的設定。
此外在本實施例中,雖然展示了對包括在置換成暫時變量的程序式子中的變量作參照之例子,但對于輸入部輸入的值,變量操作部207計算暫時變量之值,通過變量操作部設定,也可設對程序變量的值。
并且,在本實施例,在調(diào)整裝置中,通過原語存儲部102得到表示程序變量和暫時變量關系的計算式,得到暫時變量分配給哪個資源的信息,首先通過程序變量檢索包括在式子中的暫時變量名,接著雖然通過暫時變量名檢索資源名,但予先在程序變換裝置中,檢索原語存儲部102,得到程序變量和資源名的關系,也可是把表示變量和資源名關系的式子存儲在原語存儲部102中。這時,在調(diào)整裝置中,僅參照存儲在原語存儲部102上的式子,就能獲得程序變量位于哪個資源的信息。
權(quán)利要求
1一種程序開發(fā)系統(tǒng),包括監(jiān)視由多個源碼正文組成的源文件的翻譯處理,生成調(diào)整用信息的調(diào)整信息生成裝置,和進行由翻譯處理得到的機器語言程序的動作檢證的調(diào)整裝置;其特征是,調(diào)整信息生成裝置包括以下部分第1判定部分,在對翻譯處理時變換成內(nèi)部表達的源文件進行最佳化處理期間,在每行判定對源文件中哪一個碼作了規(guī)定的編輯內(nèi)容;生成部分,當判定為進行了規(guī)定的編輯內(nèi)容情況下,通過包括對應于其碼的源碼正文的行的行號碼、和編輯內(nèi)容及編輯前后碼的編組,生成表示編輯前后變遷的變遷信息;調(diào)整裝置包括以下部分命令接受部分,接受作為對翻譯后機器語言程序的動作驗證用命令的調(diào)整命令;分析部分,分析調(diào)整命令的內(nèi)容,若在調(diào)整命令內(nèi)編輯前包括對碼的指示,則根據(jù)包括同碼的全部變遷信息,分析根據(jù)所述編輯的所述編輯前碼的變遷原委;第1顯示部分,顯示分析了的變遷原委;動作驗證部分,在構(gòu)成機器語言程序的多個執(zhí)行碼內(nèi),參照由分析部分析了的變遷原委,檢測相當于調(diào)整命令的內(nèi)容,對檢出了的執(zhí)行碼進行動作驗證。
2如權(quán)利要求1的程序開發(fā)系統(tǒng),其特征是第1判定部分包括以下部分第1判定部,作為第1編輯內(nèi)容,判定是否進行利用最佳化處理,將源碼正文中的變量置換成其他變量或常數(shù)的宗旨的編輯內(nèi)容;第2判定部,作為第2編輯內(nèi)容,判定是否進行編輯內(nèi)容,所述編輯內(nèi)容的宗旨是利用最佳化處理把源碼正文中的運算式置換成其他變量或常數(shù);第3判定部,作為第3編輯內(nèi)容,判定是否進行利用最佳化處理,把源碼正文向其他行移動的宗旨的編輯內(nèi)容;第4判定部,作為第4編輯內(nèi)容,判定是否進行利用最佳化處理,削除源碼正文的宗旨的編輯內(nèi)容;生成部分包括以下部分第1生成部,若進行第1編輯內(nèi)容的編輯,則產(chǎn)生包括以下內(nèi)容的第1變遷信息,其中有該源碼正文存在的行的行號碼,和置換前的變量名,和置換后的變量名或常數(shù)名,和表示對那些作置換的宗旨的識別信息;第2生成部,若進行第2編輯內(nèi)容的編輯,則產(chǎn)生包括以下內(nèi)容的第2變遷信息,其中有該源碼正文存在的行的行號碼,和置換前的運算式和置換后的變量名或常數(shù),和表示對那些作置換的宗旨的識別信息;第3生成部,若進行第3編輯內(nèi)容的編輯,則生成包括以下內(nèi)容的第3變遷信息,其中有其源碼正文存在的開始行的行號碼,和其源碼正文移動后的行的行號碼,和表示進行移動的宗旨的識別信息;第4生成部,若進行第4編輯內(nèi)容的編輯,一旦由最佳化處理削除源碼正文,則產(chǎn)生包括以下內(nèi)容的第4變遷信息,其中有其源碼正文的行號碼、和表示削除其源碼正文的宗旨的識別信息。
3如權(quán)利要求2的程序開發(fā)系統(tǒng),其特征是調(diào)整信息生成裝置還包括以下部分第1檢測部分,當?shù)?生成部產(chǎn)生第3變遷信息,則通過第2生成部在這以前生成的第1、第2變遷信息內(nèi),檢出與包括在該第3變遷信息中的源碼正文的移動開始行號碼具有同一行號碼的;第1削除部分,削除檢出的第1、第2變遷信息。
4如權(quán)利要求3的程序開發(fā)系統(tǒng),其特征是調(diào)整信息生成裝置還包括以下部分第2檢測部分,當?shù)?生成部生成第4變遷信息,則檢出第1、第2變遷信息,這些信息具有與包括在第4變遷信息中的源碼正文存在的行的行號碼相同的行號碼;第2削除部分,削除檢出的第1、第2變遷信息。
5如權(quán)利要求2的程序開發(fā)系統(tǒng),其特征是調(diào)整裝置包括以下部分變遷信息存儲部分,存儲由第1-第4生成部生成的第1-第4變遷信息;分配信息存儲部分,存儲由源碼正文存在的行的行號碼和變量名-資源名排列,表達哪行的源碼正文內(nèi)的變量分配給哪個硬件資源的分配信息;分析部分包括以下部分第1解釋部,解釋包括在調(diào)整命令內(nèi),應讀入保持值的變量名的指示;第1檢測部,如果把第1變遷信息及第2信息存儲在變遷信息存儲部中,則對此作檢測,其中所述第1及第2變遷信息是把由第1解釋部解釋的變量作為置換前變量或置換后變量指定的;第2檢測部,如果把包括置換后變量名的分配信息存儲在分配信息存儲部中,則對此作檢測,所述置換后變量名包括在檢出的第1變遷信息及第2變遷信息中;動作驗證部分包括以下部分合成部,把檢出的第1變遷信息、第2變遷信息及分配信息合成在由包括那些的資源名,和置換前變量名,和置換后變量名組成的分配信息中;讀入部,如果包括讀入指示,則讀入用合成的分配信息內(nèi)的資源名指示的硬件資源值;第1顯示部分包括以下部分第1顯示部,若作硬件資源讀入,則顯示將置換前變量置換成置換后變量的宗旨信息,和作為同時通過硬件資源讀入那些組的值的宗旨。
6如權(quán)利要求5的程序開發(fā)系統(tǒng),其特征是調(diào)裝置包括以下部分,分析部分包括以下部分第2解釋部,解釋包括在調(diào)整命令內(nèi),應寫入要求值的變量名的指示;第1檢測部,若將第1變遷信息、第2變遷信息存儲在調(diào)整信息存儲部,則對此作檢測,所述變遷信息是把由操作者指示的變量作為置換前變量或置換后變量指定的;第2檢測部,如果包括置換后變量名的分配信息存在,則對此作檢測,置換后變量名包括在檢出了的第1變遷信息、第2變遷信息中;合成部,把被檢出的第1、第2變遷信息及分配信息合成于由包括那些的資源名、和置換前變量名、和置換后變量名組成分配信息中;動作驗證部分包括以下部分寫入部,若操作者的指示是寫入指示,則在用合成了的分配信息內(nèi)硬件名指示的硬件資源中寫入要求值;第1顯示部分包括以下部分第2顯示部,若作硬件資源的寫入,則顯示信息,所述信息表示將置換前變量置換后變量的宗旨,和由這些置換前變量、置換后變量組成的變量組同時被設定為有關要求值的宗旨。
7如權(quán)利要求6的程序開發(fā)系統(tǒng),其特征是調(diào)整裝置包括以下部分行-地址信息存儲部分,存儲由源碼正文存在的行的行號碼和有關執(zhí)行碼地址表達哪行源碼正文被置換成哪個執(zhí)行碼的行-地址信息;第3解釋部,解釋包括應該讀寫的變量的源碼正文的行號碼;動作驗證部分包括以下部分第1取出部,取出對應于由第3解釋部解釋的行號碼的執(zhí)行碼地址;第2取出部,作為具有對應于取出的地址的行號碼的分配信息,取出在由合成部合成的分配信息中展示的資源的資源名;第1地址確定部,把取出的地址作為斷點設定單位(設定先)地址確定;執(zhí)行部,實施機器語言程序,直到確定了的斷點設定單位地址;讀入部及寫入部,根據(jù)執(zhí)行部的機器語言執(zhí)行之后,實施對于用取出的資源名指示的硬件資源的讀寫。
8如權(quán)利要求7的程序開發(fā)系統(tǒng),其特征是調(diào)整位置包括以下部分,分析部分包括以下部分第5判定部,當應讀入值的變量指示或應寫入要求值的變量的指示由第2解釋部解釋,則判定參照第3變遷信息,包括那些變量的源碼正文是否已移動;第6判定部,若應讀入值的變量指示或應寫入要求值的變量指示由第1、2解釋部被解釋,則參照第4變遷信息,判定包括操作者指定了的變量的源碼正文是否已削除;第1顯示部分包括以下部分第1警告部,在移動情況下,由于其源碼正文從有關行移動,所以向操作者警告指示的讀寫沒能進行的意思;第2警告部,在作削除的情況下,由于其源碼正文從有關行被削除,所以向操作者警告指示的讀寫沒能進行的意思;第3警告部,雖然沒有作移動及削除,但當包括由第2檢測部檢測的第1變遷信息、第2變遷信息中所含的置換后變量名的分配信息不存在情況下,警告有關其變量的讀寫不進行的意思。
9如權(quán)利要求8的程序開發(fā)系統(tǒng),其特征是分析部分包括以下部分第4解釋部,解釋執(zhí)行任一調(diào)整命令中所含機器語言程序的意思的指示,和應設定斷點的行的指示;第7判定部,參照第3、4變遷信息,判定指示的行的源碼正文移至其他行還是存在于原來的行;第1顯示部分包括以下部分告知部,向其他行移動情況下,告知移動單位的行號碼和在其移動單位設定斷點的意思;動作驗證部分包括以下部分第1地址確定部,在存在于原來行的情況下或被削除情況下,根據(jù)存儲部中存儲的移動單位的行號碼的源碼正文和執(zhí)行碼的對應關系,確定斷點設定單位的地址;第2地址確定部,當判定為向其他行移動情況下,根據(jù)存儲部中存儲部移動單位的行號碼的源碼正文和執(zhí)行碼的對應關系,確定斷點設定單位地址;執(zhí)行部,執(zhí)行機器語言程序,達到確定的斷點設定單位地址。
10如權(quán)利要求5的程序開發(fā)系統(tǒng),其特征是調(diào)整裝置包括以下部分函數(shù)指定接受部分,在源文件中通過操作者接受應作動作驗證的函數(shù)指定;第2顯示部分,在包括在接受的函數(shù)內(nèi)的多個源碼正文內(nèi)摘錄一部分,顯示于規(guī)定的窗口中;第3顯示部分,在包括于機器語言程序中的多個執(zhí)行碼內(nèi),在顯示于窗口內(nèi)的源碼正文的規(guī)定方向上配置,顯示對應于窗口顯示的內(nèi)容;調(diào)整命令接受部分,接受指示顯示的任一個源碼正文的調(diào)整命令;調(diào)整信息生成裝置進一步還包括以下部分第1修飾部分,當把任何行作為斷點設定單位,調(diào)整命令接受部接受指示了的調(diào)整命令,則修飾由第2顯示部顯示的窗口內(nèi)有關源碼正文顯示;第2判定部分,當由第1修飾部分修飾任一行,則判定修飾了的源碼正文對應于哪個地址的執(zhí)行碼;第2修飾部分,修飾通過由第3顯示部分顯示的窗口內(nèi)的第2判定部判定的地址執(zhí)行碼顯示。
11如權(quán)利要求10的程序開發(fā)系統(tǒng),其特征是調(diào)整裝置包括以下部分第3檢測部分,當函數(shù)指定接受部從操作者接受應作動作驗證的函數(shù)指定,則在其函數(shù)中包括的源碼正文內(nèi),檢測在第3變遷信息中作為移動源的源碼正文指定的部分。第4檢測部分,若函數(shù)指定接受部通過操作者接受應作動作驗證的函數(shù)指定,則在其函數(shù)中包括的源碼正文內(nèi),檢測在第4變遷信息中作為削除的源碼正文指定的部分;第1標記附加部分,在由第3檢測部分檢出的所有行上作出顯示,其源碼正文要附加移動的宗旨標記;第2標記附加部分,在由第4檢測部分檢出的所有行上作出顯示,其源碼正文要附加削除了的宗旨標記。
12如權(quán)利要求11的程序開發(fā)系統(tǒng),其特征是調(diào)整裝置包括以下裝置第5檢測部分,全部檢測包括在由函數(shù)指定部指定了的函數(shù)中的變量;第6檢測部分,檢測包括檢出的變量的第1變遷信息、及分配信息;配置部分,作出顯示,要使檢出的分配信息中所含的資源名、置換前變量、置換后變量、置換那些的宗旨在包括被檢出的各個變量的源碼正文的一定方向上配置。
13如權(quán)利要求12的程序開發(fā)系統(tǒng),其特征是調(diào)整裝置包括以下部分第3判定部分,參照包括所述源碼正文中各變量的分配信息,判定對應于那些變量的資源的可讀入部分;記號配置部分,在包括判定為可能的變量的源碼正文上作出顯示,要配置表示可能的記號。
14如權(quán)利要求5的程序開發(fā)系統(tǒng),其特征是包括以下部分計數(shù)部分,當把第1-第4變遷信息及分配信息存儲在存儲部中,則對其信息量作計數(shù);控制部分,當計數(shù)的信息量為規(guī)定基準以下,則控制合成部分,使得在變遷信息存儲部分及分配信息存儲部分中存儲著的第1變遷信息及分配信息與由那些包括著的資源名,和置換前變量名和置換后變量名組成的分配信息合成。
15如權(quán)利要求5的程序開發(fā)系統(tǒng),其特征是調(diào)整裝置包括以下部分計數(shù)部,當把第1-第4變遷信息及分配信息存儲在存儲部分中,則對源碼正文的行數(shù)作計數(shù);控制部分,若計數(shù)的行數(shù)為規(guī)定的基準以下,則控制合成部分,使把變遷信息存儲部分及分配信息存儲部分中存儲了的第1變遷信息及分配信息與由那些包括的資源名,和置換前變量名、和置換后變量名組成的分配信號合成。
16如權(quán)利要求5的程序開發(fā)系統(tǒng),其特征是調(diào)整裝置包括以下部分計數(shù)部分,對執(zhí)行碼的碼大小作計數(shù);控制部分,當計數(shù)了的碼大小為規(guī)定基準以下,則對合成部分作控制,使變遷信息存儲部分及分配信息存儲部分中存儲著的第1變遷信息及分配信息與由那些包括的資源名、和置換前變量名、和置換后變量名組成的分配信息合成。
17一種調(diào)整信息生成裝置,監(jiān)視由多個源碼正文組成的源文件翻譯處理,生成調(diào)整用信息,其特征是,調(diào)整信息生成裝置包括以下部分第1判定部分,對于在翻譯處理時變換成內(nèi)部表達的源文件所作最佳化處理期間,逐行判定對于源文件中哪個碼作規(guī)定編輯內(nèi)容;生成部分,在判定為作規(guī)定編輯內(nèi)容情況下,通過包括對應于其碼的源碼正文的行的行號碼、和編輯內(nèi)容、和編輯前后的碼的編組,生成表示編輯前后變遷的變遷信息;所述第1判定部分包括以下部分第1判定部,作為第1編輯內(nèi)容,判定是否作通過最佳化處理把源碼正文中變量置換成其他變量或常數(shù)的宗旨的編輯內(nèi)容;第2判定部,作為第2編輯內(nèi)容,判定是否作通過最佳化處理把源碼正文中的運算式置換成其他變量或常數(shù)的宗旨的編輯內(nèi)容;第3判定部,作為第3編輯內(nèi)容,判定是否作通過最佳化處理使源碼正文向其他行移動的宗旨的編輯內(nèi)容;第4判定部,作為第4編輯內(nèi)容,判定是否作由最佳化處理削除源碼正文的宗旨的編輯內(nèi)容;生成部分包括以下部分第1生成部,當實施第1編輯內(nèi)容的編輯,則生成包括以下部分的第1變遷信息有關源碼正文存在的行的行號碼、置換前的變量名、置換后的變量名或常數(shù)名、和表示置換那些的宗旨的識別信息;第2生成部,當進行第2編輯內(nèi)容的編輯,則生成包括以下部分的第2變遷信息有關源碼正文存在的行的行號碼、置換前的運算式和置換后的變量名或常數(shù)、表示置換那些的宗旨的識別信息;第3生成部,當進行第3編輯內(nèi)容的編輯,則生成包括以下部分的第3變遷信息;其源碼正文存在的原來行的行號碼、其源碼正文移動后的行的行號碼、表示移動進行宗旨的識別信息;第4生成部,當作第4編輯內(nèi)容的編輯,一旦通過最佳化處理削除源碼正文,則生成包括其源碼正文的行號碼、和表示削除其源碼正文的宗旨的識別信息。
18如權(quán)利要求17的調(diào)整信息生成裝置,其特征是還包括以下部分第1檢測部分,當?shù)?生成部生成第3變遷信息,則通過第1、2生成部,在在此之前生成的第1、2變遷信息內(nèi),檢測有與在該第3變遷信息中包括的源碼正文移動源的行號碼同樣行號碼的部分;第1削除部分,削除檢測了的第1、2變遷信息。
19如權(quán)利要求18的調(diào)整信息生成裝置,其特征是還包括以下部分第2檢測部分,當?shù)?生成部生成第4變遷信息,則檢測與第4變遷信息中含有的源碼正文存在的行的行號碼有同一行號碼的第1、2變遷信息;第2削除部分,削除檢出了的第1、2變遷信息。
20一種調(diào)整裝置,翻譯由多個源碼正文組成的源文件,作得到的機器語言程序的動作驗證,其特征是,源文件在翻譯處理時轉(zhuǎn)換成內(nèi)部表達的狀態(tài)中,作好規(guī)定的編輯內(nèi)容,調(diào)整裝置包括以下部分存儲部分,通過包括對應于作規(guī)定編輯內(nèi)容的碼的源碼正文的行的行號碼、編輯內(nèi)容、編輯前后碼的編組,存儲表示編輯前后的變遷的變遷信息;命令接受部分,對翻譯后的機器語言程序,接受作為動作檢證用命令的調(diào)整命令;分析部分,解釋調(diào)整命令的內(nèi)容,若在調(diào)整命令內(nèi)包括對編輯前碼的指示,則根據(jù)包括同碼的所有變遷信息,分析根據(jù)所述編輯的所述編輯前碼的變遷原委;第1顯示部分,顯示分析了的變遷原委;動作驗證部分,在構(gòu)成機器語言程序的多個執(zhí)行碼內(nèi),參照由分析部分析的變遷原委檢測相當于調(diào)整命令的執(zhí)行碼,對檢測了的執(zhí)行碼作動作驗證。
21如權(quán)利要求20的調(diào)整裝置,其特征是存儲部分包括以下內(nèi)容變遷信息存儲部分,存儲由第1-4生成部生成的第1-4變遷信息;分配信息存儲部分,存儲由源碼正文存在的行的行號碼和變量名-資源名的排列表達哪行源碼正文內(nèi)變量分配給哪個硬件資源的分配信息;分析部分包括以下部分第1解釋部,解釋包括在調(diào)整命令內(nèi)的應讀入保持值的變量名的指示;第1檢測部,若在變遷信息存儲部分存儲把通過第1解釋部解釋的變量作為置換前變量或置換后變量指定的第1、2變遷信息,則對此作檢測;第2檢測部,若把包括在檢測的第1、2變遷信息中所含的置換后變量名的分配信息存儲在分配信息的存儲部分中,則對此作檢測;動作檢證部分包括以下部分合成部,將檢出的第1、2變遷信息及分配信息,與由包括那些的資源名、置換前變量名、置換后變量名組成的分配信息合成;讀入部,若包括讀入指示,則讀入用合成的分配信息內(nèi)資源名指示的硬件資源值;第1顯示部分包括以下部分第1顯示部,當進行硬件資源的讀入,則顯示把置換前變量置換成置換后變量的宗旨的數(shù)據(jù),和作為同時通過硬件資源讀入那些組的值的宗旨。
22如權(quán)利要求21的調(diào)整裝置,其特征是包括以下部分,分析部分包括以下部分第2解釋部,解釋包括在調(diào)整命令內(nèi)的應寫入要求值的變量名指示;第1檢測部,若在調(diào)整信息存儲部分中存儲把由作者指示的變量作為置換前變量或置換后變量指示的第1、2變遷信息,則對此作檢測;第2檢測部,若包括在檢出了的第1、2變遷信息中所含的置換后變量名的分配信息存在,則對此作檢測;合成部,把檢出了的第1、2變遷信息及分配信息與由包括那些的資源,置換前變量名、置換后變量名組成的分配信息合成;動作驗證部分包括以下部分寫入部,來自操作者的指示若是寫入指示,則在用合成了的分配信息內(nèi)的硬件名指示的硬件資源上寫入要求值;第1顯示部分包括以下部分第2顯示部,當作硬件資源寫入,則顯示把置換前變量置換后變量的宗旨,和同時把由置換后變量組成的變量組設定成有關要求值的宗旨的信息。
23如權(quán)利要求22的調(diào)整裝置,其特征是包括以下部分;行-地址信息存儲部分,存儲通過源碼正文存在的行的行號碼和有關執(zhí)行碼地址,表達哪行源碼正文被變換成哪個執(zhí)行碼的行地址信息;第3解釋部,解釋包括應讀寫的變量的源碼正文的行號碼;動作驗證部分包括以下部分第1取出部,取出對應于由第3解釋部解釋的行號碼的執(zhí)行碼地址;第2取出部,作為具有對應于取出的地址的行號碼的分配信息,取出在由合成部合成的分配信息中所示的資源的資源名;第1地址確定部,把取出了的地址作為斷點設定前地址確定;執(zhí)行部,執(zhí)行機器語言程,直到確定了的斷點設定前地址。讀入部及寫入部,在根據(jù)執(zhí)行部的機器語言程序執(zhí)行之后,進行對用取出的資源名指示的硬件資源的讀寫。
24如權(quán)利要求23的調(diào)整裝置,其特征是包括以下部分,分析部分包括以下部分第5判定部,當利用第1,2解釋部解釋應讀入值的變量指示或應寫入要求值的變量的指示,則判定是否參照第3變遷信息包括那些變量的源碼正文已經(jīng)移動;第6判定部,當利用第1、2解釋部解釋應讀入值的變量指示或?qū)懭胍笾档淖兞恐甘?,則參照第4變遷信息,判定是否包括操作者指定了的變量的源碼正文已被削除;第1顯示部分包括以下部分第1警告部,在移動情況下,為了其源碼正文被從有關行移動,所以向操作者警告指示的讀寫不進行的宗旨;第2警告部,在削除了的情況下,為了其源碼正文從有關行被削除,所以向操作者警告指示了的讀寫行不進行的宗旨;第3警告部,雖然不作移動及削除,當包括由第2檢測部檢測的第1、2變遷信息中不含的置換后變量名的分配信息不存在情況下,警告有關其變量的讀寫不進行的宗旨。
全文摘要
輸入部201接收變量和值或輸入想使執(zhí)行停止的行。原語合成部204獲得表示最佳化過程的信息履歷。變量操作部207根據(jù)輸入的變量和資源關系得到變量值。輸出部208顯示得到的變量值。操作可變量顯示部211在各行中,在行單位中顯示哪個變量是可參照設定的。最佳化過程顯示部212顯示對有關變量所作的最佳化處理。
文檔編號G06F11/28GK1172304SQ9711320
公開日1998年2月4日 申請日期1997年3月28日 優(yōu)先權(quán)日1996年6月28日
發(fā)明者角史生, 高山秀一, 佐山旬子, 巖村喜之, 永田昭二, 西畑素秀 申請人:松下電器產(chǎn)業(yè)株式會社