JP5215813B2 - プログラム変換方法及びプログラム変換装置 - Google Patents

プログラム変換方法及びプログラム変換装置 Download PDF

Info

Publication number
JP5215813B2
JP5215813B2 JP2008279137A JP2008279137A JP5215813B2 JP 5215813 B2 JP5215813 B2 JP 5215813B2 JP 2008279137 A JP2008279137 A JP 2008279137A JP 2008279137 A JP2008279137 A JP 2008279137A JP 5215813 B2 JP5215813 B2 JP 5215813B2
Authority
JP
Japan
Prior art keywords
subroutine
similar part
basic block
program conversion
generated
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.)
Expired - Fee Related
Application number
JP2008279137A
Other languages
English (en)
Other versions
JP2010108213A (ja
Inventor
将城 大山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2008279137A priority Critical patent/JP5215813B2/ja
Publication of JP2010108213A publication Critical patent/JP2010108213A/ja
Application granted granted Critical
Publication of JP5215813B2 publication Critical patent/JP5215813B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、コンパイラの最適化分野に関し、特に、出力コードサイズをより多く削減するようにプログラムを変換するプログラム変換方法及びプログラム変換装置に関する。
近年、組込みソフトウェアの規模の増大に伴って、出力コードサイズの削減がコンパイラに求められている。出力コードサイズの削減を実現する技術の一つとして、サブルーチン化がある。サブルーチン化とは、ソースプログラムの論理中の類似部分をサブルーチンとして抽出する技術であり、大別して二つの処理により構成される。一つは、ソースプログラムの論理において類似部分を検出する処理である。もう一つは、検出した部分の論理と等価なサブルーチンを生成し、元々の論理を等価なサブルーチンの呼び出しに置換するなどして出力コードの削減を行う処理である。
サブルーチン化の関連技術としては、例えば、特許文献1や特許文献2などが挙げられる。まず、図8乃至10を参照して、特許文献1に開示される技術の構成及び動作を説明する。図8は、特許文献1に開示されるプログラム変換装置の構成を示す図である。図8に示すプログラム変換装置は、基本ブロック内の中間コードに対して類似部分を検出する処理を含んでいる。図8に示すプログラム変換装置は、ソースプログラムを中間コードに変換する際に各演算を解析し、その結果を記録する。そして、ある演算の列が別に記録した演算の列と等価な演算であった場合に、演算対象の変数を引数とするサブルーチンに置換する。特許文献1に開示されるプログラム変換装置による効果の具体例として、例えば、図9に示すソースプログラムを入力とした場合には、図10に示す出力が得られる。
次いで、図11及び12を参照して、特許文献2に開示される技術の構成及び動作を説明する。図11は、特許文献2に開示されるプログラム圧縮方法の構成を示す図である。図11に示すプログラム圧縮方法は、関数単位で類似部分を検出する処理を含んでいる。
図11に示すプログラム圧縮方法は、ソースプログラムを機械語命令列に変換し、各関数定義の機械語命令列を記録する。そして、ある関数を機械語命令列に変換する際に、既に記録された機械語命令列と同一の場合には、既に記録された関数の呼び出し命令に置換を行う(これらの処理を図12のフローチャート図に示す。)。
特開2003−162416号公報 特開2000−259427号公報
しかしながら、特許文献1に開示される技術では、基本ブロックを跨がない類似部分が存在するプログラムに対して特に効果を発揮するものである。また、特許文献2に開示される技術では、同一定義の関数が存在する場合にのみ効果を発揮するものである。すなわち、特許文献1や特許文献2に開示される関連する技術では、サブルーチン化の対象範囲が固定であるという問題を有する。より具体的には、サブルーチン化の対象範囲が、関数全体、或いは、基本ブロック内の一部の論理のみである。
ソースプログラム中に散在する類似部分は、関数全体であったり、基本ブロックの一部であったり、可変長である。このため、サブルーチン化の対象範囲が固定である場合には、最適なサブルーチン化を行うことができない。こうした背景から、類似部分の検出範囲を可変とし、より多くの出力コードサイズを削減するサブルーチン化を実現する技術が求められている。
本発明に係るプログラム変換方法は、プログラム変換装置内の第1の類似部分検出手段が、1つ以上の基本ブロックから構成されているソースプログラムについて、前記基本ブロック内の制御命令を除く命令列に対して類似部分を検出する第1のステップと、前記プログラム変換装置内の第1のサブルーチン化手段が、前記第1の類似部分検出手段により検出された類似部分をサブルーチン化する第2のステップと、前記プログラム変換装置内の第2の類似部分検出手段が、前記基本ブロック内の制御命令を除いた全ての命令列が前記第1のサブルーチン化手段によりサブルーチン化された基本ブロックに対して類似部分を検出する第3のステップと、前記プログラム変換装置内の第2のサブルーチン化手段が、前記第2の類似部分検出手段により検出された類似部分をサブルーチン化する第4のステップと、を有するものである。
これにより、サブルーチン化の対象範囲を可変にして、最適なサブルーチン化を実現することができる。
本発明に係るプログラム変換装置は、1つ以上の基本ブロックから構成されているソースプログラムについて、前記基本ブロック内の制御命令を除く命令列に対して類似部分を検出する第1の類似部分検出手段と、前記第1の類似部分検出手段により検出された類似部分をサブルーチン化する第1のサブルーチン化手段と、前記基本ブロック内の制御命令を除いた全ての命令列が前記第1のサブルーチン化手段によりサブルーチン化された基本ブロックに対して類似部分を検出する第2の類似部分検出手段と、前記第2の類似部分検出手段により検出された類似部分をサブルーチン化する第2のサブルーチン化手段と、を有するものである。
これにより、サブルーチン化の対象範囲を可変にして、最適なサブルーチン化を実現することができる。
本発明にかかるプログラム変換方法及びプログラム変換装置によれば、サブルーチン化の対象範囲を可変にして、最適なサブルーチン化を実現することができる。
以下、本発明を実施するための最良の形態について、図面を参照しながら詳細に説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡潔化がなされている。各図面において同一の構成又は機能を有する構成要素及び相当部分には、同一の符号を付し、その説明を省略する。
上述した関連する技術では、サブルーチン化の対象範囲が固定であるという問題があった。これに対して、本発明では、まず、途中に分岐を含まない表現であって、特定のプロセッサの命令形式に依存しない表現の列を対象にして、サブルーチン化を行う。(尚、以下では、途中に分岐を含まない表現であって、特定のプロセッサの命令形式に依存しない表現を「中間コード」と称する。また、中間コードの列を「基本ブロック」と称する。)そして、基本ブロック内の全命令がサブルーチン化された基本ブロックへの分岐を持つ基本ブロックについても再帰的に解析を行い、サブルーチン化の対象範囲を可変にするものである。
まず、図1を参照して、本発明に係るプログラム変換方法について、その概略を説明する。図1は、本発明に係るプログラム変換方法を示すフローチャート図である。図1に示すように、本発明に係るプログラム変換方法においては、まず、プログラム変換装置内の第1の類似部分検出手段が、1つ以上の基本ブロックから構成されているソースプログラムについて、基本ブロック内の制御命令を除く命令列に対して、類似部分を検出する(ステップS101)。次いで、プログラム変換装置内の第1のサブルーチン化手段が、ステップS101において検出された類似部分をサブルーチン化する(ステップS102)。次いで、プログラム変換装置内の第2の類似部分検出手段が、基本ブロック内の制御命令を除いた全ての命令列がステップS102においてサブルーチン化された基本ブロックに対して、類似部分を検出する(ステップS103)。次いで、プログラム変換装置内の第2のサブルーチン化手段が、ステップS103において検出された類似部分をサブルーチン化する(ステップS104)。
このように、本発明に係るプログラム変換方法では、基本ブロック内の一部の論理から関数全体の論理までの範囲を対象としてサブルーチン化を行う。すなわち、可変長の範囲をサブルーチン化の対象とする。従って、サブルーチン化の対象範囲を可変にして、最適なサブルーチン化を実現することができる。
実施の形態1.
以下、図2乃至7を参照して、実施の形態1に係るプログラム変換方法及びプログラム変換装置について説明する。
図2は、本発明に係るプログラム変換装置の構成例を示す図である。図2に示す例では、プログラム変換装置は、Cソースプログラムを実行ファイルに変換する。図2に示すように、プログラム変換装置100は、中間コード生成部103、サブルーチン化部106、コード生成部109、リンカ112を含む。
中間コード生成部103は、Cソースプログラムを中間コードに変換する。この場合に、中間コード生成部103は、一つのCソースプログラムに対して、一つの中間コードを生成する。図2に示す例では、異なるCソースプログラム101及び102に対して、別々の中間コード104及び105を生成する。
サブルーチン化部106は、中間コード生成部103により生成された中間コードを解析して、サブルーチン化を行った中間コードへと変換する。この場合に、サブルーチン化部106は、一つの中間コードに対して、一つのサブルーチン化を行った中間コードを生成する。図2に示す例では、異なる中間コード104及び105に対して、別々のサブルーチン化を行った中間コード107及び108を生成する。
また、サブルーチン化部106は、図示しない第1の類似部分検出手段、第1のサブルーチン化手段、第2の類似部分検出手段、第2のサブルーチン化手段、及び判定手段を有している。第1の類似部分検出手段は、1つ以上の基本ブロックから構成されているソースプログラムについて、基本ブロック内の制御命令を除く命令列に対して類似部分を検出する。第1のサブルーチン化手段は、第1の類似部分検出手段により検出された類似部分をサブルーチン化する。第2の類似部分検出手段は、基本ブロック内の制御命令を除いた全ての命令列が第1のサブルーチン化手段によりサブルーチン化された基本ブロックに対して類似部分を検出する。第2のサブルーチン化手段は、第2の類似部分検出手段により検出された類似部分をサブルーチン化する。判定手段は、第2のサブルーチン化手段によるサブルーチン化の結果が、第2のサブルーチン化手段による以前のサブルーチン化の結果と比較して変化しているか否かを判定する。尚、サブルーチン化部106による処理の詳細については後述する。
コード生成部109は、中間コードをターゲットプロセッサ用オブジェクトへと変換する。この場合に、コード生成部109は、一つの中間コードに対して、一つのターゲットプロセッサ用オブジェクトを生成する。図2に示す例では、サブルーチン化部106により生成した別々の中間コード107及び108に対して、別々のターゲットプロセッサ用オブジェクト110及び111を生成する。
リンカ112は、複数のターゲットプロセッサ用オブジェクトを1つの実行ファイルへと変換する。図2に示す例では、2つのターゲットプロセッサ用オブジェクトファイル110及び111から、一つの実行ファイル113を生成する。
次に、図3を参照してサブルーチン化部106による処理について説明する。図3は、サブルーチン化部106による処理を説明するためのフローチャート図である。
図3に示すように、サブルーチン化部106による処理は、基本ブロック内の類似部分を検出するステップ(ステップS202)と、1つの基本ブロックを対象にサブルーチン化を行うステップ(ステップS203)と、ステップS203の結果として、分岐命令を除く全ての命令列がサブルーチン化された基本ブロックへの分岐命令を持つ基本ブロックに対して、類似部分を検出するステップ(ステップS204)と、ステップS204の結果に基づいて、複数の基本ブロックを対象にサブルーチン化を行うステップ(ステップS205)と、サブルーチン化の結果が以前のサブルーチン化から変化しているか否かを判定するステップ(ステップS206)を含むことを特徴とする。
まず、プログラム変換装置100により最適化前の中間コードがサブルーチン化部106に入力される(ステップS201)。次いで、サブルーチン化部106は、基本ブロック内の最後に存在する分岐命令を除く命令列に対して、類似部分検出を行う(ステップS202)。より具体的には、サブルーチン化部106は、入力された最適化前の中間コードについて当該中間コード内で同一の命令列を検出する。
次いで、サブルーチン化部106は、1つの基本ブロックを対象にサブルーチン化を行う(ステップS203)。より具体的には、サブルーチン化部106は、最適化前の中間コードとステップS202で検出した類似部分の情報とから、基本ブロック内の命令列を対象にサブルーチン化を行う。
次いで、サブルーチン化部106は、特定の基本ブロックに対して、類似部分を検出する(ステップS204)。ここで、特定の基本ブロックとは、分岐命令を除く全ての命令列がサブルーチン化された基本ブロックへの分岐命令を持つ基本ブロックである。より具体的には、プログラム変換装置100によりステップS203における出力である中間コード、或いは、後述するステップS205における出力である中間コードのいずれかがサブルーチン化部106に対して入力される。そして、サブルーチン化部106は、当該入力についてその基本ブロック内の最後に存在する分岐命令を除く全命令がサブルーチン化されていた場合には、当該基本ブロックへの分岐命令を持つ基本ブロックを対象として類似部分を検出する。
次いで、サブルーチン化部106は、複数の基本ブロックを対象にサブルーチン化を行う(ステップS205)。より具体的には、サブルーチン化部106は、ステップS204における類似部分の検出結果に基づいて、複数の基本ブロックを対象としてサブルーチン化が可能である場合には、複数の基本ブロックを対象として新たにサブルーチン化を行う。
次いで、サブルーチン化部106は、サブルーチン化の結果が以前のサブルーチン化から変化しているか否かを判定する(ステップS206)。より具体的には、サブルーチン化部106は、ステップS205の結果として出力される中間コードが、ステップS204において入力した中間コードと同一か否かを判定する。判定の結果、中間コードが同一である場合(ステップS207でnoの場合。)には、これ以上のサブルーチン化の効果が望めないため、サブルーチン化の処理を終了する。そして、プログラム変換装置100は、サブルーチン化を行った中間コードを出力する(ステップS208)。一方で、中間コードが同一でない場合(ステップS207でyesの場合。)には、さらにサブルーチン化の効果が期待できるため、ステップS204へと戻る。
上述した関連するサブルーチン化方法では、サブルーチン化の対象とする範囲が関数全体を構成する命令列が同一である場合か、或いは、基本ブロックを構成する命令列の一部が同一である場合のみを対象とした。これに対して、本発明に係るプログラム変換方法及びプログラム変換装置では、基本ブロック内の命令列を対象にサブルーチン化を行うのに加えて、さらに可能である場合には当該基本ブロックへの分岐命令を持つ基本ブロックをも含めてサブルーチン化を行う。
次に、図4乃至7に示す具体例を参照して、本発明に係るプログラム変換方法及びプログラム変換装置による効果について説明する。ここでは、効果を示す一例として、図4に示すサンプルCソースコードへの適用を考える。尚、図4において、大文字のアルファベットA−Hはそれぞれ異なる演算を行う行を示すものとし、condは条件分岐のための式を示すものとする。
図5は、図4に示したサンプルCソースコードから生成された中間コードのイメージを示す図である。ここで、図5に示す大文字のアルファベットA−Hは、図4に示すCソースコードのA−Hから生成した中間コードをそれぞれ示している。すなわち、図5は、図4に示すサンプルCソースコードから生成される中間コードを示す例である。中間コード生成部103は、図4に示すソースコードを入力として、図5に示すような中間コードを生成する。
中間コード生成部103は、ソースコードを解析して、基本ブロックを構成する。基本ブロックは、ブロックの最後の命令以外に分岐命令を含まない命令列により構成されるものである。また、基本ブロック間は、分岐命令により遷移するように構成される。図4に示す例の場合には、中間コード生成部103は、ソースコードを解析して、3つの基本ブロックを構成する。すなわち、図4に示すfunc0は、図5に示すように3つの基本ブロックblock0:{FABCD}、block1:{CDEF}、block2:{GH}として構成される。そして、図5において、基本ブロックblock0と基本ブロックblock1及び基本ブロックblock2間の遷移は、基本ブロックblock0に配置された分岐命令(if文)により行われる。尚、func1についても同様に基本ブロック及びその遷移が構成される。
図6は、図5の中間コードに対して、サブルーチン化部106によるサブルーチンの生成結果を示す図である。まず、サブルーチン化部106は、func0内の基本ブロックblock0〜2と、func1内の基本ブロックblock0〜2をそれぞれ対比して類似部分を検出し、検出した類似部分からサブルーチンを生成する。ここでは、この処理を第1のサブルーチン化と称する。図5に示す例では、func0内の基本ブロックblock0と、func1内の基本ブロックblock0とについて、{ABCD}が類似する部分である。このため、この類似部分をサブルーチンSUB0として生成する(図6においてサブルーチンSUB0 114として示す。)。同様にして、サブルーチンSUB1及びサブルーチンSUB2を生成する(図6においてサブルーチンSUB1 115、サブルーチンSUB2 116として示す。)。尚、第1のサブルーチン化処理は、上述した図3に示した処理のうち、ステップS202及びステップS203における処理に相当する。
各中間コードに対するサブルーチン化処理の完了後に、サブルーチン化部106は、サブルーチン化が完了した中間コードに対して、更に、第2のサブルーチン化処理を行う。ここで、第1のサブルーチン化処理と同様に、第2のサブルーチン化処理についても中間コード内において類似部分を検出して、サブルーチン化を行うものであるが、基本ブロック間を跨いでサブルーチン化処理を行う点が、第1のサブルーチン化処理と異なる。尚、第2のサブルーチン化処理は、上述した図3に示した処理のうち、ステップS204及びステップS205における処理に相当する。
図6に示すように、func0内の基本ブロックblock0のFと、func1内の基本ブロックblock0のGとを除いた部分は共通であることが判る。よって、サブルーチン化部106は、この共通部分をサブルーチンとして新たにサブルーチンnewSUB0を生成する。その結果を図7において、サブルーチンnewSUB0 117として示す。
尚、func0内の基本ブロックblock1と基本ブロックblock2はともに、基本ブロック内の最後に存在する分岐命令を除く全命令がサブルーチン化された基本ブロックであり、func0内の基本ブロックblock0は、これら基本ブロックへの分岐命令を有している。また、func1内の基本ブロックblock0についても、基本ブロックblock1と基本ブロックblock2への分岐命令を有している。従って、これら基本ブロックを類似部分の検出対象とし、類似部分である共通部分が検出される。この共通部分を図6において破線により囲んだ部分で示している。
ただし、新たなサブルーチンnewSUB0を生成するときに、第1のサブルーチン化処理において生成したサブルーチンを呼び出すようなソースコードとなる場合には、当該呼び出すサブルーチンを展開して新たなサブルーチンの生成を行うようにする。これは、サブルーチンを呼び出す階層の増加に伴って、制御コードが増加するというデメリットを回避するためである。従って、図7に示す例の場合には、新たに生成したサブルーチンnewSUB0内の構成としては、サブルーチンnewSUB0から第1のサブルーチン化処理において生成したサブルーチンSUB0、サブルーチンSUB1、サブルーチンSUB2を呼び出すような構成とはせずに、サブルーチンnewSUB0内にこれらサブルーチンSUB0、サブルーチンSUB1、サブルーチンSUB2の中身を展開するように構成する。従って、図7に示すように、本発明によれば、基本ブロックを跨いでサブルーチン化処理を行うため、関連する従来の技術よりも多くのサブルーチン化効果が期待できる。
このように、本発明によれば、基本ブロック内の一部の論理から関数全体の論理までの範囲を対象として、可変長の範囲をサブルーチン化の対象とする。このため、基本ブロック内のサブルーチン化が完了した後に、基本ブロック内の最後に存在する制御命令(例えば、分岐命令)を除いた全命令列がサブルーチン化された基本ブロックに対して、該基本ブロックへの制御命令を持つ基本ブロックに対しても解析を行う。そして、解析を行った結果、該基本ブロックへの制御命令を持つ基本ブロック内の命令列も含めてサブルーチン化が可能である場合には、サブルーチン化の対象範囲を該基本ブロックと該基本ブロックへの制御命令を持つ基本ブロックへと拡大する。このようにサブルーチン化の範囲を1つの基本ブロック内から拡大していくことで、基本ブロックを跨いで最大で関数定義全体に対するサブルーチン化を実現することができる。従って、サブルーチン化の対象範囲を可変にして、最適なサブルーチン化を実現することができる。
尚、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
本発明に係るプログラム変換方法を示すフローチャート図である。 本発明の実施の形態1にプログラム変換装置の構成例を示す図である。 本発明の実施の形態1に係るサブルーチン化部による処理を説明するためのフローチャート図である。 本発明の実施の形態1に係るサンプルCソースコードを示す図である。 本発明の実施の形態1に係るサンプルCソースコードから生成された中間コードのイメージを示す図である。 本発明の実施の形態1に係る図5の中間コードに対して、サブルーチン化部によるサブルーチンの生成結果を示す図である。 本発明の実施の形態1に係る新たに生成したサブルーチンを示す図である。 関連するプログラム変換装置の構成を示す図である。 関連するプログラム変換装置に入力するソースプログラムを示す図である。 関連するプログラム変換装置の出力結果を示す図である。 関連するプログラム圧縮方法の構成を示す図である。 関連するプログラム圧縮方法の処理を示すフローチャート図である。
符号の説明
100 プログラム変換装置、
101、102 Cソースプログラム、
103 中間コード生成部、
104、105 中間コード、
106 サブルーチン化部、
107、108 サブルーチン化された中間コード、
109 コード生成部、
110、111 ターゲットプロセッサ用オブジェクト、
112 リンカ、
113 実行ファイル、
114、115、116、117 サブルーチン

Claims (7)

  1. プログラム変換装置内の第1の類似部分検出手段が、1つ以上の基本ブロックから構成されているソースプログラムについて、前記基本ブロック内の制御命令を除く命令列に対して類似部分を検出する第1のステップと、
    前記プログラム変換装置内の第1のサブルーチン化手段が、前記第1の類似部分検出手段により検出された類似部分をサブルーチン化する第2のステップと、
    前記プログラム変換装置内の第2の類似部分検出手段が、前記基本ブロック内の制御命令を除いた全ての命令列が前記第1のサブルーチン化手段によりサブルーチン化された基本ブロックに対して類似部分を検出する第3のステップと、
    前記プログラム変換装置内の第2のサブルーチン化手段が、前記第2の類似部分検出手段により検出された類似部分をサブルーチン化する第4のステップと、を有する
    ことを特徴とするプログラム変換方法。
  2. 前記プログラム変換装置内の判定手段が、前記第2のサブルーチン化手段によるサブルーチン化の結果が、以前のサブルーチン化の結果と比較して変化しているか否かを判定する第5のステップを更に有し、
    前記判定手段による判定の結果、前記第2のサブルーチン化手段によるサブルーチン化の結果が、以前のサブルーチン化の結果と比較して変化しなくなるまでの間、
    前記第2の類似部分検出手段が、前記基本ブロック内の制御命令を除いた全ての命令列が前記第2のサブルーチン化手段によりサブルーチン化された基本ブロックに対して類似部分を検出し、さらに、前記第2のサブルーチン化手段が、前記第2の類似部分検出手段により検出された類似部分をサブルーチン化する
    ことを特徴とする請求項1に記載のプログラム変換方法。
  3. 前記第4のステップにおいて、
    前記第2のサブルーチン化手段が、前記第2の類似部分検出手段により検出された類似部分を新たなサブルーチンとして生成することによりサブルーチン化するときに、前記生成する新たなサブルーチンが前記第1のサブルーチン化手段により生成したサブルーチンを呼び出す場合には、前記第2のステップにおいて生成したサブルーチンを前記生成する新たなサブルーチン内に展開して生成する
    ことを特徴とする請求項1又は2に記載のプログラム変換方法。
  4. 1つ以上の基本ブロックから構成されているソースプログラムについて、前記基本ブロック内の制御命令を除く命令列に対して類似部分を検出する第1の類似部分検出手段と、
    前記第1の類似部分検出手段により検出された類似部分をサブルーチン化する第1のサブルーチン化手段と、
    前記基本ブロック内の制御命令を除いた全ての命令列が前記第1のサブルーチン化手段によりサブルーチン化された基本ブロックに対して類似部分を検出する第2の類似部分検出手段と、
    前記第2の類似部分検出手段により検出された類似部分をサブルーチン化する第2のサブルーチン化手段と、を有する
    ことを特徴とするプログラム変換装置。
  5. 前記第2のサブルーチン化手段によるサブルーチン化の結果が、前記第2のサブルーチン化手段による以前のサブルーチン化の結果と比較して変化しているか否かを判定する判定手段を更に有し、
    前記判定手段による判定の結果、前記第2のサブルーチン化手段によるサブルーチン化の結果が、前記第2のサブルーチン化手段による以前のサブルーチン化の結果と比較して変化しなくなるまでの間、
    前記第2の類似部分検出手段は、前記基本ブロック内の制御命令を除いた全ての命令列が前記第2のサブルーチン化手段によりサブルーチン化された基本ブロックに対して類似部分を検出し、さらに、前記第2のサブルーチン化手段は、前記第2の類似部分検出手段により検出された類似部分をサブルーチン化する
    ことを特徴とする請求項4に記載のプログラム変換装置。
  6. 前記第2のサブルーチン化手段は、
    前記第2の類似部分検出手段により検出された類似部分を新たなサブルーチンとして生成することによりサブルーチン化するときに、前記生成する新たなサブルーチンが前記第1のサブルーチン化手段により生成したサブルーチンを呼び出す場合には、前記第1のサブルーチン化手段で生成したサブルーチンを前記生成する新たなサブルーチン内に展開して生成する
    ことを特徴とする請求項4又は5に記載のプログラム変換装置。
  7. 前記制御命令が、他の基本ブロックへの分岐を制御する分岐命令である
    ことを特徴とする請求項4乃至6いずれか1項に記載のプログラム変換装置。
JP2008279137A 2008-10-30 2008-10-30 プログラム変換方法及びプログラム変換装置 Expired - Fee Related JP5215813B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008279137A JP5215813B2 (ja) 2008-10-30 2008-10-30 プログラム変換方法及びプログラム変換装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008279137A JP5215813B2 (ja) 2008-10-30 2008-10-30 プログラム変換方法及びプログラム変換装置

Publications (2)

Publication Number Publication Date
JP2010108213A JP2010108213A (ja) 2010-05-13
JP5215813B2 true JP5215813B2 (ja) 2013-06-19

Family

ID=42297611

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008279137A Expired - Fee Related JP5215813B2 (ja) 2008-10-30 2008-10-30 プログラム変換方法及びプログラム変換装置

Country Status (1)

Country Link
JP (1) JP5215813B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013210920A (ja) * 2012-03-30 2013-10-10 Nec Corp コンパイル装置、コンパイル方法及びコンパイラ
JP6321325B2 (ja) 2013-04-03 2018-05-09 ルネサスエレクトロニクス株式会社 情報処理装置および情報処理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62257532A (ja) * 1986-05-02 1987-11-10 Nec Corp サブル−チンの最適化生成システム
JPH07334354A (ja) * 1994-06-06 1995-12-22 Matsushita Electric Ind Co Ltd プログラム圧縮装置およびマイクロコントローラ
JPH08263299A (ja) * 1995-03-27 1996-10-11 Sanyo Electric Co Ltd プログラム変換方法
JPH11327887A (ja) * 1998-05-13 1999-11-30 Nec Corp 自動部品化機能付コンパイラシステムおよび記録媒体
JP4345970B2 (ja) * 2004-04-28 2009-10-14 富士通株式会社 プログラム類型化方法

Also Published As

Publication number Publication date
JP2010108213A (ja) 2010-05-13

Similar Documents

Publication Publication Date Title
JP5226328B2 (ja) コード変換装置
TWI463404B (zh) 編譯系統以及編譯方法
CN110569628B (zh) 一种代码的混淆方法以及装置、计算机设备、存储介质
JP2009048252A (ja) プログラム変換装置及びコンパイラプログラム
US9043766B2 (en) Language translation using preprocessor macros
US20100199269A1 (en) Program optimization device and program optimization method
JP2015194881A (ja) コンパイル装置、コンパイラプログラム、コンパイル方法
JP5176478B2 (ja) データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム
JP5215813B2 (ja) プログラム変換方法及びプログラム変換装置
JP4905480B2 (ja) プログラム難読化プログラム及びプログラム難読化装置
JP2008276735A (ja) プログラムコード変換装置及びプログラムコード変換方法
WO2017204139A1 (ja) データ処理装置、データ処理方法、およびプログラム記録媒体
JP6264179B2 (ja) コンパイル方法、コンパイル装置およびコンパイルプログラム
US10140538B2 (en) Computing control device, computing control method, and computer readable medium
JP2005284577A (ja) コンパイラ
US20230376290A1 (en) Domain specific inlining for interpreters
JP6555005B2 (ja) 最適化装置、方法およびプログラム
WO2009128465A1 (ja) サービス変更部品生成システム、方法及び記録媒体
US20170344351A1 (en) Information processing apparatus, compiling management method, and recording medium
JP2012164024A (ja) データフローグラフ生成装置、データフローグラフ生成方法及びデータフローグラフ生成プログラム
JP2009181558A (ja) プログラム変換装置
JP2019219992A (ja) 計算機システム、計算機処理方法及び計算機処理プログラム
JP2006146731A (ja) プログラム、記憶媒体、アセンブラ装置、コンパイラ装置、シミュレータ装置及びエミュレータ装置
JP6066031B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
WO2017056427A1 (ja) プログラム書換装置、方法および記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110915

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130301

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160308

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees