JP4080809B2 - データの記憶領域への配置を決定するコンパイラ装置及び配置決定方法 - Google Patents
データの記憶領域への配置を決定するコンパイラ装置及び配置決定方法 Download PDFInfo
- Publication number
- JP4080809B2 JP4080809B2 JP2002225286A JP2002225286A JP4080809B2 JP 4080809 B2 JP4080809 B2 JP 4080809B2 JP 2002225286 A JP2002225286 A JP 2002225286A JP 2002225286 A JP2002225286 A JP 2002225286A JP 4080809 B2 JP4080809 B2 JP 4080809B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- arrangement
- determined
- storage area
- exclusion
- 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 - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の属する技術分野】
本発明は、ソースプログラムを機械語コードのオブジェクトプログラムに翻訳するコンパイラに関し、特にデータの記憶領域への配置を決定するコンパイラ装置及びコンパイラ装置による変数データの記憶領域への配置決定方法に関する。
【0002】
【従来の技術】
近年、ソフトウェアの大規模化に伴い、大規模システムの開発に適したC言語やC++言語などの高級言語がソフトウェアに使用されるようになってきている。これらの高級言語で記述されたソースプログラムは、専用のコンパイラによってCPUが実行可能な機械語コードに翻訳された後、メモリ上にロードされ、実行される。メモリ上にロードされるプログラムは、命令を示すコードと変数を示すデータとの組から構成され、コードの示す命令は、当該コードと組のデータを参照することにより実行される。
【0003】
ここで、データには、プログラムの実行中常にデータを格納するための記憶領域が確保される大域変数と所定の関数が呼び出されたときにデータを格納するための記憶領域(スタック領域)が確保される自動変数の2種類がある。以下、「自動変数」を「変数」と呼ぶ。
コンパイラは、所定の各関数と組の変数に対して、スタック領域における配置を決定する。図12は、従来法1における、コンパイラによるスタック領域における変数の配置の決定処理を示すフローチャートである。
【0004】
コンパイラは、ソースプログラムを読出し(ステップS1)、読み出したプログラムの構文解析の処理を実行し(ステップS2)、解析した結果に基いて、スタック領域への配置対象となる変数対照表を作成する(ステップS3)。
ここで、「変数対照表」とは、変数の型と変数名とデータサイズ(以下、「サイズ」という。)とアラインメントとの対応関係を示す表のことをいう。
【0005】
又、「アラインメント」とは、変数の型に応じて予め定められている、当該変数のスタック領域への配置に対する制約の大きさを示す値のことであり、例えば、アラインメントが2の場合は、当該変数をアドレスが2の倍数のスタック領域に配置しなければならないことを示し、アラインメントが4の場合は、アドレスが4の倍数のスタック領域に配置しなければならないことを示す。
【0006】
図4は、変数対照表の具体例を示す図である。図4の例では、4つの変数の型(char,int,char[],double[])について、上記の対応関係を示している。
コンパイラは、変数対照表の各変数をスタック領域への配置対象集合の構成要素とし(ステップS4)、配置対象集合からサイズが最小の変数を選択し、当該変数のスタック領域における配置を決定し(ステップS5)、配置対象集合の全ての変数について配置を決定したか否かを判定する(ステップS6)。
【0007】
全ての変数について配置を決定した場合(ステップS6:Y)は、処理を終了し、決定していない場合(ステップS6:N)、ステップS5の処理に戻る。
例えば、図4の変数対象表に示す変数の集合を配置対象集合とした場合には、コンパイラによって決定される変数のスタック領域における配置は、図13に示す配置模式図ようになる。図13は、各変数がサイズの小さい順(a,b,c,dの順)にスタック領域に配置されていることを示している。
【0008】
ここで、図13の各マス目で示す部分には、1バイトの変数が格納され、アドレスは、先頭のマス目を0番地、その右隣のマス目を1番地、そのまた右隣のマス目を2番地、先頭のマス目の下のマス目を8番地というように付与されているものとする。以下、後述する配置模式図についても同様とする。
図13のスタック領域の空き領域の部分は、アラインメントの制約により、変数を配置できなかったスタック領域の空き領域を示している。例えば、変数bのアラインメントは4であるので、コンパイラはbをaの隣のアドレスである1番地から配置することができず、4番地のアドレスから配置している。同様に、変数dは、16番地のアドレスから配置している。
【0009】
これにより、例えば、スタック領域に格納された変数に1命令でアクセス可能な範囲を32バイトであるとすると、1命令で3つの型の異なる変数にアクセスすることが可能となる。
このように、サイズの小さい順にスタック領域における変数の配置を決定することにより、サイズの小さい変数の呼出頻度が高いプログラムにおいて、プログラムの実行速度を速めることができる。
【0010】
又、従来法2として、変数のアラインメントの大きい順に、スタック領域における変数の配置の決定する方法がある。
図14は、アラインメントが大きい順に従ってコンパイラが行うスタック領域における変数の配置の決定処理を示すフローチャートである。
コンパイラは、ソースプログラムを読出し(ステップS11)、読み出したプログラムの構文解析の処理を実行し(ステップS12)、解析した結果に基いて、スタック領域への配置対象となる変数対照表を作成し(ステップS13)、変数対照表の各変数をスタック領域への配置対象集合の構成要素とし(ステップS14)、配置対象集合からアラインメントが最大の変数を選択し、当該変数のスタック領域における配置を決定し(ステップS15)、配置対象集合の全ての変数について配置を決定したか否かを判定する(ステップS16)。
【0011】
全ての変数について配置を決定した場合(ステップS16:Y)は、処理を終了し、決定していない場合(ステップS16:N)、ステップS15の処理に戻る。
例えば、図4の変数対照表に示す変数の集合を配置対象データ集合とした場合には、コンパイラによって決定される変数のスタック領域における配置は、図15に示す配置模式図のようになる。図15は、各変数がアラインメントの大きい順(d,b,c,a(cとaの順は逆でもよい)の順)にスタック領域に配置されていることを示している。
【0012】
図15に示すように、この方法によると、コンパイラは、スタック領域に空き領域を生じさせることなく、各変数をスタック領域に配置することが可能となる。
このように、アラインメントの大きい順にスタック領域における変数の配置を決定することにより、メモリの無駄な使用をなくし、少ないメモリ容量で効率よく、変数をスタック領域に格納することができる。
【0013】
【発明が解決しようとする課題】
しかしながら、従来法1によって、スタック領域における変数の配置を決定した場合には、スタック領域に無駄な空き領域が生じ、メモリ使用量が大きくなるという不具合が生じる。
又、従来法2によって、スタック領域における変数の配置を決定した場合には、サイズの大きい変数がスタック領域の先頭に配置されることがあり、1命令でアクセス可能な変数の数が少なくなり、アラインメントが小さい変数の呼出頻度が多いプログラムにおいて、プログラムの実行速度を低下させるという不具合が生じる。
【0014】
そこで、本発明は、スタック領域における変数の配置の決定を最適化するコンパイラ装置及び配置決定方法を提供することを目的とする。
【0015】
【課題を解決するための手段】
上記課題を解決するために本発明は、データの記憶領域内における位置を特定するための即値をmビットで指定する命令を含む命令セットの命令コードを生成するコンパイラ装置であって、複数のデータ属性を有する複数のデータの集合Xから、前記複数のデータ属性の何れかに基づいて定めた第1基準に従って、順次配置を決定すべきデータを選択する配置決定データ選択手段と、データが選択される毎に、選択されたデータのn(n<=2m)バイトの記憶領域内への配置の決定を試みる配置決定手段と、当該データの配置を前記記憶領域内に決定できない場合毎に、選択されたデータの中から除外対象となるデータを、前記第1基準とは異なる、前記複数のデータ属性の何れかに基いて定めた第2基準に従って特定する除外データ特定手段とを備え、前記配置決定データ選択手段は、前記データ集合Xから前記除外対象データを除いたデータの中から、前記第1基準に従って、順次配置を決定すべきデータを選択する処理を、除外対象データを除く前記データ集合Xの全てのデータの配置が前記記憶領域内に入るように決定されるまで繰返すことを特徴とする。
【0016】
又、本発明は、データの記憶領域内における位置を特定するための即値をmビットで指定する命令を含む命令セットの命令コードを生成するコンパイラ装置におけるデータ配置方法であって、複数のデータ属性を有する複数のデータの集合Xから、データ属性に基づいて定めた第1基準に従って、順次配置を決定すべきデータを選択する配置決定データ選択ステップと、データが選択される毎に、選択されたデータのn(n<=2m)バイトの記憶領域内への配置の決定を試みる配置決定ステップと、当該データの配置を前記記憶領域内に決定できない場合に、選択されたデータの中から除外対象となるデータを、前記第1基準とは異なる、前記複数のデータ属性の何れかに基いて定めた第2基準に従って特定する除外データ特定ステップとを含み、前記配置決定データ選択ステップは、前記データ集合Xから前記除外対象データを除いたデータの中から、前記第1基準に従って、順次配置を決定すべきデータを選択する処理を、除外対象データを除く前記データ集合Xの全てのデータの配置が前記記憶領域内に入るように決定されるまで繰返すことを特徴とする。
【0017】
又、本発明は、データの記憶領域内における位置を特定するための即値をmビットで指定する命令を含む命令セットの命令コードを生成するコンパイラ装置に用いられるプログラムであって、前記プログラムは、複数のデータ属性を有する複数のデータの集合Xから、データ属性に基づいて定めた第1基準に従って、順次配置を決定すべきデータを選択する配置決定データ選択ステップと、データが選択される毎に、選択されたデータのn(n<=2m)バイトの記憶領域内への配置の決定を試みる配置決定ステップと、当該データの配置を前記記憶領域内に決定できない場合に、選択されたデータの中から除外対象となるデータを、前記第1基準とは異なる、前記複数のデータ属性の何れかに基いて定めた第2基準に従って特定する除外データ特定ステップとを含み、前記配置決定データ選択ステップは、前記データ集合Xから前記除外対象データを除いたデータの中から、前記第1基準に従って、順次配置を決定すべきデータを選択する処理を、除外対象データを除く前記データ集合Xの全てのデータの配置が前記記憶領域内に入るように決定されるまで繰返すことを特徴とする。
【0018】
又、本発明は、データの記憶領域内における位置を特定するための即値をmビットで指定する命令を含む命令セットの命令コードを生成するコンパイラに用いられるプログラムを記録したコンピュータ読取可能な記録媒体であって、前記プログラムは、複数のデータ属性を有する複数のデータの集合Xから、データ属性に基づいて定めた第1基準に従って、順次配置を決定すべきデータを選択する配置決定データ選択ステップと、データが選択される毎に、選択されたデータのn(n<=2m)バイトの記憶領域内への配置の決定を試みる配置決定ステップと当該データの配置を前記記憶領域内に決定できない場合に、選択されたデータの中から除外対象となるデータを、前記第1基準とは異なる、データ属性に基いて定めた第2基準に従って特定する除外データ特定ステップとを含み、前記配置決定データ選択ステップは、前記データ集合Xから前記除外対象データを除いたデータの中から、前記第1基準に従って、順次配置を決定すべきデータを選択する処理を、除外対象データを除く前記データ集合Xの全てのデータの配置が前記記憶領域内に入るように決定されるまで繰返すことを特徴とする。
【0019】
【発明の実施の形態】
<構成>
図1は、本実施の形態におけるコンパイラ装置100の構成を示す。コンパイラ装置100は、CPU101、表示部102、入力部103、記憶部104、から構成される。
【0020】
CPU101は、入力部103から入力されるユーザー指示に応じて、記憶部104に格納されているコンパイラプログラム204を実行することにより、コンパイルを行い、ソースプログラム205に含まれる変数のスタック領域における配置を決定し、ソースプログラム205のコードをオブジェクトプログラムのコード305に翻訳する。
【0021】
具体的には、記憶部104からソースプログラム205を読出し、読み出したソースプログラム205の構文解析の処理を実行し、解析した結果に基いて、スタック領域への変数の配置決定処理を行い、オブジェクトプログラム305のコードを生成する。
なお、配置決定処理の詳細については後述する。
【0022】
表示部102は、コンパイル処理の結果を表示する。
入力部103は、ユーザーからコンパイルの実行指示の入力を受付ける。
記憶部104は、コンパイラプログラム204とソースプログラム205を記憶している。又、コンパイルの実行によりソースプログラムを翻訳したオブジェクトプログラム305を記憶する。
【0023】
図2は、ソースプログラム205の具体例を示す。図2には、ソースプログラム205の一部の例が示されている。図2の102〜200は、関数f(void)を定義している部分であり、110〜113は当該関数の変数を宣言している部分である。この宣言部分の記述に基いて、図4に示すような変数対照表がCPU101の実行するコンパイル処理によって作成される。
<動作>
次にCPU101の行うスタック領域における変数の配置決定処理について説明する。図3は、上記配置決定処理を示すフローチャートである。以下、図3に示すフローチャートを参照して説明する。
【0024】
CPU101は、記憶部104からソースプログラム205を読出し、読み出したプログラムの構文解析の処理を実行し、解析した結果に基いて、変数対照表を作成し(ステップS1002)、除外集合を空集合とし(ステップS1003)、変数対照表に含まれる各変数から構成される配置対象集合を作成し(ステップS1004)、配置対象集合からアラインメントが最大の変数を選択し(ステップS1005)、当該変数のアラインメントに基いて、スタック領域の空き領域内の、当該変数を配置可能で配置がまだ未決定の領域において、当該変数のアドレスが最小となるように当該変数の配置を決定し(ステップS1006)、配置を決定した変数を配置対象集合から除き(ステップS1007)、配置を決定した変数を配置決定済集合の構成要素とし(ステップS1008)、決定した配置が、スタック領域における先頭アドレスが示す領域から所定の範囲内の領域にあるか否かを判定する(ステップS1009)。
【0025】
所定の範囲内の領域に無い場合(ステップS1009:N)、配置決定済集合からサイズが最大の変数(集合に含まれる変数が1つの場合は、当該変数)を特定し、特定した変数を配置決定済集合から除き、除外集合に加え(ステップS1010)、特定した変数を除く残りの配置決定済集合に含まれる各変数を配置対象集合に加え(ステップS1011)、ステップS1005〜ステップS1009の処理を繰り返す。
【0026】
所定の範囲内の領域に有る場合(ステップS1009:Y)、配置対象集合に含まれる変数が無くなったか否かを判定する(ステップS1012)。
無くなっていない場合(ステップS1012:N)、ステップS1005の処理に戻る。
無くなっている場合(ステップS1012:Y)、除外集合に含まれる変数が有るか否かを判定する(ステップS1013)。
【0027】
変数が有る場合(ステップS1013:Y)、除外集合からサイズが最小の変数(除外集合に含まれる変数が1個の場合は、当該変数)を選択し(ステップS1014)、当該変数のアラインメント値に基いて、スタック領域の空き領域内の、当該変数を配置可能で、配置がまだ未決定の領域において、当該変数のアドレスが最小となるように当該変数の配置を決定し(ステップS1015)、配置を決定した当該変数を除外集合から除き(ステップS1016)、ステップS1013の処理に戻る。
【0028】
変数が無い場合(ステップS1013:N)、処理を終了する。
具体例として図2の例を用いて説明すると、CPU101は、主記憶部104から、図2に示すソースプログラムの一部を含むソースプログラムを読出し、読み出したプログラムの構文解析の処理を実行し、解析した結果に基いて、図4に示す変数の変数対照表を作成し(ステップS1002)、当該変数対照表に含まれる各変数であるa,b,c,dから構成される配置対象集合を作成し(ステップS1004)、当該配置対象集合からアラインメントが最大の変数であるdを取り出し(ステップS1005)、変数dのアラインメント値が8であるので、スタック領域の空き領域内の、変数dを配置可能で配置がまだ未決定の領域(アドレスが8の倍数である領域)において、変数dを配置するアドレス(ここでは、スタック領域の各1バイト領域毎に、先頭から順に0番地、1番地、2番地というようにアドレスが付与されるものとする。)が最小となる0番地から変数dを配置することを決定し(ステップS1006)、変数dを配置対象集合から除き(ステップS1007)、変数dを配置決定済集合の構成要素とし(ステップS1008)、決定した配置が、スタック領域における先頭アドレスが示す領域から所定の範囲内の領域(ここでは、先頭アドレス0番地から31番地の示す32バイトの領域を所定の範囲の領域とする。)にあるか否かを判定する(ステップS1009)。この段階における変数dのスタック領域における配置を示す配置模式図を図5に示す。
【0029】
変数dの配置は、アドレス0番地からであるので、CPU101は、所定の範囲内の領域に有ると判定し(ステップS1009:Y)、配置対象集合に含まれる変数が無くなったか否かを判定する(ステップS1012)。
配置対象集合には、a,b,cの3つの変数が残っているので、CPU101は、無くなっていないと判定し(ステップS1012:N)、ステップS1005において、アラインメントが最大である変数bを配置対象集合から選択し、変数bのアラインメントが4であるので、0番地から31番地のスタック領域には、図5に示すように既に変数dが配置されているので、変数bを配置可能で配置が未決定の領域(アドレスが4の倍数である領域で、アドレスが32番地以降のスタック領域)において、変数bを配置するアドレスが最小となる32番地から変数bを配置することを決定し(ステップS1006)、変数bを配置対象集合から除き(ステップS1007)、変数bを配置決定済集合の構成要素とし(ステップS1008)、決定した配置が、スタック領域における先頭アドレス0番地から31番地の示す領域の範囲内にあるか否かを判定する(ステップS1009)。この段階における変数d,bのスタック領域における配置を示す配置模式図を図6に示す。
【0030】
変数bの配置は、アドレス32番地からであるので、CPU101は、所定の範囲内の領域に無いと判定し(ステップS1009:N)、変数bと変数dとから成る配置決定済集合からサイズが最大の変数dを特定し、特定した変数dを配置決定済集合から除き、除外集合に加え(ステップS1010)、特定した変数dを除く残りの配置決定済集合に含まれる変数bを配置対象集合に加え(ステップS1011)、ステップS1005〜ステップS1009及びステップS1012の処理を繰り返し、変数b,c,aの順(cとaの順序は逆であってもよい。)に配置を決定し、変数b,c,aを配置決定済集合の構成要素とする。
【0031】
これにより、変数b,c,aは、図7の配置模式図に示すようにスタック領域のアドレスが0番地から23番地のスタック領域に配置されるので、CPU101は、所定の範囲内の領域に有ると判定し(ステップS1009:Y)、さらに配置対象集合に含まれる変数が無くなったと判定し(ステップS1012:Y)、除外集合に変数dが加えられているので、ステップS1013において、変数が有ると判定し(ステップS1013:Y)、除外集合からサイズが最小の変数d(この例では、除外集合には変数dのみが含まれているので、変数dが選択される。)を選択し(ステップS1014)、当該変数のアラインメントが8であるので、スタック領域の空き領域内の当該変数を配置可能な領域(24番地以降の領域でアドレスが8の倍数の領域)において、変数dのアドレスが最小となる24番地から変数dを配置することを決定し(ステップS1015)、変数dを除外集合から除き(ステップS1016)、さらに除外集合に含まれる変数が無いと判定し(ステップS1013:N)、配置決定処理を終了する。
【0032】
これにより、変数a,b,c,dは、図8の配置模式図に示されるように配置されることになり、スタック領域に格納された変数に1命令でアクセス可能な範囲を例えば、32バイトであるとすると、上記の例においては、1命令でソースプログラムに記述されている全ての変数にアクセスすることが可能となる。
図9は、上記の配置決定処理によって決定されたスタック領域の配置に変数a,b,c,dが配置された場合におけるオブジェクトプログラム例を示す。図9の210は、スタック領域の23番地に格納されている変数aをレジスタr0に格納する命令を示している。同様に、図9の220は、スタック領域の0番地に格納されている変数bをレジスタr0に格納する命令を、図9の230は、スタック領域の4番地に格納されている変数cをレジスタr0に格納する命令を、図9の240は、スタック領域の24番地に格納されている変数dをレジスタr0に格納する命令をそれぞれ示している。
【0033】
一方、図10は、従来法1によって、図11は、従来法2よって、それぞれ変数a,b,c,dがスタック領域に配置された場合におけるオブジェクトプログラム例を示す。
図10では、スタック領域の0番地、4番地、8番地にそれぞれ格納されている変数a,b,cをそれぞれレジスタr0に格納する命令310〜330は、1命令になっているが、図10の340及び350に示すように、スタック領域の32番地に格納されている変数dをレジスタr0に格納する命令が2命令になっており、命令コードのサイズも増加している。
【0034】
同様に図11では、ステック領域の0番地に格納されている変数dをレジスタr0に格納する命令470は1命令になっているが、図11の410及び420、430及び440、450及び460に示すように、スタック領域に格納されている変数a,b,cのそれぞれをレジスタr0に格納する各命令が2命令になっており、命令コードのサイズも増加している。
【0035】
このように、本実施の形態における配置決定処理によって変数の配置を実行することにより、スタック領域の変数へのアクセスに要する命令数や命令のコードサイズを少なくすることができる。
<補足>
以上、本発明に係るコンパイラ装置について、実施の形態に基づいて説明したが、本発明はこれら実施の形態に限られないことは勿論である。即ち、
(1)本実施の形態においては、図3のステップS1005において、アラインメントを基準として、配置対象集合から変数を選択することとしたが、他のデータ属性を基準としてもよい。例えば、図16に示すように、変数対照表に各変数の参照頻度に関する情報を加え、参照頻度の多い順に変数を選択することとしてもよい。又、スタック領域に格納されている変数にアクセスするために、制約の少ない命令を使用可能か否か、或いはコードサイズの小さい命令を使用可能か否かを基準としてもよい。
【0036】
同様に図3のステップS1010において、サイズを基準として、配置決定済集合から除外する変数を特定することとしたが、他のデータ属性を基準としてもよい。例えば、図16に示すように、変数対照表に各変数の参照頻度に関する情報を加え、参照頻度の少ない順に変数を特定することとしてもよい。参照頻度に関する情報は、例えばソースプログラムの構文解析の結果に基いて作成したり、シュミレータを用いてソースプログラムを実行させた結果に基いて作成することができる。
【0037】
又、スタック領域に格納されている変数にアクセスするために、制約の少ない命令を使用可能か否か、或いはコードサイズの小さい命令を使用可能か否かを基準としてもよい。
(2)同様に図3のステップ1013において、変数のデータサイズを基準にして、除外集合から変数を選択することとしたが、他のデータ属性を基準としてもよい。例えば、図16に示すように、変数対照表に各変数の参照頻度に関する情報を加え、参照頻度の多い順に変数を選択することとしてもよい。
【0038】
又、スタック領域に格納されている変数にアクセスするために、制約の少ない命令を使用可能か否か、或いはコードサイズの小さい命令を使用可能か否かを基準としてもよい。
(3)図3のフローチャートに示すスタック領域における変数の配置決定処理においては、除外集合に含まれる変数の配置決定をステップS1013〜ステップS1016に示す処理によって行うこととしたが、上記処理の代わりに除外集合に含まれる変数に対して、ステップS1005〜ステップS1012に示す処理を繰返すことにより、所定の範囲のスタック領域毎に当該変数の配置決定を行うこととしてもよい。
【0039】
例えば、上記処理によって、0番地から31番地までの32バイトのスタック領域内において最初に配置対象集合に含まれる各変数の配置を決定し、次に当該スタック領域内において配置を決定できなかった除外集合に含まれる変数に対して、32番地から63番地までの32バイトのスタック領域内を割付対象領域として、各変数の配置を決定し、さらに64番地から95番地までの32バイトのスタック領域内を割付対象領域として、同様の配置決定を繰返すというようにして、全ての変数に対して、配置が決定されるまで所定の範囲のスタック領域毎に配置決定を繰り返すこととしてもよい。
【0040】
なお、除外集合に含まれる変数に対して配置決定を繰り返す領域は、上記のように同一サイズの領域毎とは限らず、スタック領域のオフセット境界(命令サイズ,レイテンシ,命令の組み合わせ等により決定される)によって分けられ,そのオフセット値が小さい領域から割付対象領域となる。
【0041】
【発明の効果】
(1)本発明は、データの記憶領域内における位置を特定するための即値をmビットで指定する命令を含む命令セットの命令コードを生成するコンパイラ装置であって、複数のデータ属性を有する複数のデータの集合Xから、前記複数のデータ属性の何れかに基づいて定めた第1基準に従って、順次配置を決定すべきデータを選択する配置決定データ選択手段と、データが選択される毎に、選択されたデータのn(n<=2m)バイトの記憶領域内への配置の決定を試みる配置決定手段と当該データの配置を前記記憶領域内に決定できない場合毎に、選択されたデータの中から除外対象となるデータを、前記第1基準とは異なる、前記複数のデータ属性の何れかに基いて定めた第2基準に従って特定する除外データ特定手段とを備え、前記配置決定データ選択手段は、前記データ集合Xから前記除外対象データを除いたデータの中から、前記第1基準に従って、順次配置を決定すべきデータを選択する処理を、除外対象データを除く前記データ集合Xの全てのデータの配置が前記記憶領域内に入るように決定されるまで繰返すことを特徴とする構成を備える。
【0042】
(2)又、前記配置決定データ選択手段はさらに、前記処理の繰返しを終了した後、前記除外データ特定手段によって特定された除外対象データの中から前記第1基準に従って、順次配置を決定すべきデータを再選択する再選択処理を行い、前記配置決定手段はさらに、前記配置決定データ選択手段によってデータが再選択される毎に新たな記憶領域内への当該データの配置を決定する再配置決定処理を行い、前記除外データ特定手段は、当該データの配置を前記記憶領域内に決定できない場合毎に、選択されたデータの中から再除外対象となるデータを、前記第2基準に従って特定する再除外対象特定処理を行い、前記配置決定データ選択手段は、前記除外対象データの中から前記再除外対象データを除いたデータ群について、前記再選択処理を、再除外対象データを除く前記除外対象データの全てのデータの配置が前記新たな記憶領域内に入るように決定されるまで繰返し、前記再選択処理の繰返しを終了した後、配置未決定の再除外対象データが残っている場合に限り、前記配置決定データ選択手段はさらに、再除外対象データについて、前記再選択処理を繰返し、前記配置決定手段はさらに、配置を決定すべき再除外対象データが選択される毎に前記再配置決定処理を繰返し、前記除外データ特定手段はさらに、前記再配置決定処理により当該再除外対象データの配置を決定できない場合毎に、前記再除外対象特定処理を繰返すこととしてもよい。
【0043】
(3)又、本発明は、データの記憶領域内における位置を特定するための即値をmビットで指定する命令を含む命令セットの命令コードを生成するコンパイラ装置におけるデータ配置方法であって、複数のデータ属性を有する複数のデータの集合Xから、データ属性に基づいて定めた第1基準に従って、順次配置を決定すべきデータを選択する配置決定データ選択ステップと、データが選択される毎に、選択されたデータのn(n<=2m)バイトの記憶領域内への配置の決定を試みる配置決定ステップと当該データの配置を前記記憶領域内に決定できない場合に、選択されたデータの中から除外対象となるデータを、前記第1基準とは異なる、前記複数のデータ属性の何れかに基いて定めた第2基準に従って特定する除外データ特定ステップとを含み、前記配置決定データ選択ステップは、前記データ集合Xから前記除外対象データを除いたデータの中から、前記第1基準に従って、順次配置を決定すべきデータを選択する処理を、除外対象データを除く前記データ集合Xの全てのデータの配置が前記記憶領域内に入るように決定されるまで繰返すこととしてもよい。
【0044】
(4)又、前記配置決定データ選択ステップはさらに、前記処理の繰返しを終了した後、前記除外データ特定ステップによって特定された除外対象データの中から前記第1基準に従って、順次配置を決定すべきデータを再選択する再選択処理を行い、前記配置決定ステップはさらに、前記配置決定データ選択ステップによってデータが再選択される毎に新たな記憶領域内への当該データの配置を決定する再配置決定処理を行い、前記除外データ特定ステップは、当該データの配置を前記記憶領域内に決定できない場合毎に、選択されたデータの中から再除外対象となるデータを、前記第2基準に従って特定する再除外対象特定処理を行い、前記配置決定データ選択ステップは、前記除外対象データの中から前記再除外対象データを除いたデータ群について、前記再選択処理を、再除外対象データを除く前記除外対象データの全てのデータの配置が前記新たな記憶領域内に入るように決定されるまで繰返し、前記再選択処理の繰返しを終了した後、配置未決定の再除外対象データが残っている場合に限り、前記配置決定データ選択ステップはさらに、再除外対象データについて、前記再選択処理を繰返し、前記配置決定ステップはさらに、配置を決定すべき再除外対象データが選択される毎に前記再配置決定処理を繰返し、前記除外データ特定ステップはさらに、前記再配置決定処理により当該再除外対象データの配置を決定できない場合毎に、前記再除外対象特定処理を繰返すこととしてもよい。
【0045】
(5)又、本発明は、データの記憶領域内における位置を特定するための即値をmビットで指定する命令を含む命令セットの命令コードを生成するコンパイラ装置に用いられるプログラムであって、前記プログラムは、複数のデータ属性を有する複数のデータの集合Xから、データ属性に基づいて定めた第1基準に従って、順次配置を決定すべきデータを選択する配置決定データ選択ステップと、データが選択される毎に、選択されたデータのn(n<=2m)バイトの記憶領域内への配置の決定を試みる配置決定ステップと、当該データの配置を前記記憶領域内に決定できない場合に、選択されたデータの中から除外対象となるデータを、前記第1基準とは異なる、前記複数のデータ属性の何れかに基いて定めた第2基準に従って特定する除外データ特定ステップとを含み、前記配置決定データ選択ステップは、前記データ集合Xから前記除外対象データを除いたデータの中から、前記第1基準に従って、順次配置を決定すべきデータを選択する処理を、除外対象データを除く前記データ集合Xの全てのデータの配置が前記記憶領域内に入るように決定されるまで繰返すこととしてもよい。
【0046】
(6)又、前記配置決定データ選択ステップはさらに、前記処理の繰返しを終了した後、前記除外データ特定ステップによって特定された除外対象データの中から前記第1基準に従って、順次配置を決定すべきデータを再選択する再選択処理を行い、前記配置決定ステップはさらに、前記配置決定データ選択ステップによってデータが再選択される毎に新たな記憶領域内への当該データの配置を決定する再配置決定処理を行い、前記除外データ特定ステップは、当該データの配置を前記記憶領域内に決定できない場合毎に、選択されたデータの中から再除外対象となるデータを、前記第2基準に従って特定する再除外対象特定処理を行い、前記配置決定データ選択ステップは、前記除外対象データの中から前記再除外対象データを除いたデータ群について、前記再選択処理を、再除外対象データを除く前記除外対象データの全てのデータの配置が前記新たな記憶領域内に入るように決定されるまで繰返し、前記再選択処理の繰返しを終了した後、配置未決定の再除外対象データが残っている場合に限り、前記配置決定データ選択ステップはさらに、再除外対象データについて、前記再選択処理を繰返し、前記配置決定ステップはさらに、配置を決定すべき再除外対象データが選択される毎に前記再配置決定処理を繰返し、前記除外データ特定ステップはさらに、前記配置決定処理により当該再除外対象データの配置を決定できない場合毎に、再除外対象特定処理を繰返すこととしてもよい。
【0047】
(7)又、本発明は、データの記憶領域内における位置を特定するための即値をmビットで指定する命令を含む命令セットの命令コードを生成するコンパイラに用いられるプログラムを記録したコンピュータ読取可能な記録媒体であって、前記プログラムは、複数のデータ属性を有する複数のデータの集合Xから、データ属性に基づいて定めた第1基準に従って、順次配置を決定すべきデータを選択する配置決定データ選択ステップと、データが選択される毎に、選択されたデータのn(n<=2m)バイトの記憶領域内への配置の決定を試みる配置決定ステップと当該データの配置を前記記憶領域内に決定できない場合に、選択されたデータの中から除外対象となるデータを、前記第1基準とは異なる、データ属性に基いて定めた第2基準に従って特定する除外データ特定ステップとを含み、前記配置決定データ選択ステップは、前記データ集合Xから前記除外対象データを除いたデータの中から、前記第1基準に従って、順次配置を決定すべきデータを選択する処理を、除外対象データを除く前記データ集合Xの全てのデータの配置が前記記憶領域内に入るように決定されるまで繰返すこととしてもよい。
【0048】
(8)又、前記配置決定データ選択ステップはさらに、前記処理の繰返しを終了した後、前記除外データ特定ステップによって特定された除外対象データの中から前記第1基準に従って、順次配置を決定すべきデータを再選択する再選択処理を行い、前記配置決定ステップはさらに、前記配置決定データ選択ステップによってデータが再選択される毎に新たな記憶領域内への当該データの配置を決定する再配置決定処理を行い、前記除外データ特定ステップは、当該データの配置を前記記憶領域内に決定できない場合毎に、選択されたデータの中から再除外対象となるデータを、前記第2基準に従って特定する再除外対象特定処理を行い、前記配置決定データ選択ステップは、前記除外対象データの中から前記再除外対象データを除いたデータ群について、前記再選択処理を、再除外対象データを除く前記除外対象データの全てのデータの配置が前記新たなの記憶領域内に入るように決定されるまで繰返し、前記再選択処理の繰返しを終了した後、配置未決定の再除外対象データが残っている場合に限り、前記配置決定データ選択ステップはさらに、再除外対象データについて、前記再選択処理を繰返し、前記配置決定ステップはさらに、配置を決定すべき再除外対象データが選択される毎に前記再配置決定処理を繰返し、前記除外データ特定ステップはさらに、前記配置決定処理により当該再除外対象データの配置を決定できない場合毎に、再除外対象特定処理を繰返すこととしてもよい。
【0049】
これにより、所定サイズの記憶領域におけるデータの配置の決定を最適化することができる。
ここで、(1)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記配置決定データ選択手段は、アラインメントの降順に、前記集合Xから配置を決定すべきデータを選択し、前記第2基準は、データのサイズの降順であり、前記除外データ特定手段は、データのサイズの降順に、選択されたデータの中から除外対象となるデータを特定することとしてもよい。
【0050】
又、(1)の構成において、前記コンパイラはさらに、前記配置決定データ選択手段による前記処理の繰返しが終了後、前記除外データ特定手段によって特定された除外対象データの中からデータのサイズの昇順に従って、順次データを選択する再配置決定データ選択手段を備え、前記配置決定手段はさらに、前記再配置決定データ選択手段によってデータが選択される毎に当該データの前記記憶領域内への配置を決定することとしてもよい。
【0051】
又、(2)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記第2基準は、データのサイズの降順であることとしてもよい。
又、(3)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記配置決定データ選択ステップは、アラインメントの降順に、前記集合Xから配置を決定すべきデータを選択し、前記第2基準は、データのサイズの降順であり、前記除外データ特定ステップは、データのサイズの降順に、選択されたデータの中から除外対象となるデータを特定することとしてもよい。
【0052】
又、(4)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記第2基準は、データのサイズの降順であることとしてもよい。
又、(5)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記配置決定データ選択ステップは、アラインメントの降順に、前記集合Xから配置を決定すべきデータを選択し、前記第2基準は、データのサイズの降順であり、前記除外データ特定ステップは、データのサイズの降順に、選択されたデータの中から除外対象となるデータを特定することとしてもよい。
【0053】
又、(6)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記第2基準は、データのサイズの降順であることとしてもよい。
又、(7)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記配置決定データ選択ステップは、アラインメントの降順に、前記集合Xから配置を決定すべきデータを選択し、前記第2基準は、データのサイズの降順であり、前記除外データ特定ステップは、データのサイズの降順に、選択されたデータの中から除外対象となるデータを特定することとしてもよい。
【0054】
又、(8)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記第2基準は、データのサイズの降順であることとしてもよい。
これにより、所定サイズの記憶領域に無駄な空き領域を生じさせることなく、少ない命令数でできるだけ多くの種類のデータにアクセス可能となるように、データの記憶領域における配置を決定することができる。
【0055】
ここで、(2)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記第2基準は、データの参照頻度の昇順であることとしてもよい。
又、(1)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記配置決定データ選択手段は、アラインメントの降順に、前記集合Xから配置を決定すべきデータを選択し、前記第2基準は、データの参照頻度の昇順であり、前記除外データ特定手段は、データの参照頻度の昇順に、選択されたデータの中から除外対象となるデータを特定することとしてもよい。
【0056】
又、前記コンパイラはさらに、前記配置決定データ選択手段による前記処理の繰返しが終了後、特定された除外対象データの中からデータの参照頻度の降順に従って、順次データを選択する再配置決定データ選択手段を備え、前記配置決定手段はさらに、前記再配置決定データ選択手段によってデータが選択される毎に当該データの前記記憶領域内への配置を決定することとしてもよい。
【0057】
又、(3)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記配置決定データ選択ステップは、アラインメントの降順に、前記集合Xから配置を決定すべきデータを選択し、前記第2基準は、データの参照頻度の昇順であり、前記除外データ特定ステップは、データの参照頻度の昇順に、選択されたデータの中から除外対象となるデータを特定することとしてもよい。
【0058】
又、(4)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記第2基準は、データの参照頻度の昇順であることとしてもよい。
又、(5)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記配置決定データ選択ステップは、アラインメントの降順に、前記集合Xから配置を決定すべきデータを選択し、前記第2基準は、データの参照頻度の昇順であり、前記除外データ特定ステップは、データの参照頻度の昇順に、選択されたデータの中から除外対象となるデータを特定することとしてもよい。
【0059】
又、(6)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記第2基準は、データの参照頻度の昇順であることとしてもよい。
又、(7)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記配置決定データ選択ステップは、アラインメントの降順に、前記集合Xから配置を決定すべきデータを選択し、前記第2基準は、データの参照頻度の昇順であり、前記除外データ特定ステップは、データの参照頻度の昇順に、選択されたデータの集合から除外対象となるデータを特定することとしてもよい。
【0060】
又、(8)の構成において、前記第1基準は、データの前記記憶領域への配置の制約の大きさを示すアラインメントの降順であり、前記第2基準は、データの参照頻度の昇順であることとしてもよい。
これにより、所定サイズの記憶領域に無駄な空き領域を生じさせることなく、データの参照頻度を考慮した複数のデータの上記記憶領域内への配置が可能となるので、オブジェクトプログラムの実行効率を向上させることができる。
【図面の簡単な説明】
【図1】本実施の形態におけるコンパイラ装置100の構成を示す。
【図2】ソースプログラム205の具体例を示す。
【図3】CPU101の行うスタック領域における変数の配置決定処理を示す。
【図4】変数対照表の具体例を示す。
【図5】変数dのスタック領域における配置を示す配置模式図を示す。
【図6】変数d,bのスタック領域における配置を示す配置模式図を示す。
【図7】変数b,c,aのスタック領域における配置を示す配置模式図を示す。
【図8】変数a,b,c,dのスタック領域における配置を示す配置模式図を示す。
【図9】配置決定処理によって決定されたスタック領域の配置に変数a,b,c,dが配置された場合におけるオブジェクトプログラム例を示す。
【図10】従来法1によって変数a,b,c,dがスタック領域に配置された場合におけるオブジェクトプログラム例を示す。
【図11】従来法2によって変数a,b,c,dがスタック領域に配置された場合におけるオブジェクトプログラム例を示す。
【図12】従来法1における、コンパイラによるスタック領域における変数の配置の決定処理を示すフローチャートである。
【図13】従来法1によって決定されたスタック領域の配置に変数a,b,c,dが配置された場合における変数a,b,c,dのスタック領域における配置を示す配置模式図を示す。
【図14】従来法2における、コンパイラによるスタック領域における変数の配置の決定処理を示すフローチャートである。
【図15】従来法2によって決定されたスタック領域の配置に変数a,b,c,dが配置された場合における変数a,b,c,dのスタック領域における配置を示す配置模式図を示す。
【図16】参照頻度に関する情報を含む変数対照表の具体例を示す。
【符号の説明】
101 CPU
102 表示部
103 入力部
104 記憶部
204 コンパイラプログラム
205 ソースプログラム
305 オブジェクトプログラム
Claims (6)
- データの記憶領域内における位置を特定するための即値をmビットで指定する命令を含む命令セットの命令コードを生成するコンパイラ装置であって、
複数種類のデータの集合Xから、各種類のデータに応じて定められた数値であって、該数値の整数倍のアドレスに前記データが配置される必要があるという制約を示す数値であるところのアラインメントの大きさが大きい順番に従って、n(n≦2 m )バイトの記憶領域内における配置を決定すべきデータを順次選択する配置決定データ選択手段と、
データが選択される毎に、前記nバイトの記憶領域内において、選択されたデータの配置の決定を試みる配置決定手段と、
前記nバイトの記憶領域内において、当該データの配置を決定できない場合毎に、選択されたデータの中から除外対象となるデータを、データのサイズが大きい順番に従って特定する除外データ特定手段と
を備え、
前記配置決定データ選択手段は、前記データ集合Xから前記除外対象データを除いたデータの中から、アラインメントの大きさが大きい順番に従って、順次配置を決定すべきデータを選択する処理を、除外対象データを除く前記データ集合Xの全てのデータの配置が前記nバイトの記憶領域内において決定されるまで繰返す
ことを特徴とするコンパイラ装置。 - 前記コンパイラ装置はさらに、前記配置決定データ選択手段による前記処理の繰返しが終了後、前記除外データ特定手段によって特定された除外対象データの中からデータのサイズが小さい順番に従って、順次データを選択する再配置決定データ選択手段を備え、
前記配置決定手段はさらに、前記再配置決定データ選択手段によってデータが選択される毎に前記nバイトの記憶領域内において、当該データの配置を決定する
ことを特徴とする請求項1記載のコンパイラ装置。 - 前記配置決定データ選択手段はさらに、前記処理の繰返しを終了した後、前記除外データ特定手段によって特定された除外対象データの中からアラインメントの大きさが大きい順番に従って、順次配置を決定すべきデータを再選択する再選択処理を行い、
前記配置決定手段はさらに、前記配置決定データ選択手段によってデータが再選択される毎に新たな記憶領域内において、当該データの配置を決定する再配置決定処理を行い、
前記除外データ特定手段は、前記新たな記憶領域内において、当該データの配置を決定できない場合毎に、選択されたデータの中から再除外対象となるデータを、データのサイズが大きい順番に従って特定する再除外対象特定処理を行い、
前記配置決定データ選択手段は、前記除外対象データの中から前記再除外対象データを除いたデータ群について、前記再選択処理を、再除外対象データを除く前記除外対象データの全てのデータの配置が前記新たな記憶領域内において、決定されるまで繰返し、
前記再選択処理の繰返しを終了した後、配置未決定の再除外対象データが残っている場合に限り、
前記配置決定データ選択手段はさらに、再除外対象データについて、前記再選択処理を繰返し、
前記配置決定手段はさらに、配置を決定すべき再除外対象データが選択される毎に前記再配置決定処理を繰返し、
前記除外データ特定手段はさらに、前記再配置決定処理により当該再除外対象データの配置を決定できない場合毎に、前記再除外対象特定処理を繰返す
ことを特徴とする請求項1記載のコンパイラ装置。 - データの記憶領域内における位置を特定するための即値をmビットで指定する命令を含む命令セットの命令コードを生成するコンパイラ装置であって、
複数種類のデータの集合Xから、各種類のデータに応じて定められた数値であって、該数値の整数倍のアドレスに前記データが配置される必要があるという制約を示す数値であるところのアラインメントの大きさが大きい順番に従って、n(n≦2 m )バイトの記憶領域内における配置を決定すべきデータを順次選択する配置決定データ選択手段と、
データが選択される毎に、前記nバイトの記憶領域内において、選択されたデータの配置の決定を試みる配置決定手段と、
前記nバイトの記憶領域内において、当該データの配置を決定できない場合毎に、選択されたデータの中から除外対象となるデータを、データの参照頻度が少ない順番に従って特定する除外データ特定手段と
を備え、
前記配置決定データ選択手段は、前記データ集合Xから前記除外対象データを除いたデータの中から、アラインメントの大きさが大きい順番に従って、順次配置を決定すべきデータを選択する処理を、除外対象データを除く前記データ集合Xの全てのデータの配置が前記nバイトの記憶領域内において、決定されるまで繰返す
ことを特徴とするコンパイラ装置。 - 前記コンパイラ装置はさらに、前記配置決定データ選択手段による前記処理の繰返しが終了後、特定された除外対象データの中からデータの参照頻度の多い順番に従って、順次データを選択する再配置決定データ選択手段を備え、
前記配置決定手段はさらに、前記再配置決定データ選択手段によってデータが選択される毎に当該データの前記記憶領域内への配置を決定する
ことを特徴とする請求項4記載のコンパイラ装置。 - 前記配置決定データ選択手段はさらに、前記処理の繰返しを終了した後、前記除外データ特定手段によって特定された除外対象データの中からアラインメントの大きさが大きい順番に従って、順次配置を決定すべきデータを再選択する再選択処理を行い、
前記配置決定手段はさらに、前記配置決定データ選択手段によってデータが再選択される毎に新たな記憶領域内において、当該データの配置を決定する再配置決定処理を行い、
前記除外データ特定手段は、前記新たな記憶領域内において、当該データの配置を決定できない場合毎に、選択されたデータの中から再除外対象となるデータを、データの参照頻度が少ない順番に従って特定する再除外対象特定処理を行い、
前記配置決定データ選択手段は、前記除外対象データの中から前記再除外対象データを除いたデータ群について、前記再選択処理を、再除外対象データを除く前記除外対象データの全てのデータの配置が前記新たな記憶領域内において、決定されるまで繰返し、
前記再選択処理の繰返しを終了した後、配置未決定の再除外対象データが残っている場合に限り、
前記配置決定データ選択手段はさらに、再除外対象データについて、前記再選択処理を繰返し、
前記配置決定手段はさらに、配置を決定すべき再除外対象データが選択される毎に前記再配置決定処理を繰返し、
前記除外データ特定手段はさらに、前記再配置決定処理により当該再除外対象データの配置を決定できない場合毎に、前記再除外対象特定処理を繰返す
ことを特徴とする請求項4記載のコンパイラ装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002225286A JP4080809B2 (ja) | 2002-08-01 | 2002-08-01 | データの記憶領域への配置を決定するコンパイラ装置及び配置決定方法 |
US10/631,960 US7185324B2 (en) | 2002-08-01 | 2003-08-01 | Compiler apparatus and method for determining locations for data in memory area |
CN03158025.4A CN1231840C (zh) | 2002-08-01 | 2003-08-01 | 编译程序器和用来在存储区域内确定数据的存储单元的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002225286A JP4080809B2 (ja) | 2002-08-01 | 2002-08-01 | データの記憶領域への配置を決定するコンパイラ装置及び配置決定方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004070439A JP2004070439A (ja) | 2004-03-04 |
JP4080809B2 true JP4080809B2 (ja) | 2008-04-23 |
Family
ID=32013007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002225286A Expired - Lifetime JP4080809B2 (ja) | 2002-08-01 | 2002-08-01 | データの記憶領域への配置を決定するコンパイラ装置及び配置決定方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7185324B2 (ja) |
JP (1) | JP4080809B2 (ja) |
CN (1) | CN1231840C (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6986128B2 (en) * | 2000-01-07 | 2006-01-10 | Sony Computer Entertainment Inc. | Multiple stage program recompiler and method |
WO2003032157A1 (en) * | 2001-09-18 | 2003-04-17 | Asahi Kasei Kabushiki Kaisha | Compiler |
US7024663B2 (en) | 2002-07-10 | 2006-04-04 | Micron Technology, Inc. | Method and system for generating object code to facilitate predictive memory retrieval |
WO2007068148A1 (en) * | 2005-12-17 | 2007-06-21 | Intel Corporation | Method and apparatus for partitioning programs to balance memory latency |
KR101334176B1 (ko) * | 2007-01-19 | 2013-11-28 | 삼성전자주식회사 | 멀티 프로세서 시스템 온 칩에서의 메모리 관리 방법 |
US8892951B2 (en) * | 2011-09-28 | 2014-11-18 | International Business Machines Corporation | Fault localization for data-centric programs |
CN110941564B (zh) * | 2018-09-25 | 2022-03-04 | 杭州海康威视数字技术股份有限公司 | 一种存储空间分配方法、装置、电子设备以及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3602857B2 (ja) * | 1991-04-23 | 2004-12-15 | 株式会社日立製作所 | 多機種対応型情報処理システム、および、方法 |
US6643760B2 (en) * | 2001-04-30 | 2003-11-04 | Zilog, Inc. | Architecture to relax memory performance requirements |
JP2004227501A (ja) * | 2003-01-27 | 2004-08-12 | Yamaha Corp | データ転送制御装置および方法 |
-
2002
- 2002-08-01 JP JP2002225286A patent/JP4080809B2/ja not_active Expired - Lifetime
-
2003
- 2003-08-01 US US10/631,960 patent/US7185324B2/en active Active
- 2003-08-01 CN CN03158025.4A patent/CN1231840C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CN1489045A (zh) | 2004-04-14 |
JP2004070439A (ja) | 2004-03-04 |
US7185324B2 (en) | 2007-02-27 |
CN1231840C (zh) | 2005-12-14 |
US20040172624A1 (en) | 2004-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4699580B2 (ja) | データ処理システムの配列の静的初期化方法、データ処理方法、並びにデータ処理システム及びその制御手順をコンピュータに実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体 | |
JP4130713B2 (ja) | プログラム変換装置 | |
JP3933380B2 (ja) | コンパイラ | |
US8266603B2 (en) | Technique for allocating register to variable for compiling | |
TWI387927B (zh) | 程式碼轉換之部分無效碼刪除最佳化 | |
US9740716B2 (en) | System and method for dynamically selecting a garbage collection algorithm based on the contents of heap regions | |
JP2005032259A (ja) | 共有ライブラリーシステム及び前記システム構築方法 | |
US20090106744A1 (en) | Compiling and translating method and apparatus | |
JP5244421B2 (ja) | 情報処理装置およびプログラム分割方法 | |
JP2012038231A (ja) | バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム | |
US20060130020A1 (en) | Compile time linking via hashing technique | |
JP4080809B2 (ja) | データの記憶領域への配置を決定するコンパイラ装置及び配置決定方法 | |
CN105094941B (zh) | 一种实现多语言的方法及装置 | |
JP2004259007A (ja) | コンパイラ装置、コンパイラプログラム、及び記録媒体 | |
CN110764777B (zh) | 一种elf文件生成方法、elf文件、设备及存储介质 | |
Sagonas et al. | Experimental evaluation and improvements to linear scan register allocation | |
JP2007004506A (ja) | 記憶管理装置 | |
JP2017010123A (ja) | コンパイルを行う計算機、コンパイラ方法、およびコンパイラプログラム | |
JP2004265279A (ja) | コンパイラ装置、コンパイル方法、コンパイラプログラム、及び記録媒体 | |
CN116954622B (zh) | 抽象语法树和源代码坐标的关联方法、电子设备和介质 | |
CN117270988A (zh) | 一种基于快照的深度模型快速加载方法及装置 | |
JPH08212081A (ja) | メモリ割り付け方法、並びにコンパイル方法およびコンパイラ | |
JP5325309B2 (ja) | プログラム実行時における文字列の処理を最適化する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム | |
JP2000148506A (ja) | キャッシュメモリへのプログラム割り付け装置、キャッシュメモリへのプログラム割り付け方法、及び、その方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
CN117892836A (zh) | 支持多后端计算硬件的深度学习机器指令生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050704 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070703 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070831 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071016 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071214 |
|
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: 20080115 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080207 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110215 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4080809 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110215 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120215 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130215 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130215 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140215 Year of fee payment: 6 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |