国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      程序生成裝置、程序生產(chǎn)方法及程序的制作方法

      文檔序號(hào):6359194閱讀:233來(lái)源:國(guó)知局

      專利名稱::程序生成裝置、程序生產(chǎn)方法及程序的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及參照包含循環(huán)處理的源程序來(lái)生成新的程序的技術(shù)。
      背景技術(shù)
      :已知有參照包含循環(huán)處理的源程序、生成用來(lái)使由該循環(huán)處理實(shí)現(xiàn)的規(guī)定處理由多個(gè)處理器分擔(dān)執(zhí)行的新的程序的編譯器等(例如,專利文獻(xiàn)1)。這里,所謂循環(huán)處理,是將由1個(gè)以上的命令語(yǔ)句構(gòu)成的塊反復(fù)處理N(N^2)次。根據(jù)專利文獻(xiàn)1的技術(shù),例如可以生成將N次的循環(huán)處理分割為各N/2次處理的兩個(gè)部分循環(huán)處理,由兩個(gè)處理器獨(dú)立地并行執(zhí)行而構(gòu)成的新的程序。因而,根據(jù)專利文獻(xiàn)1的技術(shù),能夠?qū)次的循環(huán)處理高速地執(zhí)行?,F(xiàn)有技術(shù)文獻(xiàn)專利文獻(xiàn)專利文獻(xiàn)1日本特許第3028821號(hào)專利文獻(xiàn)2日本特許第3234552號(hào)非專利文獻(xiàn)非專禾丨J文獻(xiàn)1:HansZima等“SupercompiIersforParallelandVectorComputers,,,AddisonWesleyPublishingCompanyInc.,1991,(日文翻譯)村岡洋一:“%—,、一二y^49”,才一厶社,1995發(fā)明概要發(fā)明要解決的技術(shù)問(wèn)題但是,在包含在源程序中的循環(huán)處理中,在具有在有關(guān)第j(i<j^N)次的執(zhí)行的塊內(nèi)的命令語(yǔ)句中參照由有關(guān)第i(l^i<N)次的執(zhí)行的塊內(nèi)的命令語(yǔ)句所定義的變量那樣的相關(guān)關(guān)系的情況下,通過(guò)專利文獻(xiàn)1的方法不能對(duì)應(yīng)。即,在專利文獻(xiàn)1的方法中,不能由包含具有這樣的相關(guān)關(guān)系的循環(huán)處理的源程序生成用來(lái)使用多個(gè)處理器高速地執(zhí)行循環(huán)處理的程序。
      發(fā)明內(nèi)容所以,本發(fā)明是鑒于這樣的問(wèn)題而做出的,目的是提供一種用于對(duì)于通過(guò)參照包含具有上述相關(guān)關(guān)系的循環(huán)處理的源程序,生成用來(lái)使用多個(gè)處理器將循環(huán)處理高速地執(zhí)行的程序的程序生成裝置。用于解決問(wèn)題的手段為了解決上述問(wèn)題,有關(guān)本發(fā)明的程序生成裝置,通過(guò)參照對(duì)象源程序而生成新的程序,該對(duì)象源程序包含將由1個(gè)以上的命令語(yǔ)句構(gòu)成的塊重復(fù)處理N次的循環(huán)處理,該循環(huán)處理的在有關(guān)第i次執(zhí)行的上述塊內(nèi)的命令語(yǔ)句中定義的變量處于被有關(guān)第j次執(zhí)行的上述塊內(nèi)的命令語(yǔ)句所參照的相關(guān)關(guān)系,其中N彡2,1<i<N,i<j<N,其特征在于,該程序生成裝置具備計(jì)算單元,以有關(guān)第i次執(zhí)行的上述塊、和有關(guān)第i次以外的執(zhí)行的1個(gè)以上的上述塊為對(duì)象塊,進(jìn)行計(jì)算該對(duì)象塊中的變量表述的等價(jià)關(guān)系的計(jì)算處理;確定單元,基于上述計(jì)算單元計(jì)算出的變量表述的等價(jià)關(guān)系,對(duì)于上述變量之中的、處于上述相關(guān)關(guān)系的全部的對(duì)象變量的表述,進(jìn)行確定與該對(duì)象變量的表述等價(jià)的不具有上述相關(guān)關(guān)系的其他變量的表述的確定處理;以及生成單元,生成用來(lái)進(jìn)行上述循環(huán)處理的M次的處理的、包含如下命令語(yǔ)句的程序,該命令語(yǔ)句包含有上述確定單元確定的其他變量的表述,其中M彡N。發(fā)明效果具備上述結(jié)構(gòu)的有關(guān)本發(fā)明的程序生成裝置,通過(guò)參照包含具有上述相關(guān)關(guān)系的循環(huán)處理的源程序,能夠生成用來(lái)使用多個(gè)處理器將循環(huán)處理高速地執(zhí)行的程序。圖1是表示包括有關(guān)實(shí)施方式的程序生成裝置100的編譯器系統(tǒng)1000的結(jié)構(gòu)的塊圖。圖2是表示包含循環(huán)處理Rl的部分程序Pl及包含循環(huán)處理R4的部分程序P4的圖。圖3是用來(lái)說(shuō)明數(shù)據(jù)的相關(guān)關(guān)系的圖。圖4是用來(lái)說(shuō)明循環(huán)處理Rl中的數(shù)據(jù)的相關(guān)關(guān)系的圖。圖5是表示由程序生成裝置100進(jìn)行的程序生成處理的流程圖,后接圖6。圖6是表示由程序生成裝置100進(jìn)行的程序生成處理的流程圖,前接圖5,后接圖7。圖7是表示由程序生成裝置100進(jìn)行的程序生成處理的流程圖,前接圖6。圖8是表示循環(huán)處理Rl中的迭代i及迭代i+Ι的圖。圖9是表示將名相關(guān)刪除后的迭代i及迭代i+Ι的圖。圖10是表示計(jì)算關(guān)于將名相關(guān)刪除后的迭代i及迭代i+Ι的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系的結(jié)果的圖。圖11是表示將名相關(guān)刪除后的迭代i+2以及計(jì)算關(guān)于將名相關(guān)刪除后的迭代i+2的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系的結(jié)果的圖。圖12是表示將名相關(guān)刪除后的迭代i+3以及計(jì)算關(guān)于將名相關(guān)刪除后的迭代i+3的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系的結(jié)果的圖。圖13是表示將全部的真相關(guān)刪除后的迭代i+3及迭代變形候選的圖。圖14是表示循環(huán)處理Rl中的迭代02以及將名相關(guān)刪除后的迭代02的圖。圖15是表示計(jì)算關(guān)于將名相關(guān)刪除后的迭代0及1的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系的結(jié)果的圖。圖16是表示計(jì)算關(guān)于將名相關(guān)刪除后的迭代2的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系的結(jié)果的圖。圖17是表示將真相關(guān)刪除后的迭代02及部分程序P2的圖。圖18是表示部分程序P3的圖。圖19是表示循環(huán)處理R5R8的圖。圖20是用來(lái)說(shuō)明進(jìn)行變量表述的等價(jià)關(guān)系的計(jì)算的其他方法的例子的圖。具體實(shí)施例方式以下,參照附圖對(duì)本發(fā)明的實(shí)施方式進(jìn)行說(shuō)明?!秾?shí)施方式》<概要>圖2是表示在處理完成時(shí)、對(duì)于數(shù)組(array)b[k](0彡k彡99)能夠得到相同的處理結(jié)果的等價(jià)的部分程序Pl和P4的圖。有關(guān)實(shí)施方式的程序生成裝置是將以往的編譯器改良的結(jié)構(gòu),是通過(guò)參照包含圖2(a)所示的部分程序Pl的源程序,生成與以往的編譯器通過(guò)參照由編程者預(yù)先生成的包含圖2(b)所示的部分程序P4的源程序而生成得到的匯編程序同樣的匯編程序的裝置。這里,部分程序Pl是包含具有真相關(guān)(truedependence)的關(guān)系的循環(huán)處理Rl的程序。關(guān)于真相關(guān)的關(guān)系,在后面詳細(xì)說(shuō)明,是指由在循環(huán)控制變量k是i(0^i<99)的情況下執(zhí)行的塊(block)Bl內(nèi)的命令語(yǔ)句而定義的變量、由在循環(huán)控制變量k是i+1的情況下執(zhí)行的塊Bl內(nèi)的命令語(yǔ)句來(lái)參照那樣的關(guān)系。具有真相關(guān)的關(guān)系的命令語(yǔ)句間的執(zhí)行順序如果與本來(lái)的執(zhí)行順序逆轉(zhuǎn),則不能得到正確的結(jié)果,所以該循環(huán)處理Rl—般一邊使循環(huán)控制變量k每次增加1一邊依次執(zhí)行。另一方面,包含在部分程序P4中的循環(huán)處理R4是不具有上述那樣的真相關(guān)的關(guān)系的處理。因而,能夠使用多個(gè)處理器執(zhí)行。例如,可以將循環(huán)處理R4分為循環(huán)控制變量k從0到49的部分循環(huán)處理、和循環(huán)控制變量k從50到99的部分循環(huán)處理、使兩個(gè)處理器獨(dú)立地并行執(zhí)行。由此,與用1個(gè)處理器依次執(zhí)行關(guān)于循環(huán)控制變量k從0到99的循環(huán)處理Rl的情況相比,能夠更高速地執(zhí)行循環(huán)處理。如上所述,有關(guān)實(shí)施方式的程序生成裝置通過(guò)參照包含圖2(a)所示的部分程序Pl的源程序,能夠生成與以往的編譯器通過(guò)參照包含圖2(b)所示的部分程序P4的源程序生成而得到的匯編程序同樣的匯編程序。因而,在在如部分程序Pl那樣、已經(jīng)生成了包含具有真相關(guān)的關(guān)系的循環(huán)處理的源程序的情況下,能夠不重新生成如部分程序P4那樣、包含不具有真相關(guān)的關(guān)系的循環(huán)處理的源程序而生成適合于并行執(zhí)行的匯編程序,在這一點(diǎn)上,有關(guān)實(shí)施方式的程序生成裝置是有效的。另外,部分程序Pl雖然如上述那樣包含具有真相關(guān)的關(guān)系的循環(huán)處理R1,但因?yàn)橐韵抡f(shuō)明的理由,可以說(shuō)是與部分程序P4相比更適合于單一的處理器中的高速執(zhí)行的程序。這里,一般已知通過(guò)將程序內(nèi)的變量盡量分配給寄存器、能夠?qū)⒊绦蚋咚俚貓?zhí)行。這是因?yàn)?,與存儲(chǔ)器相比,向寄存器的訪問(wèn)能夠極高速地進(jìn)行。在一般的編譯器中,對(duì)于包含在部分程序Pl中的a0、al、a2那樣的簡(jiǎn)單變量分配特定的寄存器的可能性較高。因而,在執(zhí)行部分程序Pl的情況下,與執(zhí)行部分程序P4的情況相比,能夠減少向存儲(chǔ)器的訪問(wèn)次數(shù)。即,在使用單一的處理器的情況下,部分程序Pl能夠比部分程序P4更高速地執(zhí)行?!磾?shù)據(jù)的相關(guān)關(guān)系〉使用圖3對(duì)于以上述真相關(guān)為代表的數(shù)據(jù)的相關(guān)關(guān)系進(jìn)行說(shuō)明。圖3是用來(lái)說(shuō)明數(shù)據(jù)的相關(guān)關(guān)系的圖。如該圖所示,由命令語(yǔ)句ST100定義的變量a處于被在該命令語(yǔ)句ST100后執(zhí)行的命令語(yǔ)句ST200所參照的關(guān)系。在處于這樣的關(guān)系的情況下,是指具有從命令語(yǔ)句ST100向命令語(yǔ)句ST200的“真相關(guān)”。此外,如該圖所示,被命令語(yǔ)句ST200所參照的變量a,處于在該命令語(yǔ)句ST200后執(zhí)行的命令語(yǔ)句ST300中被定義的關(guān)系。在處于這樣的關(guān)系的情況下,是指具有從命令語(yǔ)句ST200向命令語(yǔ)句ST300的“逆相關(guān)”(anti-d印endence)。此外,如該圖所示,由命令語(yǔ)句ST100定義的變量a,處于在命令語(yǔ)句ST300中被再定義的關(guān)系。在處于這樣的關(guān)系的情況下,是指有從命令語(yǔ)句ST100向命令語(yǔ)句ST300的“輸出相關(guān),,(outputdependence)。此外,以下,將作為真相關(guān)、逆相關(guān)及輸出相關(guān)的發(fā)生原因的變量稱作“作為相關(guān)的原因的變量”。在圖3中,變量a是“作為相關(guān)的原因的變量”。另外,關(guān)于“逆相關(guān)”和“輸出相關(guān)”,已知在處于相關(guān)關(guān)系的各命令語(yǔ)句中,通過(guò)將作為相關(guān)的原因的變量的表述替換為相互不同的表述,能夠?qū)⒃撓嚓P(guān)刪除(例如,參照非專利文獻(xiàn)1的120頁(yè))。因此,有時(shí)將“逆相關(guān)”及“輸出相關(guān)”稱作“名相關(guān)”。以上述部分程序Pl中的循環(huán)處理Rl為例,具體地說(shuō)明數(shù)據(jù)的相關(guān)關(guān)系。圖4是用來(lái)說(shuō)明圖2(a)所示的循環(huán)處理Rl中的數(shù)據(jù)的相關(guān)關(guān)系的圖。以下,將在循環(huán)控制變量是m(m是循環(huán)控制變量能夠取的任意的值)的情況下執(zhí)行的循環(huán)內(nèi)的塊稱作“迭代m”,將生成迭代m稱作“關(guān)于m的迭代展開”,將該m稱作“迭代號(hào)碼,,。圖4(a)表示在圖2(a)所示的循環(huán)處理Rl中的循環(huán)控制變量k是0的情況下執(zhí)行的塊Bl、即迭代0,圖4(b)表示迭代1。這里,由圖4(a)所示的迭代0的命令語(yǔ)句ST12、ST13、ST14分別定義的變量aO、al、a2處于由圖4(b)所示的迭代1的命令語(yǔ)句ST21參照的關(guān)系。此外,由圖4(a)所示的迭代0的命令語(yǔ)句ST13、ST14分別定義的變量al、a2處于由圖4(b)所示的迭代1的命令語(yǔ)句ST22、ST23參照的關(guān)系。S卩,存在以變量aO為相關(guān)的原因的、從命令語(yǔ)句ST12向ST21的真相關(guān)。此外,存在以變量al為相關(guān)的原因的、從命令語(yǔ)句ST13向ST21的真相關(guān)以及從命令語(yǔ)句ST13向ST22的真相關(guān)。此外,存在以變量a2為相關(guān)的原因的、從命令語(yǔ)句ST14向ST21的真相關(guān)以及從命令語(yǔ)句ST14向ST23的真相關(guān)。此外,由圖4(a)所示的迭代0的命令語(yǔ)句ST12定義的變量aO處于由圖4(b)所示的迭代1的命令語(yǔ)句ST22再定義的關(guān)系。S卩,存在以變量aO為相關(guān)的原因的、從命令語(yǔ)句ST12向ST22的輸出相關(guān)。同樣,存在以變量al為相關(guān)的原因的、從命令語(yǔ)句ST13向ST23的輸出相關(guān),存在以變量a2為相關(guān)的原因的、從命令語(yǔ)句ST14向ST24的輸出相關(guān)。此外,由圖4(b)所示的迭代1的命令語(yǔ)句ST21參照的變量a0、al、a2處于由命令語(yǔ)句ST22ST24分別定義的關(guān)系。即,存在以變量a0為相關(guān)的原因的、從命令語(yǔ)句ST217向ST22的逆相關(guān),存在以變量al為相關(guān)的原因的、從命令語(yǔ)句ST21向ST23的逆相關(guān),存在以變量a2為相關(guān)的原因的、從命令語(yǔ)句ST21向ST24的逆相關(guān)。此外,在迭代0中也同樣,存在以變量aO、變量al、變量a2為相關(guān)的原因的逆相關(guān)。另外,以下,將循環(huán)處理中的、存在從某個(gè)迭代內(nèi)的命令語(yǔ)句向其他迭代內(nèi)的命令語(yǔ)句的相關(guān)的情況也稱作“在迭代間有相關(guān)關(guān)系”。〈結(jié)構(gòu)〉圖1是表示包括有關(guān)實(shí)施方式的程序生成裝置100的編譯器系統(tǒng)1000的結(jié)構(gòu)的塊圖。編譯器系統(tǒng)1000是通過(guò)參照包含如上述部分程序Pl那樣、在迭代間有真相關(guān)的關(guān)系的循環(huán)處理的源程序11,從而生成能夠?qū)崿F(xiàn)由多個(gè)處理器進(jìn)行的循環(huán)處理的并行執(zhí)行的目標(biāo)程序14的系統(tǒng)。編譯器系統(tǒng)1000由包括處理器(未圖示)、存儲(chǔ)器(未圖示)、和硬盤等的存儲(chǔ)裝置10的計(jì)算機(jī)(例如,PC(PersonalComputer個(gè)人電腦))實(shí)現(xiàn)。編譯器系統(tǒng)1000如該圖所示,包括存儲(chǔ)裝置10、程序生成裝置100、匯編器210、和鏈接器(linker)220而構(gòu)成。另外,程序生成裝置100、匯編器210及鏈接器220的各功能通過(guò)上述處理器將存儲(chǔ)在存儲(chǔ)裝置10中的未圖示的程序讀入到上述存儲(chǔ)器中、執(zhí)行所讀入的程序來(lái)實(shí)現(xiàn)。這里,程序生成裝置100是將以往的編譯器改良的結(jié)構(gòu),具有參照存儲(chǔ)在存儲(chǔ)裝置10中的、用C語(yǔ)言或C++語(yǔ)言等的高級(jí)語(yǔ)言記述的源程序11而生成匯編程序12的功能。程序生成裝置100將所生成的匯編程序12向存儲(chǔ)裝置10保存。S卩,程序生成裝置100通過(guò)參照包含在迭代間有真相關(guān)的關(guān)系的循環(huán)處理的源程序11,生成用來(lái)執(zhí)行消除了該真相關(guān)的關(guān)系的循環(huán)處理的匯編程序12。此外,匯編器210具有參照由程序生成裝置100向存儲(chǔ)裝置10保存的匯編程序12、生成由機(jī)器語(yǔ)言記述的浮動(dòng)的二進(jìn)制程序(relocatablebinaryprogram)13的功能。匯編器210將所生成的浮動(dòng)二進(jìn)制程序13向存儲(chǔ)裝置10保存。此外,鏈接器220具有通過(guò)決定在由匯編器210向存儲(chǔ)裝置10保存的浮動(dòng)二進(jìn)制程序13中未解決的數(shù)據(jù)的地址配置等,通過(guò)與需要的庫(kù)等連結(jié),從而生成計(jì)算機(jī)能夠執(zhí)行的目標(biāo)程序14的功能。鏈接器220將所生成的目標(biāo)程序14向存儲(chǔ)裝置10保存。以下,使用圖1對(duì)程序生成裝置100的結(jié)構(gòu)更詳細(xì)地說(shuō)明。如該圖所示,程序生成裝置100具備存儲(chǔ)部110、取得部120、計(jì)算部130、確定部140、和生成部150。這里,存儲(chǔ)部110是用來(lái)將源程序11、以及計(jì)算部130、確定部140及生成部150的處理結(jié)果保存的存儲(chǔ)器區(qū)域。S卩,以下雖然沒有特別明述,但假設(shè)計(jì)算部130、確定部140及生成部150間的處理結(jié)果的交換是經(jīng)由存儲(chǔ)部110進(jìn)行的。此外,取得部120具有從存儲(chǔ)裝置10讀出源程序11、保存到存儲(chǔ)部110中的功能。計(jì)算部130具有計(jì)算關(guān)于在由取得部120保存到存儲(chǔ)部110中的源程序11中包含的循環(huán)處理中的、某個(gè)迭代及其他1個(gè)以上的迭代的變量表述的等價(jià)關(guān)系的功能。計(jì)算部130包括迭代展開部131、名相關(guān)刪除部132、和等價(jià)關(guān)系計(jì)算部133。這里,迭代展開部131具有基于包含在源程序11中的循環(huán)處理進(jìn)行迭代展開(expandingiteration)的功會(huì)旨。名相關(guān)刪除部132具有將在迭代展開部131進(jìn)行了迭代展開的、迭代號(hào)碼連續(xù)的兩個(gè)迭代間存在的名相關(guān)(即,輸出相關(guān)及逆相關(guān))刪除的功能。這里,使用與將處于相關(guān)關(guān)系的兩個(gè)命令語(yǔ)句中的作為相關(guān)的原因的變量的表述替換為相互不同的表述的以往以來(lái)進(jìn)行的方法同樣的方法,進(jìn)行名相關(guān)的刪除。等價(jià)關(guān)系計(jì)算部133具有計(jì)算關(guān)于由名相關(guān)刪除部132將名相關(guān)刪除后的上述兩個(gè)迭代的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系的功能。這里,假設(shè)使用與在專利文獻(xiàn)2中說(shuō)明的方法同樣的方法進(jìn)行變量表述的等價(jià)關(guān)系的計(jì)算。此外,確定部140具有基于等價(jià)關(guān)系計(jì)算部133計(jì)算出的變量表述的等價(jià)關(guān)系、判斷是否能夠通過(guò)將作為存在于上述兩個(gè)迭代間的真相關(guān)的原因的全部的變量替換為等價(jià)的沒有相關(guān)關(guān)系的其他變量及式子,從而將全部的真相關(guān)刪除的功能。此外,確定部140具有進(jìn)行基于該判斷結(jié)果控制計(jì)算部130對(duì)變量表述的等價(jià)關(guān)系的計(jì)算的執(zhí)行的功能及以下說(shuō)明的判斷的功能。即,該判斷是判斷是否能夠?qū)谠闯绦?1中的循環(huán)處理內(nèi)的塊用由以下說(shuō)明的生成部150生成的迭代變形候選來(lái)替換。生成部150具有當(dāng)確定部140判斷為能夠?qū)⒋嬖谟谏鲜鰞蓚€(gè)迭代間的全部的真相關(guān)刪除時(shí)、基于將全部的真相關(guān)刪除后的迭代來(lái)生成迭代變形候選的功能。詳細(xì)在后面敘述(參照?qǐng)D13(a)及圖13(b)),但迭代變形候選是將刪除了上述全部的真相關(guān)的迭代一般化(generalizing)、以便在該迭代號(hào)碼以后的迭代中也能夠使用的。此外,生成部150具有當(dāng)確定部140判斷為能夠?qū)谠闯绦?1中的循環(huán)處理內(nèi)的塊用迭代變形候選替換時(shí)、生成匯編程序12的功能。該匯編程序12基于將包含在源程序11中的循環(huán)處理內(nèi)的塊用迭代變形候選替換后的源程序。〈動(dòng)作〉以下,說(shuō)明程序生成裝置100的動(dòng)作。圖5圖7是表示由程序生成裝置100進(jìn)行的程序生成處理的流程圖。程序生成裝置100的取得部120從存儲(chǔ)裝置10讀出源程序11,保存到存儲(chǔ)部110中。計(jì)算部130的迭代展開部131進(jìn)行關(guān)于表示包含在源程序11中的循環(huán)處理中的循環(huán)控制變量的任意的值的i、和i+Ι的迭代展開(圖5的步驟Si)。計(jì)算部130的名相關(guān)刪除部132確定迭代i及迭代i+Ι的各命令語(yǔ)句間的相關(guān)關(guān)系(步驟S2)。此外,名相關(guān)刪除部132通過(guò)將作為名相關(guān)(即,輸出相關(guān)和逆相關(guān))的原因的變量的表述變更,將名相關(guān)刪除(步驟S3)。計(jì)算部130的等價(jià)關(guān)系計(jì)算部133計(jì)算關(guān)于刪除了名相關(guān)的迭代i及迭代i+Ι的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系(步驟S4)。該變量表述的等價(jià)關(guān)系的計(jì)算方法如上所述,是與在專利文獻(xiàn)2中說(shuō)明的方法同樣的方法,所以以下簡(jiǎn)單地說(shuō)明,但作為結(jié)果能夠得到圖10所示那樣的等價(jià)式集合。這里,將圖10(a)及圖10(b)所示的用“{”和“}”括起的部分稱作“等價(jià)式集合”、將在等價(jià)式集合中記載的用“(”和“),,括起的部分稱作“等價(jià)式”。此外,在等價(jià)式中記載的用“,,,分隔的各要素表示是等價(jià)的。首先,等價(jià)關(guān)系計(jì)算部133將迭代i及迭代i+Ι的各命令語(yǔ)句1個(gè)1個(gè)依次作為處理對(duì)象而進(jìn)行以下的處理。S卩,等價(jià)關(guān)系計(jì)算部133判斷包含記述在作為處理對(duì)象的命令語(yǔ)句的右邊或左邊的變量及式子的等價(jià)式是否已經(jīng)包含在等價(jià)式集合中。在判斷為對(duì)應(yīng)的等價(jià)式不包含在等價(jià)式集合中的情況下,將關(guān)于作為處理對(duì)象的命令語(yǔ)句的新的等價(jià)式追加到等價(jià)式集合中。此外,在判斷為包含記述在作為處理對(duì)象的命令語(yǔ)句的右邊的變量及式子的等價(jià)式已經(jīng)包含在等價(jià)式集合中的情況下,作為該等價(jià)式的要素,追加記述在這個(gè)作為處理對(duì)象的命令語(yǔ)句的左邊的變量及式子。此外,在判斷為包含記述在作為處理對(duì)象的命令語(yǔ)句的左邊的變量及式子的等價(jià)式已經(jīng)包含在等價(jià)式集合中的情況下,代替該等價(jià)式而將關(guān)于作為處理對(duì)象的命令語(yǔ)句的新的等價(jià)式追加到等價(jià)式集合中。說(shuō)明程序生成處理的后續(xù)(參照?qǐng)D5)。如果步驟S4的處理完成,則確定部140基于等價(jià)關(guān)系計(jì)算部133計(jì)算出的變量表述的等價(jià)關(guān)系,判斷是否能夠?qū)⑷康恼嫦嚓P(guān)刪除(步驟S5)。更詳細(xì)地講,在能夠?qū)⒆鳛檎嫦嚓P(guān)的原因的全部的變量的表述基于在步驟S4中計(jì)算出的變量表述的等價(jià)關(guān)系、替換為在步驟S2中確定的作為相關(guān)的原因的變量及在步驟S3中為了將名相關(guān)刪除而導(dǎo)入的變量以外的等價(jià)的變量及式子的表述的情況下,判斷為能夠?qū)⑷康恼嫦嚓P(guān)刪除(步驟S5是)。這里,不替換為在步驟S2中確定的作為相關(guān)的原因的變量及在步驟S3中為了將名相關(guān)刪除而導(dǎo)入的變量的表述是因?yàn)?,這樣的變量有可能在其他迭代中成為新的相關(guān)的原因。即,這是因?yàn)?,如果替換為這樣的變量的表述,結(jié)果也有可能沒有將迭代間的相關(guān)刪除。在判斷為能夠?qū)⑷康恼嫦嚓P(guān)刪除的情況下(步驟S5是),作為能夠?qū)⑷康恼嫦嚓P(guān)刪除的迭代i+m的m的值而設(shè)定“1”(步驟S6),前進(jìn)到圖6的步驟S15的處理。此外,在判斷為不能將全部的真相關(guān)刪除的情況下(步驟S5否),確定部140將上述m的值設(shè)定為“2”(圖6的步驟S7)。此外,確定部140判斷m的值是否比從包含在源程序11中的循環(huán)控制變量能夠取的最大值(以下,表述為“kmax”)減去該循環(huán)控制變量能夠取的最小值(以下,表述為“kmin”)后的值小(步驟S8)。在m的值是從kmax減去kmin的值以上的情況下(步驟S8否),為不能將真相關(guān)刪除,程序生成裝置100結(jié)束程序生成處理(參照?qǐng)D7)。另一方面,在m的值比從kmax減去kmin的值小的情況下(步驟S8:是),確定部140通過(guò)通知m的值,對(duì)計(jì)算部130指示處理。指示了處理的計(jì)算部130的迭代展開部131與步驟Sl的處理同樣,進(jìn)行關(guān)于i+m的迭代展開(步驟S9)。此外,名相關(guān)刪除部132與步驟S2的處理同樣,確定迭代i+m-1及迭代i+m的各命令語(yǔ)句間的相關(guān)關(guān)系(步驟S10),與步驟S3的處理同樣,將名相關(guān)刪除(步驟S11)。此外,等價(jià)關(guān)系計(jì)算部133與步驟S4的處理同樣,計(jì)算關(guān)于刪除了名相關(guān)的迭代i+m-1及迭代i+m的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系(步驟S12)。接著,確定部140與步驟S5的處理同樣,基于在步驟S12中由等價(jià)關(guān)系計(jì)算部133計(jì)算出的變量表述的等價(jià)關(guān)系,判斷是否能夠?qū)⑷康恼嫦嚓P(guān)刪除(步驟S13)。這里,確定部140因與在步驟S5中說(shuō)明的同樣的理由,將在步驟S2及SlO中確定的作為相關(guān)的原因的變量及在步驟S3和Sll中為了將名相關(guān)刪除而導(dǎo)入的變量的表述用于置換。在判斷為不能將全部的真相關(guān)的情況下(步驟S13否),確定部140使m的值增加1個(gè)(步驟S14),再次從步驟S8起進(jìn)行處理。另一方面,在確定部140判斷為能將全部的真相關(guān)刪除的情況下(步驟S13是),生成部150基于將全部的真相關(guān)刪除后的迭代i+m生成迭代變形候選(步驟S15)。這里,i表示包含在源程序11中的循環(huán)處理中的循環(huán)控制變量的任意的值。因而,在迭代i+m中能夠?qū)⑷康恼嫦嚓P(guān)刪除意味著在迭代kmin+m以后的迭代中能夠?qū)⑷康恼嫦嚓P(guān)刪除。所以,生成部150生成進(jìn)行一般化以使得在迭代號(hào)碼為kmin+m到kmax的迭代中也能夠使用的迭代變形候選。接著,確定部140通過(guò)通知kmin及m_l的值,對(duì)計(jì)算部130指示處理。被指示了處理的計(jì)算部130的迭代展開部131與步驟Sl的處理同樣,進(jìn)行對(duì)從kmin到m_l各自的迭代展開(圖7的步驟S16)。此外,名相關(guān)刪除部132對(duì)于從迭代kmin到迭代m_l的每個(gè)迭代,分別與步驟S2的處理同樣,確定各命令語(yǔ)句間的相關(guān)關(guān)系(步驟S17),與步驟S3的處理同樣,將名相關(guān)刪除(步驟S18)。此外,等價(jià)關(guān)系計(jì)算部133與步驟S4的處理同樣,計(jì)算關(guān)于將名相關(guān)刪除后的迭代kmin到迭代m-1的各自的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系(步驟S19)。接著,確定部140與步驟S5的處理同樣,基于在步驟S19中等價(jià)關(guān)系計(jì)算部133計(jì)算出的變量表述的等價(jià)關(guān)系,判斷是否能夠?qū)⑷康恼嫦嚓P(guān)刪除(步驟S20)。在確定部140判斷為不能將全部的真相關(guān)刪除的情況下(步驟S20否),認(rèn)為循環(huán)控制變量在從kmin到m-1的范圍中不能將真相關(guān)刪除,程序生成裝置100結(jié)束程序生成處理。此外,在確定部140判斷為能夠?qū)⑷康恼嫦嚓P(guān)刪除的情況下(步驟S20是),判斷將全部的真相關(guān)刪除后的迭代kmin到迭代m-1是否是與在步驟S15中生成的迭代變形候選中的迭代kmin到迭代m-1相同形式(步驟S21)。在確定部140判斷為不是相同形式的情況下(步驟S21否),程序生成裝置100結(jié)束程序生成處理。這是因?yàn)?,在此情況下,不能將能夠應(yīng)用在循環(huán)控制變量為從kmin到m-Ι的范圍中的刪除了真相關(guān)的循環(huán)處理、與能夠應(yīng)用到循環(huán)控制變量為從m到kmax的范圍中的刪除了真相關(guān)的循環(huán)處理集中為1個(gè)循環(huán)處理。另一方面,在確定部140判斷為與迭代變形候選中的迭代kmin到迭代m_l相同形式的情況下(步驟S21是),生成部150如以下這樣生成匯編程序12(步驟S22)。即,生成部150在對(duì)將源程序11的循環(huán)處理內(nèi)的塊替換為迭代變形候選的程序進(jìn)行優(yōu)化和并行化(parallelizing)后,生成匯編程序12。另外,優(yōu)化和并行化可以通過(guò)以往以來(lái)進(jìn)行的方法實(shí)現(xiàn),所以這里省略詳細(xì)的說(shuō)明,關(guān)于進(jìn)行了優(yōu)化和并行化后的程序的具體例在后面敘述(參照?qǐng)D18)。生成部150將所生成的匯編程序12保存到存儲(chǔ)裝置10中,程序生成裝置100結(jié)束程序生成處理。〈具體例〉以下,以設(shè)源程序11包含圖2(a)所示的部分程序Pl的情況為例,按照?qǐng)D5圖7所示的流程圖說(shuō)明程序生成裝置100的動(dòng)作。程序生成裝置100的取得部120從存儲(chǔ)裝置10讀出源程序11,保存到存儲(chǔ)部110中。計(jì)算部130的迭代展開部131進(jìn)行關(guān)于表示包含在源程序11中的循環(huán)處理(在該例中是Rl)中的循環(huán)控制變量(在該例中是k)的任意的值的i和i+Ι的迭代展開(圖5的步驟Si)。圖8(a)是表示圖2(a)所示的循環(huán)處理Rl中的迭代i的圖,圖8(b)是表示迭代i+Ι的圖。計(jì)算部130的名相關(guān)刪除部132確定迭代i及迭代i+Ι的各命令語(yǔ)句間的相關(guān)關(guān)系(步驟S2)。此外,名相關(guān)刪除部132通過(guò)變更作為名相關(guān)(即,輸出相關(guān)和逆相關(guān))的原因的變量的表述,將名相關(guān)刪除(步驟S3)。在圖8(a)及圖8(b)所示的例子中,以變量aO為相關(guān)的原因,存在從命令語(yǔ)句ST42向命令語(yǔ)句ST51的真相關(guān)、從命令語(yǔ)句ST42向命令語(yǔ)句ST52的輸出相關(guān)、從命令語(yǔ)句ST41向命令語(yǔ)句ST42的逆相關(guān)、和從命令語(yǔ)句ST51向ST52的逆相關(guān)。此外,以變量al為相關(guān)的原因,存在從命令語(yǔ)句ST43向命令語(yǔ)句ST51的真相關(guān)、從命令語(yǔ)句ST43向命令語(yǔ)句ST53的輸出相關(guān)、從命令語(yǔ)句ST41向命令語(yǔ)句ST43的逆相關(guān)、和從命令語(yǔ)句ST51向ST53的逆相關(guān)。此外,以變量a2為相關(guān)的原因,存在從命令語(yǔ)句ST44向命令語(yǔ)句ST51的真相關(guān)、從命令語(yǔ)句ST44向命令語(yǔ)句ST54的輸出相關(guān)、從命令語(yǔ)句ST41向命令語(yǔ)句ST44的逆相關(guān)、和從命令語(yǔ)句ST51向ST54的逆相關(guān)。通過(guò)將命令語(yǔ)句ST42中的變量aO的表述變更為“aO_i”、將命令語(yǔ)句ST52中的變量aO的表述變更為“aO_il”,能夠?qū)⒁宰兞縜O為相關(guān)的原因的名相關(guān)刪除。此外,與變量aO的情況同樣,通過(guò)將命令語(yǔ)句ST43中的變量al的表述變更為“al_i”、將命令語(yǔ)句ST53中的變量al的表述變更為“al_il”,能夠?qū)⒁宰兞縜l為相關(guān)的原因的名相關(guān)刪除。此外,通過(guò)將命令語(yǔ)句ST44中的變量a2的表述變更為“a2_i”、將命令語(yǔ)句ST54中的變量a2的表述變更為“a2_il”,能夠?qū)⒁宰兞縜2為相關(guān)的原因的名相關(guān)刪除。圖9(a)是表示從圖8(a)所示的迭代i中刪除了名相關(guān)的迭代i的圖,圖9(b)是表示從圖8(b)所示的迭代i+Ι刪除了名相關(guān)的迭代i+Ι的圖。另外,在步驟S3的處理中,由于僅將名相關(guān)刪除,所以真相關(guān)繼續(xù)存在。即,在圖9(a)及圖9(b)所示的例子中,存在從命令語(yǔ)句ST46、ST47、ST48向命令語(yǔ)句ST55的以變量aO_i、al_i、a2_i為相關(guān)的原因的真相關(guān)、和從命令語(yǔ)句ST47、ST48向命令語(yǔ)句ST56、ST57的以變量al_i、a2_i為相關(guān)的原因的真相關(guān)。計(jì)算部130的等價(jià)關(guān)系計(jì)算部133計(jì)算關(guān)于將名相關(guān)刪除后的迭代i及迭代i+1的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系(步驟S4)。如果對(duì)圖9(a)及圖9(b)所示的將名相關(guān)刪除后的迭代i及迭代i+Ι的各命令語(yǔ)句(ST45ST48、ST55ST58)計(jì)算變量表述的等價(jià)關(guān)系,則為以下這樣。另外,假設(shè)在以下的說(shuō)明開始時(shí)點(diǎn),在等價(jià)式集合中哪個(gè)等價(jià)式都不包括。首先,在以圖9(a)所示的命令語(yǔ)句ST45為處理對(duì)象的情況下,由于包括記述在命令語(yǔ)句ST45的右邊及左邊中的變量及式子的等價(jià)式不包含在等價(jià)式集合中,所以如圖10(a)所示的等價(jià)式集合E45那樣,將關(guān)于命令語(yǔ)句ST45的等價(jià)式追加到等價(jià)式集合中。即,等價(jià)式集合E45表示在剛剛執(zhí)行命令語(yǔ)句ST45之后、變量“b[i]”和式“a0+al+a2”處于等價(jià)的關(guān)系。在以圖9(3)所示的命令語(yǔ)句51465148及圖9(13)的命令語(yǔ)句ST55為處理對(duì)象的情況下,也與命令語(yǔ)句ST45的情況同樣地處理(參照?qǐng)D10(a)的等價(jià)式集合E46E48及圖10(b)的等價(jià)式集合E55)。此外,在以圖9(b)所示的命令語(yǔ)句ST56為處理對(duì)象的情況下,包含記述在命令語(yǔ)句ST56的右邊的變量(在該例中是“al_i”)的等價(jià)式(在該例中是(al_i,a2))已經(jīng)包含在等價(jià)式集合E55中。因而,在該等價(jià)式中,追加了記述在命令語(yǔ)句ST56的左邊的變量(在該例中是“a0_il”)(參照?qǐng)D10(b)的等價(jià)式集合E56)。在以圖9(b)所示的命令語(yǔ)句ST57為處理對(duì)象的情況下,也與命令語(yǔ)句ST56的情況同樣地處理(參照?qǐng)D10(b)的等價(jià)式集合E57)。此外,在以圖9(b)所示的命令語(yǔ)句ST58為處理對(duì)象的情況下,與命令語(yǔ)句ST45的情況同樣,將關(guān)于命令語(yǔ)句ST58的等價(jià)式追加到等價(jià)式集合E57中(參照?qǐng)D10(b)的等價(jià)式集合E58)。接著,確定部140基于在步驟S4中等價(jià)關(guān)系計(jì)算部133計(jì)算出的變量表述的等價(jià)關(guān)系,判斷是否能夠?qū)⑷康恼嫦嚓P(guān)刪除(步驟S5)。如上所述,在圖9(a)及圖9(b)所示的例子中,存在以變量a0_i、al_i、a2_i為相關(guān)的原因的真相關(guān)。根據(jù)圖10(a)所示的等價(jià)式集合E48,作為真相關(guān)的原因的變量“a2_i”與變量“a[i+3]”是等價(jià)的。此外,該變量“a[i+3]”不是在步驟S2中確定的作為相關(guān)的原因的變量以及在步驟S3中為了將名相關(guān)刪除而導(dǎo)入的變量。因而,能夠?qū)⒆兞俊癮2_i”的表述替換為變量“a[i+3]”的表述。此外,根據(jù)等價(jià)式集合E48,作為真相關(guān)的原因的變量“a0_i”與變量“al”是等價(jià)的,作為真相關(guān)的原因的變量“al_i”與變量“a2”是等價(jià)的。但是,變量“al”及變量“a2”由于是在步驟S2中確定的作為相關(guān)的原因的變量,所以不能進(jìn)行作為真相關(guān)的原因的變量“a0_i,,及變量“al_i,,的各表述的替換。因而,確定部140判斷為不能將全部的真相關(guān)刪除(步驟S5否)。確定部140將m的值設(shè)定為“2”(圖6的步驟S7),在該例中,由于m的值比從kmax(在該例中是“99”)減去kmin(在該例中是“0”)后的值小(步驟S8是),所以通知m的值(在該例中是“2”),對(duì)計(jì)算部130指示處理。迭代展開部131與步驟Sl的處理同樣,進(jìn)行關(guān)于i+m(在該例中是“i+2”)的迭代展開(步驟S9)。此外,計(jì)算部130的名相關(guān)刪除部132關(guān)于迭代i+m_l(在該例中是“i+1”)和迭代i+m,與步驟S3的處理同樣,將名相關(guān)刪除(步驟Sll)。此外,計(jì)算部130的等價(jià)關(guān)系計(jì)算部133與步驟S4的處理同樣,計(jì)算關(guān)于將名相關(guān)刪除后的迭代i+m-1及迭代i+m的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系(步驟S12)。圖11(a)是表示將名相關(guān)刪除后的迭代i+2的圖,圖11(b)是表示計(jì)算關(guān)于將名相關(guān)刪除后的迭代i+2的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系的結(jié)果的圖。這里,圖11(b)所示的等價(jià)式集合E65為基于圖11(a)所示的命令語(yǔ)句ST65、將等價(jià)式“(b[i+2],a0_il+al_il+a2_il)”追加到圖10(b)所示的等價(jià)式集合E58中的結(jié)果。確定部140與步驟S5的處理同樣,基于在步驟S12中等價(jià)關(guān)系計(jì)算部133計(jì)算出的變量表述的等價(jià)關(guān)系,判斷是否能夠?qū)⑷康恼嫦嚓P(guān)刪除(步驟S13)。在圖9(b)及圖11(a)所示的例子中,存在以變量a0_i1、al_i1、a2_i1為相關(guān)的原因的真相關(guān)。根據(jù)圖10(b)所示的等價(jià)式集合E58,作為真相關(guān)的原因的變量“a2_il”與變量“a[i+4]”是等價(jià)的,作為真相關(guān)的原因的變量“al_il”與變量“a[i+3]”是等價(jià)的。此外,變量“a[i+4],,及變量“a[i+3],,不是在步驟S2及SlO中確定的作為相關(guān)的原因的變量以及在步驟S3及S7中為了將名相關(guān)刪除而導(dǎo)入的變量。因而,能夠?qū)⒆兞俊癮2_il”的表述替換為變量“a[i+4]”的表述、將變量“al_il”的表述替換為變量“a[i+3],,的表述。此外,根據(jù)等價(jià)式集合E58,作為真相關(guān)的原因的變量“a0_il”與變量“al_i”及變量“a2”是等價(jià)的。但是,變量“al_i”是在步驟S3中為了將名相關(guān)刪除而使用的變量,變量“a2”是在步驟S2中確定的作為相關(guān)的原因的變量。因而,不能進(jìn)行作為真相關(guān)的原因的變量“a0_il”的表述的替換。由此,確定部140判斷為不能將全部的真相關(guān)刪除(步驟S13否)。在該例中,確定部140使m的值增加1而設(shè)為“3”(步驟S14),由于m的值比從kmax(在該例中是“99”)減去kmin(在該例中是“0”)后的值小(步驟S8是),所以通知m的值而對(duì)計(jì)算部130指示處理。被指示了處理的計(jì)算部130與上述同樣,進(jìn)行步驟S9步驟S12的處理。圖12(a)是表示將名相關(guān)刪除后的迭代i+3的圖,圖12(b)是表示計(jì)算關(guān)于將名相關(guān)刪除后的迭代i+3的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系的結(jié)果的圖。在圖11(a)及圖12(a)所示的例子中,存在以變量a0」2、al」2、a2」2為相關(guān)的原因的真相關(guān)。根據(jù)圖11(b)所示的等價(jià)式集合E68,作為真相關(guān)的原因的變量“a2_i2”與變量“a[i+5]”是等價(jià)的,作為真相關(guān)的原因的變量“al_i2”與變量“a[i+4]”是等價(jià)的,作為真相關(guān)的原因的變量“a0_i2”與變量“a[i+3]”是等價(jià)的。此外,變量“a[i+5]”、變量“a[i+4],,及變量“a[i+3],,不是在步驟S2及SlO中確定的作為相關(guān)的原因的變量以及在步驟S3及S7中為了將名相關(guān)刪除而導(dǎo)入的變量。因而,能夠?qū)⒆兞俊癮2_i2”的表述替換為變量“a[i+5]”的表述、將變量“al_i2”的表述替換為變量“a[i+4],,的表述、將變量“a0_i2”的表述替換為變量“a[i+3],,的表述。由此,確定部140判斷為能將全部的真相關(guān)刪除(步驟S13是),生成部150基于14不能刪除全部的真相關(guān)的迭代i+m(在該例中是“i+3”)生成迭代變形候選(步驟S15)。圖13(a)是表示將全部的真相關(guān)刪除后的迭代i+3的圖。在圖13(a)所示的例子中,生成部150將“i+3”設(shè)置為k,生成將變量“a0_i3”的表述替換為變量“a0_k”的表述、將變量“al_i3”的表述替換為變量“al_k”的表述、將變量“a2_i3”的表述替換為變量“a2_k”的表述的迭代變形候選。圖13(b)是表示生成部150生成的迭代變形候選的圖。該迭代變形候選能夠應(yīng)用到k為kmin+m(在該例中是“3”)到kmax(在該例中是“99”)的迭代中。即,至少在3<k<kmax的范圍中,能夠?qū)D2(a)所示的循環(huán)處理Rl的塊Bl替換為在迭代間沒有相關(guān)的等價(jià)的塊。接著,確定部140通知kmin(在該例中是“0”)及m_l(在該例中是“2”)的值,對(duì)計(jì)算部130指示處理。被指示了處理的計(jì)算部130的迭代展開部131與步驟Sl的處理同樣,進(jìn)行關(guān)于從kmin到m-1的各自的迭代展開(圖7的步驟S16)。此外,名相關(guān)刪除部132關(guān)于從迭代kmin到迭代m_l,與步驟S2同樣,確定各命令語(yǔ)句間的相關(guān)關(guān)系(圖7的步驟S17),與步驟S3的處理同樣,將名相關(guān)刪除(步驟S18)。圖14(a)所示的迭代Il13表示圖2(a)所示的循環(huán)處理Rl中的迭代02。此外,圖14(b)所示的迭代IlO130表示從圖14(a)所示的迭代02中將名相關(guān)刪除后的迭代02的。此外,圖14(b)所示的命令語(yǔ)句STlST3是處于圖2(a)所示的循環(huán)處理Rl的之前的緊挨著的(immediatelybefore)命令語(yǔ)句STlST3。等價(jià)關(guān)系計(jì)算部133與步驟S4的處理同樣,計(jì)算關(guān)于將名相關(guān)刪除后的迭代kmin到迭代m-1的各自的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系(步驟S19)。圖15是表示計(jì)算關(guān)于圖14(b)所示的命令語(yǔ)句STlST3及將名相關(guān)刪除后的迭代01的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系的結(jié)果的圖。此外,圖16是表示計(jì)算關(guān)于圖14(b)所示的將名相關(guān)刪除后的迭代2的各命令語(yǔ)句的變量表述的等價(jià)關(guān)系的結(jié)果的圖。接著,確定部140與步驟S5的處理同樣,基于在步驟S19中等價(jià)關(guān)系計(jì)算部133計(jì)算出的變量表述的等價(jià)關(guān)系,判斷是否能夠?qū)⑷康恼嫦嚓P(guān)刪除(步驟S20)。根據(jù)圖15所示的等價(jià)式集合E3,作為真相關(guān)的原因的變量“aO”與變量“aW]”是等價(jià)的,作為真相關(guān)的原因的變量“al”與變量“a[l]”是等價(jià)的,作為真相關(guān)的原因的變量“a2”與變量“a[2]”是等價(jià)的。此夕卜,變量“a”、變量“a“1””及變量“a[2]”不是在步驟S17中確定的作為相關(guān)的原因的變量以及在步驟S18中為了將名相關(guān)刪除而導(dǎo)入的變量。因而,能夠?qū)D14(b)所示的命令語(yǔ)句ST15的變量“aO”的表述替換為變量"a,,的表述、將變量“al”的表述替換為變量“a[l],,的表述、將變量“a2”的表述替換為變量“a[2]”的表述。同樣,能夠基于圖15所示的等價(jià)式集合E15、將圖14(b)所示的命令語(yǔ)句ST16的變量“al”的表述替換為變量“a[l]”的表述。此外,能夠基于圖15所示的等價(jià)式集合E16、將圖14(b)所示的命令語(yǔ)句ST17的變量“a2”的表述替換為變量“a[2],,的表述。同樣,能夠基于圖15所示的等價(jià)式集合E18E26、將圖14(b)所示的命令語(yǔ)句ST25ST27的變量“a0_0”、變量“al_0”及變量“a2_0”的表述替換。此外,能夠基于圖15所示的等價(jià)式集合E28及圖16所示的等價(jià)式集合E35、E36、將命令語(yǔ)句ST35ST37的變量“a0_l”、變量“al_l”及變量“a2_l”的表述替換。因而,確定部140判斷為能夠?qū)⑷康恼嫦嚓P(guān)刪除(步驟S20是),判斷將全部的真相關(guān)刪除后的迭代kmin(在該例中是“0”)到迭代m-1(在該例中是“2”)是否是與在步驟S15中生成的迭代變形候選中的迭代kmin到迭代m_l相同形式(步驟S21)。圖17(a)所示的迭代I11、I21、I31表示從圖14(b)所示的將名相關(guān)刪除后的迭代02(110、120、130)中將真相關(guān)刪除后的迭代。圖13(b)所示的關(guān)于迭代變形候選的迭代0、迭代1、迭代3與圖17(a)所示的迭代111、121、131—致。因而,在該例中,確定部140判斷為相同形式(步驟S21是),生成部150將源程序11的循環(huán)處理Rl的塊Bl替換為迭代變形候選而生成基于優(yōu)化和并行化的程序的匯編程序12(步驟S22)。圖17(b)表示將圖2(a)所示的部分程序Pl的塊Bl替換為圖13(b)所示的迭代變形候選的部分程序P2。在該部分程序P2中,由命令語(yǔ)句STlST3定義的變量“aO”、變量“al”及變量“a2”、由命令語(yǔ)句ST92ST94定義的變量“aO_k”、變量“al_k”及變量“a2_k”沒有由部分程序P2內(nèi)的命令語(yǔ)句參照。因而,在源程序11中的部分程序P2以外的部分中,也能夠以不參照這些變量為條件、生成將命令語(yǔ)句STlST3、說(shuō)明(declare)變量“aO”、變量“al”及變量“a2”的命令語(yǔ)句ST4、和命令語(yǔ)句ST92ST94刪除的優(yōu)化的部分程序P3(參照?qǐng)D18)。此外,生成部150生成將部分程序P3并行化后的部分程序P4(參照?qǐng)D2(b))。此夕卜,生成部150將基于包含該部分程序P4的源程序而生成的匯編程序12保存到存儲(chǔ)裝置10中,程序生成裝置100結(jié)束程序生成處理。另外,圖2(b)所示的部分程序P4中的用于指示并行化的記述是遵循OpenMP的記述形式的。《補(bǔ)充》以上,基于實(shí)施方式說(shuō)明了有關(guān)本發(fā)明的程序生成裝置,但也可以如以下這樣變形,本發(fā)明當(dāng)然并不限定于在上述實(shí)施方式中表示那樣的程序生成裝置。(1)有關(guān)實(shí)施方式的程序生成裝置100以根據(jù)包含了在迭代號(hào)碼連續(xù)的兩個(gè)迭代間具有真相關(guān)的關(guān)系的循環(huán)處理的源程序11來(lái)生成匯編程序12的情況為例進(jìn)行了說(shuō)明。但是,也可以根據(jù)包含了在迭代號(hào)碼不連續(xù)的兩個(gè)迭代間具有真相關(guān)的關(guān)系的循環(huán)處理(例如,圖19(a)所示的循環(huán)處理R5、及圖19(c)所示的循環(huán)處理R7)的源程序11來(lái)生成匯編程序12。另外,圖19(b)表示與循環(huán)處理R5等價(jià)的不具有上述真相關(guān)的關(guān)系的循環(huán)處理R6。此外,圖19(d)表示與循環(huán)處理R7等價(jià)的不具有上述真相關(guān)的關(guān)系的循環(huán)處理R8。為此,在由圖5的步驟S2的處理確定相關(guān)關(guān)系的結(jié)果是不存在真相關(guān)的關(guān)系的情況下,進(jìn)行確定具有真相關(guān)的關(guān)系的兩個(gè)迭代的處理。即,對(duì)迭代號(hào)碼s(i+2^s<N)進(jìn)行迭代展開,確定迭代i及迭代s的各命令語(yǔ)句間的相關(guān)關(guān)系。在不存在真相關(guān)的關(guān)系的情況下,一邊將s—個(gè)一個(gè)增加,一邊反復(fù)進(jìn)行上述迭代展開及相關(guān)關(guān)系的確定,在存在真相關(guān)的關(guān)系的情況下,將步驟S3、S4中的迭代i+1替換為迭代s,進(jìn)行步驟S3、S4的處理。此外,進(jìn)行變更以將步驟S6的m設(shè)定為S、進(jìn)行變更以將圖6的步驟S7的m設(shè)定為s+1,在步驟S8以后,能夠與由實(shí)施方式說(shuō)明同樣進(jìn)行處理。這樣,根據(jù)有關(guān)該變形的程序生成裝置,例如通過(guò)參照包含圖19(a)所示的循環(huán)處理R5、及圖19(c)所示的循環(huán)處理R7的源程序,能夠生成與以往的編譯器通過(guò)參照包含圖19(b)所示的循環(huán)處理R6及圖19(d)所示的循環(huán)處理R8的源程序而生成得到的匯編程序同樣的匯編程序。(2)有關(guān)實(shí)施方式的程序生成裝置100設(shè)為在圖7的步驟S21中、在將全部的真相關(guān)刪除后的迭代kmin到迭代m-1與在圖6的步驟S15中生成的迭代變形候選中的迭代kmin到迭代m-1不是相同形式的情況下(步驟S21否)、不生成匯編程序12而結(jié)束程序生成處理的結(jié)構(gòu)進(jìn)行了說(shuō)明。但是,也可以將循環(huán)處理分為循環(huán)控制變量為kmin到m-1的范圍的部分循環(huán)處理X、和循環(huán)控制變量為m到kmax的范圍的部分循環(huán)處理Y,生成能夠?qū)⒀h(huán)處理Y由多個(gè)處理器并行執(zhí)行而構(gòu)成的匯編程序12。(3)有關(guān)實(shí)施方式的程序生成裝置100設(shè)為通過(guò)參照源程序11而生成匯編程序12的結(jié)構(gòu)進(jìn)行了說(shuō)明。但是,也可以是,程序生成裝置變形為具備匯編器210及鏈接器220,有關(guān)該變形的程序生成裝置通過(guò)參照源程序11來(lái)生成目標(biāo)程序14。此外,有關(guān)實(shí)施方式的鏈接器220設(shè)為將決定了未解決的數(shù)據(jù)的地址配置等的浮動(dòng)二進(jìn)制程序13與需要的庫(kù)等連結(jié)的結(jié)構(gòu)進(jìn)行了說(shuō)明,但當(dāng)然也可以將多個(gè)浮動(dòng)二進(jìn)制程序13彼此連結(jié)。(4)有關(guān)實(shí)施方式的程序生成裝置100中的計(jì)算部130的等價(jià)關(guān)系計(jì)算部133設(shè)為使用與在專利文獻(xiàn)2中說(shuō)明的方法同樣的方法進(jìn)行變量表述的等價(jià)關(guān)系的計(jì)算的結(jié)構(gòu)而進(jìn)行了說(shuō)明,但它是一例,也可以通過(guò)其他方法計(jì)算。例如,也可以利用命令語(yǔ)句“X=y”中的、在χ中保存有與y相同的值的關(guān)系、即χ與y為等價(jià)的關(guān)系,通過(guò)反復(fù)進(jìn)行替換命令語(yǔ)句的表述(以下稱作“復(fù)制傳播”(copypropagation))的方法來(lái)計(jì)算。以下,簡(jiǎn)單地說(shuō)明該方法。例如,通過(guò)對(duì)圖8(a)所示的迭代i的命令語(yǔ)句ST44“a2=a[i+3]”進(jìn)行復(fù)制傳播,由此,將圖8(b)所示的迭代i+Ι的命令語(yǔ)句ST51的表述替換為“b[i+1]=a0+al+a[i+3],,、將命令語(yǔ)句ST53的表述替換為“al=a[i+3]”。此外,通過(guò)對(duì)該替換后的命令語(yǔ)句ST53和命令語(yǔ)句ST54進(jìn)行復(fù)制傳播,將圖20(a)所示的迭代i+2的命令語(yǔ)句ST61的表述替換為“b[i+2]=a0+a[i+3]+a[i+4]此夕卜,將命令語(yǔ)句ST62的表述替換為“aO=a[i+3]”、將命令語(yǔ)句ST63的表述替換為“al=a[i+4]”。此外,通過(guò)對(duì)于該替換后的命令語(yǔ)句ST62及ST63、和命令語(yǔ)句ST64進(jìn)行復(fù)制傳播,將圖20(b)所示的迭代i+3的命令語(yǔ)句ST71的表述替換為“b[i+3]=a[i+3]+a[i+4]+a[i+5]”、將命令語(yǔ)句ST72的表述替換為“aO=a[i+4]”、將命令語(yǔ)句ST73的表述替換為“al=a[i+5],,(參照?qǐng)D20(c))。(5)也可以將用來(lái)使處理器執(zhí)行在實(shí)施方式中說(shuō)明的程序生成處理(參照?qǐng)D5圖7)的程序記錄到記錄介質(zhì)中、或經(jīng)由各種通信路徑等流通而發(fā)布。在這樣的記錄介質(zhì)中,有IC卡、光盤、軟盤、ROM、閃存存儲(chǔ)器等。被流通、發(fā)布的程序通過(guò)保存在能夠由設(shè)備的處理器讀取的存儲(chǔ)器等中而供使用,通過(guò)該處理器執(zhí)行該程序而實(shí)現(xiàn)在實(shí)施方式中表示的程序生成裝置的各功能。(6)也可以在有關(guān)實(shí)施方式的程序生成裝置100中組合使用上述⑴(5)的一部分或全部的變形。(7)以下,還對(duì)本發(fā)明的有關(guān)一實(shí)施方式的程序生成裝置的結(jié)構(gòu)及其變形例和各效果進(jìn)行說(shuō)明。(a)有關(guān)本發(fā)明的一實(shí)施方式的程序生成裝置,通過(guò)參照對(duì)象源程序而生成新的程序,該對(duì)象源程序包含將由1個(gè)以上的命令語(yǔ)句構(gòu)成的塊重復(fù)處理N次的循環(huán)處理,該循環(huán)處理的在有關(guān)第i次執(zhí)行的上述塊內(nèi)的命令語(yǔ)句中定義的變量處于被有關(guān)第j次執(zhí)行的上述塊內(nèi)的命令語(yǔ)句所參照的相關(guān)關(guān)系,其中N彡2,1<i<N,i<j<N,其特征在于,該程序生成裝置具備計(jì)算單元,以有關(guān)第i次執(zhí)行的上述塊、和有關(guān)第i次以外的執(zhí)行的1個(gè)以上的上述塊為對(duì)象塊,進(jìn)行計(jì)算該對(duì)象塊中的變量表述的等價(jià)關(guān)系的計(jì)算處理;確定單元,基于上述計(jì)算單元計(jì)算出的變量表述的等價(jià)關(guān)系,對(duì)于上述變量之中的、處于上述相關(guān)關(guān)系的全部的對(duì)象變量的表述,進(jìn)行確定與該對(duì)象變量的表述等價(jià)的不具有上述相關(guān)關(guān)系的其他變量的表述的確定處理;以及生成單元,生成用來(lái)進(jìn)行上述循環(huán)處理的M次的處理的、包含如下命令語(yǔ)句的程序,該命令語(yǔ)句包含有上述確定單元確定的其他變量的表述,其中M彡N。根據(jù)上述結(jié)構(gòu)的有關(guān)本發(fā)明的一實(shí)施方式的程序生成裝置,通過(guò)參照包含在有關(guān)第i次執(zhí)行的塊內(nèi)的命令語(yǔ)句與有關(guān)第j次執(zhí)行的塊內(nèi)的命令語(yǔ)句之間有所謂的真相關(guān)的關(guān)系的循環(huán)處理的對(duì)象源程序,能夠生成用來(lái)進(jìn)行該循環(huán)處理的M次的處理的程序,該程序包含如下命令語(yǔ)句,該命令語(yǔ)句對(duì)于處于真相關(guān)的關(guān)系的全部的對(duì)象變量的表述,包含有與該對(duì)象變量的表述等價(jià)的沒有真相關(guān)的關(guān)系的其他變量的表述。根據(jù)該生成的程序,能夠?qū)⒀h(huán)處理的M次的處理通過(guò)多個(gè)處理器獨(dú)立地并行執(zhí)行、將循環(huán)處理高速地執(zhí)行。因而,該程序生成裝置對(duì)于用來(lái)通過(guò)參照包含具有真相關(guān)的關(guān)系的循環(huán)處理的源程序,從而使用多個(gè)處理器高速地執(zhí)行循環(huán)處理的程序的生成是有用的。(b)此外,也可以是,上述確定單元確定的與上述對(duì)象變量的表述等價(jià)的不具有上述相關(guān)關(guān)系的其他變量的表述,是與哪個(gè)對(duì)象變量的表述都不同的變量的表述。根據(jù)該程序生成裝置,通過(guò)參照包含具有真相關(guān)的關(guān)系的循環(huán)處理的對(duì)象源程序,能夠生成用來(lái)進(jìn)行該循環(huán)處理的M次的處理的程序,該程序包含如下命令語(yǔ)句,該命令語(yǔ)句包含有與處于真相關(guān)的關(guān)系的全部的對(duì)象變量的表述等價(jià)的不具有真相關(guān)的關(guān)系的其他變量的表述。S卩,該程序生成裝置通過(guò)參照包含具有真相關(guān)的關(guān)系的循環(huán)處理的對(duì)象源程序,能夠生成通過(guò)將循環(huán)處理的M次的處理由多個(gè)處理器獨(dú)立地并行執(zhí)行而能夠高速地執(zhí)行的程序。(c)此外,也可以是,上述計(jì)算單元將有關(guān)第i次執(zhí)行的上述塊、和有關(guān)第i+Ι次執(zhí)行的上述塊作為上述對(duì)象塊,進(jìn)行上述計(jì)算處理;每當(dāng)上述計(jì)算單元進(jìn)行上述計(jì)算處理時(shí),上述確定單元基于已計(jì)算的各變量表述的等價(jià)關(guān)系,對(duì)于全部的對(duì)象變量的表述,進(jìn)行是否能夠確定如下表述的判斷,該表述是與該對(duì)象變量的表述等價(jià)的不具有上述相關(guān)關(guān)系的其他變量的表述、而且是與哪個(gè)對(duì)象變量的表述都不同的變量的表述;在該判斷處理的結(jié)果是否定的期間,一邊使i每次增加1,一邊使上述計(jì)算單元重復(fù)進(jìn)行上述計(jì)算處理。根據(jù)該程序生成裝置,在i是n(n<N)的情況下,在不能對(duì)于處于真相關(guān)的關(guān)系的全部的對(duì)象變量的表述確定與該對(duì)象變量的表述等價(jià)的沒有真相關(guān)的關(guān)系的其他變量的表述的情況下,能夠生成用來(lái)進(jìn)行至少?gòu)摩堑絅的N-N次的循環(huán)處理的程序,該程序包括包含有與處于真相關(guān)的關(guān)系的全部的對(duì)象變量的表述等價(jià)的沒有真相關(guān)的關(guān)系的包含其他變量的表述的命令語(yǔ)句。因而,通過(guò)至少將該Ν-η次的循環(huán)處理用多個(gè)處理器獨(dú)立地并行執(zhí)行,能夠高速地執(zhí)行。(d)此外,也可以是,上述程序生成裝置參照的程序是用來(lái)由單一的處理器執(zhí)行的程序;上述生成單元生成的程序是用來(lái)由多個(gè)處理器并行執(zhí)行的程序。根據(jù)該程序生成裝置,通過(guò)參照用來(lái)由單一的處理器執(zhí)行的程序,能夠生成用來(lái)由多個(gè)處理器并行執(zhí)行的程序。因而,在例如已經(jīng)有編程者制作的、用來(lái)由單一的處理器執(zhí)行的程序的情況下,也可以不特意制作用來(lái)由多個(gè)處理器并行執(zhí)行的程序。由此,能夠節(jié)省用于制作程序的工作量。(e)此外,也可以是,在M<N的情況下,上述生成單元將所生成的程序變更以使得其還進(jìn)行上述循環(huán)處理的N-M次的處理,并判斷變更后的程序的處理和上述對(duì)象源程序的處理是否為等價(jià),在為等價(jià)的情況下,將上述生成的程序替換為該變更后的程序。根據(jù)該程序生成裝置,即使將暫且生成的、用來(lái)進(jìn)行循環(huán)處理的M(M<N)次的處理的程序變更為進(jìn)行循環(huán)處理的N次的處理的程序,也以該處理與對(duì)象源程序的處理等價(jià)為條件,最終生成用來(lái)進(jìn)行循環(huán)處理的N次的處理的程序。用來(lái)進(jìn)行該循環(huán)處理的N次的處理的程序是包括如下命令語(yǔ)句的程序,該命令語(yǔ)句對(duì)于處于真相關(guān)的關(guān)系的全部的對(duì)象變量的表述,包含有與該對(duì)象變量的表述等價(jià)的沒有真相關(guān)的關(guān)系的包含其他變量的表述的。因而,能夠?qū)次的循環(huán)處理通過(guò)用多個(gè)處理器獨(dú)立地并行執(zhí)行而高速地執(zhí)行。產(chǎn)業(yè)上的可利用性有關(guān)本發(fā)明的程序生成裝置用于參照包含具有所謂的真相關(guān)的關(guān)系的循環(huán)處理的源程序,生成用來(lái)將由該循環(huán)處理實(shí)現(xiàn)的規(guī)定處理用多個(gè)處理器分擔(dān)而并行執(zhí)行的新的程序。標(biāo)號(hào)說(shuō)明10存儲(chǔ)裝置11源程序12匯編程序13浮動(dòng)二進(jìn)制程序14目標(biāo)程序100程序生成裝置110存儲(chǔ)部120取得部130計(jì)算部131迭代展開部19132名相關(guān)刪除部133等價(jià)關(guān)系計(jì)算部140確定部150生成部210匯編器220鏈接器1000編譯器系統(tǒng)權(quán)利要求1.一種程序生成裝置,通過(guò)參照對(duì)象源程序而生成新的程序,該對(duì)象源程序包含將由1個(gè)以上的命令語(yǔ)句構(gòu)成的塊重復(fù)處理N次的循環(huán)處理,該循環(huán)處理的在有關(guān)第i次執(zhí)行的上述塊內(nèi)的命令語(yǔ)句中定義的變量處于被有關(guān)第j次執(zhí)行的上述塊內(nèi)的命令語(yǔ)句所參照的相關(guān)關(guān)系,其中N彡2,1<i<N,i<j彡N,其特征在于,該程序生成裝置具備計(jì)算單元,以有關(guān)第i次執(zhí)行的上述塊、和有關(guān)第i次以外的執(zhí)行的1個(gè)以上的上述塊為對(duì)象塊,進(jìn)行計(jì)算該對(duì)象塊中的變量表述的等價(jià)關(guān)系的計(jì)算處理;確定單元,基于上述計(jì)算單元計(jì)算出的變量表述的等價(jià)關(guān)系,對(duì)于上述變量之中的、處于上述相關(guān)關(guān)系的全部的對(duì)象變量的表述,進(jìn)行確定與該對(duì)象變量的表述等價(jià)的不具有上述相關(guān)關(guān)系的其他變量的表述的確定處理;以及生成單元,生成用來(lái)進(jìn)行上述循環(huán)處理的M次的處理的、包含如下命令語(yǔ)句的程序,該命令語(yǔ)句包含有上述確定單元確定的其他變量的表述,其中M<N。2.如權(quán)利要求1所述的程序生成裝置,其特征在于,上述確定單元確定的與上述對(duì)象變量的表述等價(jià)的不具有上述相關(guān)關(guān)系的其他變量的表述,是與哪個(gè)對(duì)象變量的表述都不同的變量的表述。3.如權(quán)利要求2所述的程序生成裝置,其特征在于,上述計(jì)算單元將有關(guān)第i次執(zhí)行的上述塊、和有關(guān)第i+Ι次執(zhí)行的上述塊作為上述對(duì)象塊,進(jìn)行上述計(jì)算處理;每當(dāng)上述計(jì)算單元進(jìn)行上述計(jì)算處理時(shí),上述確定單元基于已計(jì)算的各變量表述的等價(jià)關(guān)系,對(duì)于全部的對(duì)象變量的表述,進(jìn)行是否能夠確定如下表述的判斷,該表述是與該對(duì)象變量的表述等價(jià)的不具有上述相關(guān)關(guān)系的其他變量的表述、而且是與哪個(gè)對(duì)象變量的表述都不同的變量的表述;在該判斷處理的結(jié)果是否定的期間,一邊使i每次增加1,一邊使上述計(jì)算單元重復(fù)進(jìn)行上述計(jì)算處理。4.如權(quán)利要求2所述的程序生成裝置,其特征在于,上述程序生成裝置參照的程序是用來(lái)由單一的處理器執(zhí)行的程序;上述生成單元生成的程序是用來(lái)由多個(gè)處理器并行執(zhí)行的程序。5.如權(quán)利要求2所述的程序生成裝置,其特征在于,在M<N的情況下,上述生成單元將所生成的程序變更以使得其還進(jìn)行上述循環(huán)處理的N-M次的處理,并判斷變更后的程序的處理和上述對(duì)象源程序的處理是否為等價(jià),在為等價(jià)的情況下,將上述生成的程序替換為該變更后的程序。6.一種程序生產(chǎn)方法,通過(guò)參照對(duì)象源程序而生產(chǎn)新的程序,該對(duì)象源程序包含將由1個(gè)以上的命令語(yǔ)句構(gòu)成的塊重復(fù)處理N次的循環(huán)處理,該循環(huán)處理的在有關(guān)第i次執(zhí)行的上述塊內(nèi)的命令語(yǔ)句中定義的變量處于被有關(guān)第j次執(zhí)行的上述塊內(nèi)的命令語(yǔ)句所參照的相關(guān)關(guān)系,其中N彡2,1<i<N,i<j<N,其特征在于,該程序生產(chǎn)方法包括計(jì)算步驟,以有關(guān)第i次執(zhí)行的上述塊、和有關(guān)第i次以外的執(zhí)行的1個(gè)以上的上述塊為對(duì)象塊,進(jìn)行計(jì)算該對(duì)象塊中的變量表述的等價(jià)關(guān)系的計(jì)算處理;確定步驟,基于上述計(jì)算步驟計(jì)算出的變量表述的等價(jià)關(guān)系,對(duì)于上述變量之中的、處于上述相關(guān)關(guān)系的全部的對(duì)象變量的表述,進(jìn)行確定與該對(duì)象變量的表述等價(jià)的不具有上述相關(guān)關(guān)系的其他變量的表述的確定處理;以及生成步驟,生成用來(lái)進(jìn)行上述循環(huán)處理的M次的處理的、包含如下命令語(yǔ)句的程序,該命令語(yǔ)句包含有上述確定步驟確定的其他變量的表述,其中M<N。7.一種程序,用來(lái)使程序生成裝置中的處理器進(jìn)行程序生成處理,該程序生成裝置通過(guò)參照對(duì)象源程序而生成新的程序,該對(duì)象源程序包含將由1個(gè)以上的命令語(yǔ)句構(gòu)成的塊重復(fù)處理N次的循環(huán)處理,該循環(huán)處理的在有關(guān)第i次執(zhí)行的上述塊內(nèi)的命令語(yǔ)句中定義的變量處于被有關(guān)第j次執(zhí)行的上述塊內(nèi)的命令語(yǔ)句所參照的相關(guān)關(guān)系,其中N>2,1<i<N,i<j^N,其特征在于,上述程序生成處理包括計(jì)算步驟,以有關(guān)第i次執(zhí)行的上述塊、和有關(guān)第i次以外的執(zhí)行的1個(gè)以上的上述塊為對(duì)象塊,進(jìn)行計(jì)算該對(duì)象塊中的變量表述的等價(jià)關(guān)系的計(jì)算處理;確定步驟,基于上述計(jì)算步驟計(jì)算出的變量表述的等價(jià)關(guān)系,對(duì)于上述變量之中的、處于上述相關(guān)關(guān)系的全部的對(duì)象變量的表述,進(jìn)行確定與該對(duì)象變量的表述等價(jià)的不具有上述相關(guān)關(guān)系的其他變量的表述的確定處理;以及生成步驟,生成用來(lái)進(jìn)行上述循環(huán)處理的M次的處理的、包含如下命令語(yǔ)句的程序,該命令語(yǔ)句包含有上述確定步驟確定的其他變量的表述,其中M<N。全文摘要程序生成裝置參照包含將塊重復(fù)處理N次的、有關(guān)第i次執(zhí)行的上述塊內(nèi)定義的變量處于在有關(guān)第j次執(zhí)行的上述塊內(nèi)被參照的相關(guān)關(guān)系的循環(huán)處理的源程序,計(jì)算有關(guān)第i次的執(zhí)行的上述塊及有關(guān)第i次以外的執(zhí)行的1個(gè)以上的上述塊中的變量表述的等價(jià)關(guān)系,對(duì)于處于上述相關(guān)關(guān)系的全部的對(duì)象變量的表述,確定與該對(duì)象變量的表述等價(jià)的不具有上述相關(guān)關(guān)系的其他變量的表述,生成用來(lái)進(jìn)行上述循環(huán)處理的M次的處理的、包括包含有所確定的其他變量的表述的命令語(yǔ)句的程序,其中N≥2,1≤i<N,i<j≤N,M≤N。文檔編號(hào)G06F9/45GK102483701SQ20118000369公開日2012年5月30日申請(qǐng)日期2011年7月4日優(yōu)先權(quán)日2010年7月5日發(fā)明者井上昭彥,森下廣之,田中旭申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1