JP2009181558A - プログラム変換装置 - Google Patents
プログラム変換装置 Download PDFInfo
- Publication number
- JP2009181558A JP2009181558A JP2008022884A JP2008022884A JP2009181558A JP 2009181558 A JP2009181558 A JP 2009181558A JP 2008022884 A JP2008022884 A JP 2008022884A JP 2008022884 A JP2008022884 A JP 2008022884A JP 2009181558 A JP2009181558 A JP 2009181558A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- specific value
- program
- value
- area
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】プログラム変換装置において、同じ値の初期値を多く含む変数がソースプログラムに多く含まれる場合にも、実行形式プログラムのコードサイズを削減する。
【解決手段】変数初期値認識部103は、ソースプログラムに含まれている変数とその初期値とを認識する。変数配置場所決定部104は、前記認識された変数が初期値に特定値を多く含む変数である場合には、その変数を、プログラムの実行前に特定の値で初期化される特定値領域に配置すると決定する。変数特定値領域配置部106は、前記初期値に特定値を多く含む変数を前記特定値領域に配置し、更に、この変数の初期値に前記特定値以外の値が含まれる場合には、その特定値以外の値に対する初期化コードを生成する。従って、初期値に特定値を多く含む変数に対して、初期値データ全てを実行形式プログラムに含める必要がない。
【選択図】図1
【解決手段】変数初期値認識部103は、ソースプログラムに含まれている変数とその初期値とを認識する。変数配置場所決定部104は、前記認識された変数が初期値に特定値を多く含む変数である場合には、その変数を、プログラムの実行前に特定の値で初期化される特定値領域に配置すると決定する。変数特定値領域配置部106は、前記初期値に特定値を多く含む変数を前記特定値領域に配置し、更に、この変数の初期値に前記特定値以外の値が含まれる場合には、その特定値以外の値に対する初期化コードを生成する。従って、初期値に特定値を多く含む変数に対して、初期値データ全てを実行形式プログラムに含める必要がない。
【選択図】図1
Description
本発明は、入力されたソースプログラムをオブジェクトプログラムに変換して出力するプログラム変換装置に関し、特に初期値を持つ変数をメモリ上のどの領域に配置するかの処理に関するものである。
従来のプログラム変換装置は、入力されたソースプログラムに含まれている各変数が初期値を持つ場合、これらの初期値は、実行形式プログラムの実行開始時にRAM上の変数領域を初期化する際に用いるデータとして、実行形式プログラムに含めて出力している。そのため、ソースプログラム内に同じ初期値を持つ変数が多数記述されている場合、実行形式プログラムのコードサイズが大きくなるという問題がある。
前記の問題を解決するため、例えば、特許文献1では、初期化の際に初期化データを用いるのではなく、初期化コードを用いる方法を用いて、連続する変数定義に対して同じ初期値が多い場合に最初にその領域全体を同じ初期値で初期化するコードを生成し、その後に、異なる部分の初期化を行うコードを生成する方法を開示している。
また、特許文献2では、初期値が特定の値の変数を解析し、実行時に特定の値で初期化される領域にその変数を配置する方法を開示している。
特許第3214608号公報
特開2004−280311号公報
しかしながら、特許文献1で説明している方法は、メモリに領域を確保する変数に適用する場合、初期値データの値による変数の配置場所を最適化しないため、特定の初期値を含む変数定義とそうでない変数定義が交互に現れるようなソースプログラムに対しては、十分に効果を発揮できないという問題が存在した。また、初期値が特定値である変数を一箇所にまとめて配置しないため、一箇所にまとめて配置する方法と比べて、特定値で初期化するためのコードが増加するという問題があった。図7のソースプログラムを入力とし、前記方法を用いて変換した場合の変換結果の一例の概念図を図13に示す。
一方、特許文献2で説明している方法は、特定値で初期化される変数を一箇所にまとめて初期化することが可能となるため、初期値が特定値のみである変数の初期化においては、非常に効果的であって、前記特許文献1記載の方法よりも実行形式プログラムのコードサイズを削減できるものの、配列や構造体などにおいて、初期値の一部に特定値以外の値を含む変数には適用できないという問題があった。図7のソースプログラムを入力とし、前記方法を用いて変換した場合の変換結果の一例の概念図を図14に示す。
本発明は前記問題に鑑みてなされたものであり、その目的は、プログラム変換装置において、同じ値の初期値を多く含む変数がソースプログラムに多数含まれる場合においても、実行形式プログラムのコードサイズを従来よりも有効に削減することにある。
前記目的を達成するため、本発明では、特定の値の初期値を多く含む変数をも、実行時に特定の値で初期化される領域に配置し、その特定値以外の値の初期値については初期化コードを生成することとする。
具体的に、請求項1記載の発明のプログラム変換装置は、入力されたソースプログラムを変換してオブジェクトプログラムを出力するプログラム変換装置であって、前記ソースプログラムに含まれている変数とその初期値とを認識する認識手段と、前記認識手段で認識された変数を、プログラムの実行前に特定の値で初期化される特定値領域に配置すると共に、前記変数の初期値に前記特定値以外の値が含まれていた場合に、その特定値以外の初期値に対する初期化コードを生成する変数特定値領域配置手段とを備えたことを特徴とする。
請求項2記載の発明は、前記請求項1記載のプログラム変換装置において、更に、前記認識手段で認識された変数を、初期化データで初期化されるデータ領域に配置した場合のコストと、特定の値で初期化される特定値領域に配置した場合のコストとを計算し、その結果に応じて前記変数をデータ領域に配置するか特定値領域に配置するかを決定する配置場所決定手段を備えたことを特徴とする。
請求項3記載の発明は、前記請求項2記載のプログラム変換装置において、前記コストは、コードサイズであることを特徴とする。
請求項4記載の発明は、前記請求項2記載のプログラム変換装置において、前記コストは、前記変数の初期化に要する実行時間であることを特徴とする。
請求項5記載の発明は、前記請求項1〜4の何れか1項に記載のプログラム変換装置において、更に、ユーザから、特定値以外の値が含まれている変数を前記特定値領域に配置するか否かの指定を受け付ける受付手段を備えたことを特徴とする。
請求項6記載の発明は、前記請求項1〜5の何れか1項に記載のプログラム変換装置において、前記特定値は、0であることを特徴とする。
請求項7記載の発明は、前記請求項1〜6の何れか1項に記載のプログラム変換装置において、更に、変数の初期値が即値でない場合に変数の初期値を計算する変数初期値計算手段を備えたことを特徴とする。
以上により、請求項1〜7記載の発明では、特定の値の初期値を多く含む変数を、実行時に特定の値で初期化される領域に配置し、その特定値以外の値の初期値については初期化コードを生成するので、特定値の初期値を多く含む変数の初期化のためのコードサイズを削減できる。
特に、請求項2記載の発明では、変数をデータ領域に配置するか特定値領域に配置するかを自動で判断することができるので、プログラマによる指定なしに、コストを最小とする最適なデータ配置のオブジェクトファイルを得ることができる。
また、請求項3記載の発明では、コードサイズを最小とするデータ配置のオブジェクトファイルを得ることができる。
更に、請求項4記載の発明では、変数の初期化に要する実行時間を最小とするデータ配置のオブジェクトファイルを得ることができる。
加えて、請求項5記載の発明では、変数をデータ領域と特定値領域との何れに配置するかをプログラマが指定可能となるので、プログラマが望む変数配置のオブジェクトファイルを得ることができる。
また、請求項6記載の発明では、特定値領域を業界標準のオブジェクトフォーマットExecutable and Linkable Format(ELF)の.bssセクションと対応付けすることが可能となり、生成されるオブジェクトを業界標準フォーマットに準拠させることができるようになる。尚、.bssセクションは、プログラムが動き出す前にデータを0で初期化するセクションであり、オブジェクトファイル内に領域を持たないセクションとしてELFで定義されている。
更に、請求項7記載の発明では、C++言語等により記述された初期化関数(コンストラクタ)により、変数の初期化が行われる変数に対しても、初期化のためのコードサイズを削減できる。
以上説明したように、請求項1〜7記載の発明のプログラム変換装置によれば、初期値に特定値を多く含む変数に対しても、個々の初期値全てをデータとして実行形式プログラムに含める必要がなくなるので、その分、実行形式プログラムのコードサイズを削減することができる効果を奏する。
以下、本発明のプログラム変換装置の実施形態について図面を用いて説明する。
<構成>
図1は、本実施形態におけるプログラム変換装置の構成図である。図1には、便宜上、プログラム変換装置102に入力されるソースプログラム101、及びプログラム変換装置102から出力されたオブジェクトプログラム107を記載している。プログラム変換装置102は、コンピュータに備えられたメモリに格納されたプログラムがCPUにより実行されることにより、入力されたソースプログラム101をオブジェクトプログラム107に変換して出力する、いわゆるコンパイラであって、ソースプログラム中の変数の定義を変換するために、変数初期値認識部103、変数配置場所決定部104、変数データ領域配置部105及び変数特定値領域配置部106を具備する。
図1は、本実施形態におけるプログラム変換装置の構成図である。図1には、便宜上、プログラム変換装置102に入力されるソースプログラム101、及びプログラム変換装置102から出力されたオブジェクトプログラム107を記載している。プログラム変換装置102は、コンピュータに備えられたメモリに格納されたプログラムがCPUにより実行されることにより、入力されたソースプログラム101をオブジェクトプログラム107に変換して出力する、いわゆるコンパイラであって、ソースプログラム中の変数の定義を変換するために、変数初期値認識部103、変数配置場所決定部104、変数データ領域配置部105及び変数特定値領域配置部106を具備する。
前記変数初期値認識部(認識手段)103は、入力されたソースプログラム101に含まれている各変数のうち、メモリに領域を確保する変数(例えば、C言語では、外部変数と静的変数)と、その初期値とを認識する。
また、前記変数配置場所決定部(配置場所決定手段)104は、変数初期値認識部103で認識された変数の初期値の値に基づき、変数をデータ領域に配置するか特定値領域に配置するかを決定する。
更に、前記変数データ領域配置部105は、変数配置場所決定部104が変数をデータ領域に配置すると決定した場合に、変数をデータ領域に配置すると共に、その領域にコピーするための初期値データを生成する。変数特定値領域配置部(変数特定値領域配置手段)106は、前記変数配置場所決定部104が変数を特定値領域に配置すると決定した場合に、変数を特定値領域に配置すると共に、変数の初期値に特定値以外の値が含まれていた場合には、その値による初期化コードを生成する。
尚、前記以外のプログラム変換装置100の構成要素(例えば、構文解析部、中間コード最適化部、レジスタ割り付け部等)については、一般的なプログラム変換装置で用いられているものと同じであるので、ここでは、説明を省略する。
<動作>
次に、上述の変数配置場所決定部104の動作について、図2のフローチャートを用いて説明する。
次に、上述の変数配置場所決定部104の動作について、図2のフローチャートを用いて説明する。
先ず、変数配置場所決定部104は、配置場所を決定する変数に対して、変数をデータ領域に配置した場合に必要となる初期値データのサイズを計算する(ステップS201)。ここで、初期値データサイズは、前記変数のサイズと等しく、変数のサイズがxバイトの初期値データのサイズは、xバイトとなる。次に、変数を特定値領域に配置した場合に必要となる特定値以外の値による初期化に必要な初期化コードのサイズを計算する(ステップS202)。例えば、メモリに即値をストアするコードのサイズがnバイトであり、変数の初期値に含まれる特定値以外の値の数がy個である場合の初期化コードの総サイズは、n*yバイトとなる。次に、データ領域に配置した場合のサイズと特定値領域に配置した場合のサイズを比較して(ステップS203)、特定値領域に配置する方がサイズが小さい場合には、変数を特定値領域に配置することを決定する(ステップS204)。そうでない場合には、変数をデータ領域に配置することを決定する(ステップS205)。
尚、図2のフローチャートでは、コードサイズに着目し、コードサイズの小さくなる配置を選択する方法を示したが、コードサイズの代わりに、プログラムの実行時に、初期化に要する実行サイクル数、つまり、実行時間が小さくなる配置を選択するようにしても良い。図3に、実行サイクル数に着目した場合の変数配置場所決定部104の動作を示すフローチャートを示す。
また、データ領域と特定値領域との何れに配置するのかを決定するのに、変数の初期値に含まれる特定値以外の値の数を使用しても良い。図4に、変数の初期値に含まれる特定値以外の値の数に着目した場合の変数配置場所決定部104の動作を示すフローチャートを示す。
更に、プログラム変換装置に与えられたオプションによって、コードサイズに着目して配置場所を決定するのか、実行サイクル数に着目して配置場所を決定するのかを変更するようにしても良い。例えば、コードサイズ優先で最適化を行うオプションが与えられた場合には、図2のフローチャートで配置場所を決定し、実行速度優先で最適化を行うオプションが与えられた場合には、図3のフローチャートで配置場所を決定するようにしても良い。
加えて、特定の変数に対して、特定値領域に配置する旨の指定がソースプラグラム中に記述されているか、又はオプションで指定されている場合には、無条件で、特定値領域に配置するようにして、その他の場合は、コードサイズに着目して配置場所を決定するようにしても良い。図5に、前記決定方法を選択した場合の変数配置場所決定部104の動作を示すフローチャートを示す。
次に、上述の変数特定値領域配置部106の動作について、図6のフローチャートを用いて説明する。
先ず、変数を特定値領域に配置する(ステップS601)。具体的には、特定値領域に変数のサイズ分の領域を確保する。次に、変数の初期値に特定値以外の値で未だ初期化コードを生成していない値が存在するか否かを判定する(ステップS602)。存在していた場合は、その値による初期化コードを生成し(ステップS603)、ステップS602の処理に戻る。存在していない場合は、その変数に対する変数特定値領域配置部106の処理は終了する。
変数初期値認識部103及び変数データ領域配置部105の動作については、一般的なプログラム変換装置で用いられているものと同じであるので、ここでは、説明を省略する。
<具体例>
以下、本実施形態における変数配置場所決定部104及び変数特定値領域配置部106の具体的な動作について、図7に示したソースプログラムを入力とした場合を例として説明する。
以下、本実施形態における変数配置場所決定部104及び変数特定値領域配置部106の具体的な動作について、図7に示したソースプログラムを入力とした場合を例として説明する。
ここで、特定値は0であるとし、int型(整数型)のサイズは4バイトであるとする。また、即値をメモリにストアするのに必要なコードのサイズは8バイトであるとする。
最初に、変数array1に対する、変数配置場所決定部104による配置場所を決定する処理を説明する。先ず、データ領域に配置した場合のサイズを計算する(ステップS201)。ここで、array1は、要素数が5であるint型の配列であるので、サイズは、4バイト*5で、20バイトとなる。次に、特定値領域に配置した場合のサイズを計算する(ステップS202)。ここで、array1には0以外の値の初期値は存在しないので、サイズは、8バイト*0で、0バイトとなる。次に、データ領域に配置した場合のサイズと特定値領域に配置した場合のサイズとを比較する(ステップS203)。ここで、特定値領域に配置した場合の方のサイズが小さいので、配置場所を特定値領域に決定する(ステップS204)。
次に、変数array2に対する、変数配置場所決定部104による配置場所を決定する処理を説明する。先ず、データ領域に配置した場合のサイズを計算する(ステップS201)。ここで、array2は、要素数が5であるint型の配列であるので、サイズは、4バイト*5で、20バイトとなる。次に、特定値領域に配置した場合のサイズを計算する(ステップS202)。ここで、array2の初期値で0でないものの数は4であるので、サイズは、8バイト*4で、32バイトとなる。次に、データ領域に配置した場合のサイズと特定値領域に配置した場合のサイズとを比較する(ステップS203)。ここで、特定値領域に配置した場合の方のサイズが大きいので、配置場所をデータ領域に決定する(ステップS205)。
次に、変数array3に対する、変数配置場所決定部104による配置場所を決定する処理を説明する。先ず、データ領域に配置した場合のサイズを計算する(ステップS201)。ここで、array3は、要素数が5であるint型の配列であるので、サイズは、4バイト*5で、20バイトとなる。次に、特定値領域に配置した場合のサイズを計算する(ステップS202)。ここで、array3の初期値で0でないものの数は1であるので、サイズは、8バイト*1で、8バイトとなる。次に、データ領域に配置した場合のサイズと特定値領域に配置した場合のサイズとを比較する(ステップS203)。ここで、特定値領域に配置した場合の方のサイズが小さいので、配置場所を特定値領域に決定する(ステップS204)。
変数array4については、初期値がarray1と同じであるので、説明を省略する。
次に、変数array1に対する変数特定値領域配置部106による処理を説明する。先ず、変数array1を特定値領域に配置するために、特定値領域に変数のサイズ20バイトを確保する(ステップS601)。尚、この領域は、実際には、プログラムの実行時にRAM上に確保されるものであり、オブジェクトプログラムのサイズには含まれない。これは、データ領域の場合も同様である。データ領域に配置した場合は、別途、プログラムの実行時にRAM上のデータ領域に値をコピーする初期値データが必要となる。初期値データは、オブジェクトプログラムのサイズに含まれる。次に、未だ初期化コードを生成していない特定値以外の初期値が存在するかどうか判定する(ステップS602)。ここで、array1の初期値は、全て0であるので、そのような初期値は存在せず、変数特定値領域配置部106は、変数array1に対する処理を終える。
次に、変数array3に対する、変数特定値領域配置部106による処理を説明する。先ず、変数array3を特定値領域に配置するために、特定値領域に変数のサイズ20バイトを確保する(ステップS601)。次に、未だ初期化コードを生成していない特定値以外の初期値が存在するか判定する(ステップS602)。ここで、array3の初期値で0でないものとして、array3[2]の初期値1が見つかるので、”array3[2]=1”に相当する初期化コードを生成する(ステップS603)。次に、未だ初期化コードを生成していない特定値以外の初期値が存在するか判定する(ステップS602)。そのような初期値は存在せず、変数特定値領域配置部106は変数array3 に対する処理を終える。
変数array4に対する処理は、変数array1と同様であるので、説明を省略する。
以上の処理の結果、生成されるオブジェクトファイルの概念図を図8に示す。array3を特定値領域に配置し、特定値以外の初期値に対しては、初期化コードを生成するようにしたので、array3をデータ領域に配置する場合(図14)に比べて、コードサイズが削減される。ここで、初期化コードは、プログラムの実行前に実行される初期化関数の形式で生成される。図8の関数”_init_func”がそれにあたる。図8では、分かり易さのため、初期化コードをC言語の関数定義の形式で記述しているが、実際には、それを変換した結果の機械語命令コードが、オブジェクトファイルには格納される。尚、初期化関数のコードを生成する方法は、C++言語等において、変数の動的初期化を実現する方法として、一般に用いられる方法である。
以上により、本実施形態によれば、初期値に特定値を多く含む変数に対して、個々の初期値全てをデータとして実行形式プログラムに含める必要がなくなるので、その分、実行形式プログラムのコードサイズを削減することができる。
以上、本発明に係るプログラム変換装置について、実施形態に基づいて説明したが、本発明はこの実施形態に限られないことは勿論である。即ち、例えば、
(1)本実施形態におけるプログラム変換装置は、更に、プログラマから、変数を前記特定値領域に配置するか否かの指定を受け付ける変数配置指定受付部(受付手段)(図示せず)を備えていても良い。例えば、ソースプログラム上で、“#pragma _position_bss 変数名”と記述された変数を認識し、その変数を特定値領域に配置するように決定しても良い。また、“#pragma _position_no_bss 変数名”と記述された変数を認識し、その変数を特定値領域に配置しないように決定しても良い。また、オプション“-mposition-bss-diffvalue-num=N”を認識し、特定値と異なる初期値がN個未満の変数を特定値領域に配置するように決定しても良い。具体例として、#pragmaにより変数の配置場所指定が記述された図9のソースプログラムを変換した結果のオブジェクトファイルの概念図を図10に示す。
(1)本実施形態におけるプログラム変換装置は、更に、プログラマから、変数を前記特定値領域に配置するか否かの指定を受け付ける変数配置指定受付部(受付手段)(図示せず)を備えていても良い。例えば、ソースプログラム上で、“#pragma _position_bss 変数名”と記述された変数を認識し、その変数を特定値領域に配置するように決定しても良い。また、“#pragma _position_no_bss 変数名”と記述された変数を認識し、その変数を特定値領域に配置しないように決定しても良い。また、オプション“-mposition-bss-diffvalue-num=N”を認識し、特定値と異なる初期値がN個未満の変数を特定値領域に配置するように決定しても良い。具体例として、#pragmaにより変数の配置場所指定が記述された図9のソースプログラムを変換した結果のオブジェクトファイルの概念図を図10に示す。
(2)本実地の形態におけるオブジェクトファイルのフォーマットとして、Executable and Linkable Format(ELF)を採用し、特定値を0とし、特定値領域を.bssセクションとしても良い。これにより、標準のオブジェクトフォーマットで、本発明を実現できる。
(3)本実施形態におけるプログラム変換装置は、更に、変数の初期値が即値でない場合に変数の初期値を計算する変数初期値計算部(変数初期値計算手段)(図示せず)を備えていても良い。ソースプログラム上で、初期値が即値で表されていない変数に対して、初期値を計算する方法については周知であり、例えば、特開2000−40005号公報で開示されている方法を用いれば良い。これにより、C++言語等の初期化が初期化関数(C++言語ではコンストラクタ)により行われる変数に対しても、初期化のためのコードサイズを削減することが可能となる。具体例として、図11のソースプログラムを変換した結果のオブジェクトファイルの概念図を図12に示す。
(4)本実施形態における処理はソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD−ROMなどの記録媒体に記録して流布しても良い。
本発明は、以上の実施形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは、言うまでもない。
以上説明したように、本発明にかかるプログラム変換装置は、コードサイズを削減できる効果を奏し、携帯電話やPDA(Personal Digital Assistant)等のコードサイズの小さなオブジェクトを必要とする組み込み機器用のプログラム装置等として有用である。
101 ソースプログラム
102 プログラム変換装置
103 変数初期値認識部(認識手段)
104 変数配置場所決定部(配置場所決定手段)
105 変数データ領域配置部
106 変数特定値領域配置部(変数特定値領域配置手段)
107 オブジェクトプログラム
102 プログラム変換装置
103 変数初期値認識部(認識手段)
104 変数配置場所決定部(配置場所決定手段)
105 変数データ領域配置部
106 変数特定値領域配置部(変数特定値領域配置手段)
107 オブジェクトプログラム
Claims (7)
- 入力されたソースプログラムを変換してオブジェクトプログラムを出力するプログラム変換装置であって、
前記ソースプログラムに含まれている変数とその初期値とを認識する認識手段と、
前記認識手段で認識された変数を、プログラムの実行前に特定の値で初期化される特定値領域に配置すると共に、前記変数の初期値に前記特定値以外の値が含まれていた場合に、その特定値以外の初期値に対する初期化コードを生成する変数特定値領域配置手段とを備えた
ことを特徴とするプログラム変換装置。 - 前記請求項1記載のプログラム変換装置において、
更に、前記認識手段で認識された変数を、初期化データで初期化されるデータ領域に配置した場合のコストと、特定の値で初期化される特定値領域に配置した場合のコストとを計算し、その結果に応じて前記変数をデータ領域に配置するか特定値領域に配置するかを決定する配置場所決定手段を備えた
ことを特徴とするプログラム変換装置。 - 前記請求項2記載のプログラム変換装置において、
前記コストは、コードサイズである
ことを特徴とするプログラム変換装置。 - 前記請求項2記載のプログラム変換装置において、
前記コストは、前記変数の初期化に要する実行時間である
ことを特徴とするプログラム変換装置。 - 前記請求項1〜4の何れか1項に記載のプログラム変換装置において、
更に、ユーザから、特定値以外の値が含まれている変数を前記特定値領域に配置するか否かの指定を受け付ける受付手段を備えた
ことを特徴とするプログラム変換装置。 - 前記請求項1〜5の何れか1項に記載のプログラム変換装置において、
前記特定値は、0である
ことを特徴とするプログラム変換装置。 - 前記請求項1〜6の何れか1項に記載のプログラム変換装置において、
更に、変数の初期値が即値でない場合に変数の初期値を計算する変数初期値計算手段を備えた
ことを特徴とするプログラム変換装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008022884A JP2009181558A (ja) | 2008-02-01 | 2008-02-01 | プログラム変換装置 |
US12/349,817 US20090199166A1 (en) | 2008-02-01 | 2009-01-07 | Program converting device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008022884A JP2009181558A (ja) | 2008-02-01 | 2008-02-01 | プログラム変換装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009181558A true JP2009181558A (ja) | 2009-08-13 |
Family
ID=40932999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008022884A Withdrawn JP2009181558A (ja) | 2008-02-01 | 2008-02-01 | プログラム変換装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20090199166A1 (ja) |
JP (1) | JP2009181558A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8792150B2 (en) | 2010-06-09 | 2014-07-29 | Konica Minolta Business Technologies, Inc. | Method for storing a profile set, a computer readable recording medium stored with a profile set storage program, a profile set storage system, and a color conversion process device |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10110328B2 (en) * | 2012-04-13 | 2018-10-23 | Altera Corporation | Apparatus and methods for calibrating analog circuitry in an integrated circuit |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU4598593A (en) * | 1992-06-05 | 1994-01-04 | Convex Computer Corporation | Computer program debugging in the presence of compiler synthesized variables |
US6061520A (en) * | 1998-04-07 | 2000-05-09 | Sun Microsystems, Inc. | Method and system for performing static initialization |
US6968543B2 (en) * | 2000-03-10 | 2005-11-22 | Fujitsu Limited | Information processing apparatus |
JP3974742B2 (ja) * | 2000-04-14 | 2007-09-12 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイル装置、最適化方法および記録媒体 |
US7000227B1 (en) * | 2000-09-29 | 2006-02-14 | Intel Corporation | Iterative optimizing compiler |
CA2365375A1 (en) * | 2001-12-18 | 2003-06-18 | Ibm Canada Limited-Ibm Canada Limitee | Optimizing source code for iterative execution |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
JP2011028648A (ja) * | 2009-07-28 | 2011-02-10 | Renesas Electronics Corp | オブジェクトコード生成システム、及びオブジェクトコード生成方法 |
-
2008
- 2008-02-01 JP JP2008022884A patent/JP2009181558A/ja not_active Withdrawn
-
2009
- 2009-01-07 US US12/349,817 patent/US20090199166A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8792150B2 (en) | 2010-06-09 | 2014-07-29 | Konica Minolta Business Technologies, Inc. | Method for storing a profile set, a computer readable recording medium stored with a profile set storage program, a profile set storage system, and a color conversion process device |
Also Published As
Publication number | Publication date |
---|---|
US20090199166A1 (en) | 2009-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7877741B2 (en) | Method and corresponding apparatus for compiling high-level languages into specific processor architectures | |
JP4157016B2 (ja) | コンパイラ装置及びコンパイル方法 | |
JP2001034483A (ja) | メタデータをコード化するためのオペコードの番号付け | |
US7509634B2 (en) | SIMD instruction sequence generating program, SIMD instruction sequence generating method and apparatus | |
JP2004062830A (ja) | プログラム変換方法、これを用いたデータ処理装置及びプログラム | |
US8413123B2 (en) | Compiling device and compiling method | |
JP2008276735A (ja) | プログラムコード変換装置及びプログラムコード変換方法 | |
JP2009181558A (ja) | プログラム変換装置 | |
Hohenauer et al. | A SIMD optimization framework for retargetable compilers | |
JP2006163686A (ja) | コンパイル方法、コンパイルプログラム、コンパイル装置およびコンパイル用の記録媒体 | |
JP6251158B2 (ja) | プログラム変換システム | |
Haaß et al. | Automatic custom instruction identification in memory streaming algorithms | |
JP2001125792A (ja) | 最適化促進装置 | |
JP2017010077A (ja) | 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法 | |
JP3840149B2 (ja) | コンパイラ、演算処理システム及び演算処理方法 | |
US20070011440A1 (en) | Processor and processing method | |
JP2007226589A (ja) | プログラム変換システム | |
US20090228874A1 (en) | Method and system for code compilation | |
JP2007080049A (ja) | 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部 | |
JP2005284577A (ja) | コンパイラ | |
KR100345401B1 (ko) | 바이너리 프로그램 변환 장치 및 그 방법 | |
CN112579091A (zh) | 指令编译方法、装置、编译器及计算设备 | |
JP4788902B2 (ja) | コンパイル最適化方法およびコンパイラ | |
Canedo et al. | Compiling for reduced bit-width queue processors | |
JP4019361B2 (ja) | 並列化変換システムと並列化変換方法およびプログラムならびにコンパイラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101109 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20120130 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20120222 |