JPH10124325A - 変数の最適配置方法、変数の最適配置装置及び変数の最適配置プログラムを格納したコンピュータ読み取り可能な記録媒体 - Google Patents
変数の最適配置方法、変数の最適配置装置及び変数の最適配置プログラムを格納したコンピュータ読み取り可能な記録媒体Info
- Publication number
- JPH10124325A JPH10124325A JP8284312A JP28431296A JPH10124325A JP H10124325 A JPH10124325 A JP H10124325A JP 8284312 A JP8284312 A JP 8284312A JP 28431296 A JP28431296 A JP 28431296A JP H10124325 A JPH10124325 A JP H10124325A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- access frequency
- program
- variables
- function
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000006870 function Effects 0.000 claims abstract description 72
- 238000010586 diagram Methods 0.000 description 13
- 238000005457 optimization Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
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
(57)【要約】
【課題】 最適な外部変数のメモリ配置を行い、目的プ
ログラムのオブジェクトサイズを小さくし、目的プログ
ラムの実行速度を向上させることである。 【解決手段】 入力部100から原始プログラムを入力
し、言語処理部210にて入力した原始プログラムにつ
いて言語処理を行い中間コードを出力する。その依存関
係解析部221にて中間コードに含まれる関数の依存関
係を解析し、変数定義検索部222にて解析された依存
関係から各変数のプログラム実行時のアクセス頻度を調
べ、変数配置部223にてアクセス頻度の高い変数は、
低位のアドレス領域に配置するようにする。コード生成
部224にて配置された変数の情報を含む中間コードか
らオブジェクトコードを生成し、出力部300にて生成
されたオブジェクトコードを出力するようにしてある。
ログラムのオブジェクトサイズを小さくし、目的プログ
ラムの実行速度を向上させることである。 【解決手段】 入力部100から原始プログラムを入力
し、言語処理部210にて入力した原始プログラムにつ
いて言語処理を行い中間コードを出力する。その依存関
係解析部221にて中間コードに含まれる関数の依存関
係を解析し、変数定義検索部222にて解析された依存
関係から各変数のプログラム実行時のアクセス頻度を調
べ、変数配置部223にてアクセス頻度の高い変数は、
低位のアドレス領域に配置するようにする。コード生成
部224にて配置された変数の情報を含む中間コードか
らオブジェクトコードを生成し、出力部300にて生成
されたオブジェクトコードを出力するようにしてある。
Description
【0001】
【発明の属する技術分野】本発明は、変数の最適配置方
法、変数の最適配置装置及び変数の最適配置プログラム
を格納したコンピュータ読み取り可能な記録媒体に関
し、特に、変数を効率よく配置することによりオブジェ
クトサイズを小さくして目的プログラムの実行速度を向
上させる変数の最適配置の技術に関する。
法、変数の最適配置装置及び変数の最適配置プログラム
を格納したコンピュータ読み取り可能な記録媒体に関
し、特に、変数を効率よく配置することによりオブジェ
クトサイズを小さくして目的プログラムの実行速度を向
上させる変数の最適配置の技術に関する。
【0002】
【従来の技術】コンピュータシステムに用いられるプロ
グラムの開発は、開発者がCやFortran等のプロ
グラミング言語で作成した原始プログラムを作成し、こ
の原始プログラムを機械語に変換することにより行われ
る。この原始プログラムを作成する際には、途中の計算
過程の値を一時的に保持する等の理由から変数を定義し
て、その変数を用いて所定の計算を行わせる命令を記述
する場合が多い。
グラムの開発は、開発者がCやFortran等のプロ
グラミング言語で作成した原始プログラムを作成し、こ
の原始プログラムを機械語に変換することにより行われ
る。この原始プログラムを作成する際には、途中の計算
過程の値を一時的に保持する等の理由から変数を定義し
て、その変数を用いて所定の計算を行わせる命令を記述
する場合が多い。
【0003】図9は、従来の変数配置指定方法を説明す
るための図である。変数の配置先の指定は、変数宣言す
る際に修飾子を明示的になされる。ここで_tinyは
8ビットアドレス領域を、_nearは16ビットアド
レス領域を、_farは24ビットアドレス領域を示す
ものとする。一般的には明示的な指定がない場合に変数
は、最も広い領域である_far領域に配置される。
るための図である。変数の配置先の指定は、変数宣言す
る際に修飾子を明示的になされる。ここで_tinyは
8ビットアドレス領域を、_nearは16ビットアド
レス領域を、_farは24ビットアドレス領域を示す
ものとする。一般的には明示的な指定がない場合に変数
は、最も広い領域である_far領域に配置される。
【0004】図10は、上述の_tiny,_nea
r,_farの変数のメモリアドレスマッピングの例を
説明するための図である。_tinyは、上述の通り8
ビットのアドレス領域を示すものであるから、(0x0
0)から(0xff)までの領域が該当する。従って、
この領域のアドレスは、1バイトで表現することができ
る。また、_nearは、16ビットのアドレス領域を
示すものであるから、(0x100)から(0xfff
f)までの領域が該当する。従って、この領域のアドレ
スは、2バイトで表現することができる。さらに、_f
arは、24ビットのアドレス領域を示すものであるか
ら、(0x10000)から(0xffffff)まで
の領域が該当する。従って、この領域のアドレスは、3
バイトで表現することができる。
r,_farの変数のメモリアドレスマッピングの例を
説明するための図である。_tinyは、上述の通り8
ビットのアドレス領域を示すものであるから、(0x0
0)から(0xff)までの領域が該当する。従って、
この領域のアドレスは、1バイトで表現することができ
る。また、_nearは、16ビットのアドレス領域を
示すものであるから、(0x100)から(0xfff
f)までの領域が該当する。従って、この領域のアドレ
スは、2バイトで表現することができる。さらに、_f
arは、24ビットのアドレス領域を示すものであるか
ら、(0x10000)から(0xffffff)まで
の領域が該当する。従って、この領域のアドレスは、3
バイトで表現することができる。
【0005】以上から、_tiny領域のように、低位
のアドレス領域は、アドレスの指定のサイズが最も少な
くて済むので、オブジェクトコードに表現するアドレス
のサイズを小さくすることができる。従って、この領域
を指定することによりオブジェクトサイズを小さくする
ことができる。
のアドレス領域は、アドレスの指定のサイズが最も少な
くて済むので、オブジェクトコードに表現するアドレス
のサイズを小さくすることができる。従って、この領域
を指定することによりオブジェクトサイズを小さくする
ことができる。
【0006】この最もアドレスの指定が少なくて済む_
tiny領域は、最も小さい領域であるため、全ての変
数についてこの領域を指定することが出来ない場合が多
い。このため、プログラム作成者は作成した原始プログ
ラムからどの変数のアクセス頻度が高いかを判断し、ア
クセス頻度の高い変数を_tiny,_nearに明示
的に配置することにより、これらの変数をアクセスする
際の命令のオブジェクトサイズが小さくなり、実行速度
の向上を図っていた。
tiny領域は、最も小さい領域であるため、全ての変
数についてこの領域を指定することが出来ない場合が多
い。このため、プログラム作成者は作成した原始プログ
ラムからどの変数のアクセス頻度が高いかを判断し、ア
クセス頻度の高い変数を_tiny,_nearに明示
的に配置することにより、これらの変数をアクセスする
際の命令のオブジェクトサイズが小さくなり、実行速度
の向上を図っていた。
【0007】
【発明が解決しようとする課題】アクセス頻度の高い変
数を_tiny,_near等のアドレス指定のサイズ
の小さい領域に配置することにより、これらの変数をア
クセスする際の命令のオブジェクトサイズが小さく、か
つコードサイズの減少になつがり、その結果、実行速度
の向上につながる。
数を_tiny,_near等のアドレス指定のサイズ
の小さい領域に配置することにより、これらの変数をア
クセスする際の命令のオブジェクトサイズが小さく、か
つコードサイズの減少になつがり、その結果、実行速度
の向上につながる。
【0008】しかしながら、配置先の指定は、プログラ
ムの作成者が明示的に行うものである。プログラムは専
用の言語処理装置を用いてコンパイルされ、実行モジュ
ールへと変換される際に最適化が行われるため、実際に
は他の変数に比べ意図したアクセス頻度が少なくなると
いう事態が生じる。また、プログラムサイズの増加に伴
い、変数のアクセス頻度は算出し難いものになり、オブ
ジェクトサイズの減少、実行速度の向上を困難にしてい
た。
ムの作成者が明示的に行うものである。プログラムは専
用の言語処理装置を用いてコンパイルされ、実行モジュ
ールへと変換される際に最適化が行われるため、実際に
は他の変数に比べ意図したアクセス頻度が少なくなると
いう事態が生じる。また、プログラムサイズの増加に伴
い、変数のアクセス頻度は算出し難いものになり、オブ
ジェクトサイズの減少、実行速度の向上を困難にしてい
た。
【0009】図11に例示した原始プログラムでは、関
数と繰り返し文を含む構成になっている。23で示され
る関数tuple()中にある2つの繰り返し文25と
26は、いずれも繰り返し回数が原始プログラム上では
不明である。
数と繰り返し文を含む構成になっている。23で示され
る関数tuple()中にある2つの繰り返し文25と
26は、いずれも繰り返し回数が原始プログラム上では
不明である。
【0010】ここで、繰り返し文26の繰り返しが多い
ことを原始プログラム作成者が認知しているならば、そ
の繰り返し文で使用されている外部変数宣言文22、お
よび22′で宣言された変数array1とarray
2が外部変数宣言文21で宣言された変数attrib
uteよりもアクセス頻度が高いと、原始プログラム作
成者により推測される。
ことを原始プログラム作成者が認知しているならば、そ
の繰り返し文で使用されている外部変数宣言文22、お
よび22′で宣言された変数array1とarray
2が外部変数宣言文21で宣言された変数attrib
uteよりもアクセス頻度が高いと、原始プログラム作
成者により推測される。
【0011】図12に例示したプログラムは、専用の言
語処理装置により出力された中間コードを専用の中間コ
ード処理装置により最適化を受けて変換された出力プロ
グラムである。図12でアクセス頻度が高いと推測され
た外部変数array1とarray2は命令31と命
令32で示されるロード命令により、その先頭アドレス
がレジスタに割り付けられ、以降図11の命令28で実
施される代入は、図12の命令群35に見られるように
レジスタ渡しにより実現されている。その結果、アクセ
ス頻度が高いと見られた外部変数array1とarr
ay2の実際のアクセス回数がともに1度だけであるこ
とがわかる。結果として実際には、外部変数宣言文2
2、および22′で宣言された変数array1とar
ray2よりも外部変数宣言文21で宣言された変数a
ttributeの方がアクセス頻度が高くなる。
語処理装置により出力された中間コードを専用の中間コ
ード処理装置により最適化を受けて変換された出力プロ
グラムである。図12でアクセス頻度が高いと推測され
た外部変数array1とarray2は命令31と命
令32で示されるロード命令により、その先頭アドレス
がレジスタに割り付けられ、以降図11の命令28で実
施される代入は、図12の命令群35に見られるように
レジスタ渡しにより実現されている。その結果、アクセ
ス頻度が高いと見られた外部変数array1とarr
ay2の実際のアクセス回数がともに1度だけであるこ
とがわかる。結果として実際には、外部変数宣言文2
2、および22′で宣言された変数array1とar
ray2よりも外部変数宣言文21で宣言された変数a
ttributeの方がアクセス頻度が高くなる。
【0012】図13は、上述したプログラム作成者が外
部変数を適宜配置する手法にて生成されたオブジェクト
コードマップである。例えば、81や82に示すように
アクセス頻度が実際は高いにもかかわらず、アドレスの
指定が大きくなる場合もあり、プログラム作成者の意思
に反してオブジェクトサイズが大きくなリ、プログラム
実行速度の向上を図ることができないという問題点があ
った。
部変数を適宜配置する手法にて生成されたオブジェクト
コードマップである。例えば、81や82に示すように
アクセス頻度が実際は高いにもかかわらず、アドレスの
指定が大きくなる場合もあり、プログラム作成者の意思
に反してオブジェクトサイズが大きくなリ、プログラム
実行速度の向上を図ることができないという問題点があ
った。
【0013】以上のように、プログラム作成者が外部変
数を適宜配置する手法では実際のアクセス回数を算出す
ることが困難であり、作成者の意図を必ずしも満足しな
い結果を引き起こすという問題があった。
数を適宜配置する手法では実際のアクセス回数を算出す
ることが困難であり、作成者の意図を必ずしも満足しな
い結果を引き起こすという問題があった。
【0014】本発明は、上記事情に鑑みてなされたもの
であり、その目的とするところは、最適な外部変数のメ
モリ配置を行い、目的プログラム(実行形式のプログラ
ム)のオブジェクトサイズを小さくし、目的プログラム
の実行速度を向上させることができる変数の最適配置方
法及びその装置及び変数の最適配置プログラムを格納し
たコンピュータ読み取り可能な記録媒体を提供すること
にある。
であり、その目的とするところは、最適な外部変数のメ
モリ配置を行い、目的プログラム(実行形式のプログラ
ム)のオブジェクトサイズを小さくし、目的プログラム
の実行速度を向上させることができる変数の最適配置方
法及びその装置及び変数の最適配置プログラムを格納し
たコンピュータ読み取り可能な記録媒体を提供すること
にある。
【0015】
【課題を解決するための手段】上記目的を達成するた
め、請求項1の発明は、変数の最適な配置を行う方法に
おいて、原始プログラム内で使用される各変数について
プログラム実行時のアクセス頻度を解析し、この解析さ
れたアクセス頻度に基づいて、前記原始プログラムから
生成されるオブジェクトコードが最小になるように前記
変数を配置することを含むことを特徴とする。
め、請求項1の発明は、変数の最適な配置を行う方法に
おいて、原始プログラム内で使用される各変数について
プログラム実行時のアクセス頻度を解析し、この解析さ
れたアクセス頻度に基づいて、前記原始プログラムから
生成されるオブジェクトコードが最小になるように前記
変数を配置することを含むことを特徴とする。
【0016】上記請求項1の発明の構成のように、原始
プログラムにおけるアクセス頻度を解析せずに、プログ
ラム実行時のアクセス頻度を解析することで、プログラ
ム実行時のアクセス頻度を正確に知ることができるので
ある。従って、より最適な変数のメモリ配置を行うこと
ができるので、目的プログラムのオブジェクトサイズを
小さくすることができる。これにより、目的プログラム
の実行速度の向上を図ることができるのである。
プログラムにおけるアクセス頻度を解析せずに、プログ
ラム実行時のアクセス頻度を解析することで、プログラ
ム実行時のアクセス頻度を正確に知ることができるので
ある。従って、より最適な変数のメモリ配置を行うこと
ができるので、目的プログラムのオブジェクトサイズを
小さくすることができる。これにより、目的プログラム
の実行速度の向上を図ることができるのである。
【0017】請求項2の発明は、変数の最適配置を行う
方法において、原始プログラム内で使用される各変数に
ついてプログラム実行時のアクセス頻度を解析し、この
解析されたアクセス頻度に基づいて、最もアクセス頻度
の大きな変数から順に低位のアドレス領域に配置するこ
とを含むことを特徴とする。
方法において、原始プログラム内で使用される各変数に
ついてプログラム実行時のアクセス頻度を解析し、この
解析されたアクセス頻度に基づいて、最もアクセス頻度
の大きな変数から順に低位のアドレス領域に配置するこ
とを含むことを特徴とする。
【0018】上記請求項2の発明の構成のように、アク
セス頻度の大きな変数から順に低位のアドレス領域に配
置することで、アクセス頻度の大きな変数をよりアドレ
ス指定の少ないアドレス領域に配置することができる。
従って、より最適な変数のメモリ配置を行うことができ
るので、目的プログラムのオブジェクトサイズを小さく
することができる。これにより、目的プログラムの実行
速度の向上を図ることができるのである。ここで、低位
のアドレス領域とは、アドレス指定のサイズが小さい領
域をいう。
セス頻度の大きな変数から順に低位のアドレス領域に配
置することで、アクセス頻度の大きな変数をよりアドレ
ス指定の少ないアドレス領域に配置することができる。
従って、より最適な変数のメモリ配置を行うことができ
るので、目的プログラムのオブジェクトサイズを小さく
することができる。これにより、目的プログラムの実行
速度の向上を図ることができるのである。ここで、低位
のアドレス領域とは、アドレス指定のサイズが小さい領
域をいう。
【0019】請求項3の発明は、前記請求項1または2
におけるアクセス頻度を解析する際には、前記原始プロ
グラムを言語処理により最適化処理が施された中間コー
ドを生成し、この中間コードを用いてプログラム実行時
のアクセス頻度を解析することを特徴とする。
におけるアクセス頻度を解析する際には、前記原始プロ
グラムを言語処理により最適化処理が施された中間コー
ドを生成し、この中間コードを用いてプログラム実行時
のアクセス頻度を解析することを特徴とする。
【0020】このように、一度中間コードに変換し、そ
の中間コードに対してプログラム実行時のアクセス頻度
を解析することで、より解析処理を容易に行うことがで
きるのである。
の中間コードに対してプログラム実行時のアクセス頻度
を解析することで、より解析処理を容易に行うことがで
きるのである。
【0021】請求項4の発明は、原始プログラムを入力
する原始プログラム入力ステップと、前記入力した原始
プログラムについて言語処理を行い、中間コードを出力
する言語処理ステップと、前記中間コードの関数の依存
関係を解析する依存関係解析ステップと、前記解析され
た依存関係から各変数のプログラム実行時のアクセス頻
度を調べる変数定義検索ステップと、前記調べられたア
クセス頻度に基づき、アクセス頻度の高い変数を低位の
アドレス領域に配置する変数配置ステップと、前記配置
された変数の情報を含む中間コードからオブジェクトコ
ードを生成するコード生成ステップとを含むことを特徴
とする。
する原始プログラム入力ステップと、前記入力した原始
プログラムについて言語処理を行い、中間コードを出力
する言語処理ステップと、前記中間コードの関数の依存
関係を解析する依存関係解析ステップと、前記解析され
た依存関係から各変数のプログラム実行時のアクセス頻
度を調べる変数定義検索ステップと、前記調べられたア
クセス頻度に基づき、アクセス頻度の高い変数を低位の
アドレス領域に配置する変数配置ステップと、前記配置
された変数の情報を含む中間コードからオブジェクトコ
ードを生成するコード生成ステップとを含むことを特徴
とする。
【0022】上記請求項4の発明の構成のように、アク
セス頻度の高い変数を、低位のアドレス領域に配置する
ことで、アクセス頻度の大きな変数をよりアドレス指定
の少ないアドレス領域に配置することができる。従っ
て、より最適な変数のメモリ配置を行うことができるの
で、目的プログラムのオブジェクトサイズを小さくする
ことができる。これにより、目的プログラムの実行速度
の向上を図ることができるのである。ここで、上記アク
セス頻度が高い変数が複数ある場合には、アクセス頻度
の高い変数から順に低位のアドレス領域に配置すること
がプログラムの実行速度の向上を更に図ることができる
という点で好ましい。
セス頻度の高い変数を、低位のアドレス領域に配置する
ことで、アクセス頻度の大きな変数をよりアドレス指定
の少ないアドレス領域に配置することができる。従っ
て、より最適な変数のメモリ配置を行うことができるの
で、目的プログラムのオブジェクトサイズを小さくする
ことができる。これにより、目的プログラムの実行速度
の向上を図ることができるのである。ここで、上記アク
セス頻度が高い変数が複数ある場合には、アクセス頻度
の高い変数から順に低位のアドレス領域に配置すること
がプログラムの実行速度の向上を更に図ることができる
という点で好ましい。
【0023】請求項5の発明は、前記請求項4における
変数定義検索ステップは、前記中間コードに含まれる関
数に対し、各関数内で繰り返しがあるか否かを判定し、
前記繰り返しがある場合には、その繰り返し回数を調
べ、前記繰り返しの中で関数呼び出しがある場合にはそ
の関数に前記調べた繰り返し回数の重みをつけ、前記繰
り返しの中で変数のアクセスがある場合には、変数のア
クセス頻度を保持するアクセス頻度情報にアクセス回数
を加算し、前記重みがついた関数内での変数のアクセス
がある場合には、アクセス回数にその重みを乗じた値を
アクセス回数として前記アクセス頻度情報に加算するこ
とを含むことを特徴とする。
変数定義検索ステップは、前記中間コードに含まれる関
数に対し、各関数内で繰り返しがあるか否かを判定し、
前記繰り返しがある場合には、その繰り返し回数を調
べ、前記繰り返しの中で関数呼び出しがある場合にはそ
の関数に前記調べた繰り返し回数の重みをつけ、前記繰
り返しの中で変数のアクセスがある場合には、変数のア
クセス頻度を保持するアクセス頻度情報にアクセス回数
を加算し、前記重みがついた関数内での変数のアクセス
がある場合には、アクセス回数にその重みを乗じた値を
アクセス回数として前記アクセス頻度情報に加算するこ
とを含むことを特徴とする。
【0024】上記請求項5の発明の構成によれば、原始
プログラムに繰り返し文が含まれていても、正確にアク
セス頻度を解析することができるため、効率よく変数を
配置するができる。従って、目的プログラムのオブジェ
クトサイズを小さくすることができる。これにより、目
的プログラムの実行速度の向上を図ることができるので
ある。ここで、繰り返し文とは、一定の繰り返し部分を
一定回数繰り返し実行する命令群をいい、ループ文とも
言うことができる。例えば、C言語では、for文やw
hile文が含まれる。
プログラムに繰り返し文が含まれていても、正確にアク
セス頻度を解析することができるため、効率よく変数を
配置するができる。従って、目的プログラムのオブジェ
クトサイズを小さくすることができる。これにより、目
的プログラムの実行速度の向上を図ることができるので
ある。ここで、繰り返し文とは、一定の繰り返し部分を
一定回数繰り返し実行する命令群をいい、ループ文とも
言うことができる。例えば、C言語では、for文やw
hile文が含まれる。
【0025】また、上記目的を達成するため、請求項6
の発明は、原始プログラムを入力する原始プログラム入
力部と、前記入力した原始プログラムについて言語処理
を行い、中間コードを出力する言語処理部と、前記中間
コードの関数の依存関係を解析する依存関係解析部と、
前記解析された依存関係から各変数のプログラム実行時
のアクセス頻度を調べる変数定義検索部と、前記調べら
れたアクセス頻度に基づき、アクセス頻度の高い変数を
低位のアドレス領域に配置する変数配置部と、前記配置
された変数の情報を含む中間コードからオブジェクトコ
ードを生成するコード生成部と、を含むことを特徴とす
る。
の発明は、原始プログラムを入力する原始プログラム入
力部と、前記入力した原始プログラムについて言語処理
を行い、中間コードを出力する言語処理部と、前記中間
コードの関数の依存関係を解析する依存関係解析部と、
前記解析された依存関係から各変数のプログラム実行時
のアクセス頻度を調べる変数定義検索部と、前記調べら
れたアクセス頻度に基づき、アクセス頻度の高い変数を
低位のアドレス領域に配置する変数配置部と、前記配置
された変数の情報を含む中間コードからオブジェクトコ
ードを生成するコード生成部と、を含むことを特徴とす
る。
【0026】上記請求項6の発明の構成のように、アク
セス頻度の高い変数を、低位のアドレス領域に配置する
ことで、アクセス頻度の大きな変数をよりアドレス指定
の少ないアドレス領域に配置することができる。従っ
て、より最適な変数のメモリ配置を行うことができるの
で、目的プログラムのオブジェクトサイズを小さくする
ことができる。これにより、目的プログラムの実行速度
の向上を図ることができるのである。ここで、上記アク
セス頻度が高い変数が複数ある場合には、アクセス頻度
の高い変数から順に低位のアドレス領域に配置すること
が好ましい。
セス頻度の高い変数を、低位のアドレス領域に配置する
ことで、アクセス頻度の大きな変数をよりアドレス指定
の少ないアドレス領域に配置することができる。従っ
て、より最適な変数のメモリ配置を行うことができるの
で、目的プログラムのオブジェクトサイズを小さくする
ことができる。これにより、目的プログラムの実行速度
の向上を図ることができるのである。ここで、上記アク
セス頻度が高い変数が複数ある場合には、アクセス頻度
の高い変数から順に低位のアドレス領域に配置すること
が好ましい。
【0027】請求項7の発明は、前記請求項6における
変数定義検索部は、前記中間コードの各関数内で、前記
関数内で繰り返しがあるか否かを判定する手段と、前記
繰り返しがある場合には、その繰り返し回数を調べる手
段と、前記繰り返しの中で関数呼び出しがある場合には
その関数に前記調べた繰り返し回数の重みをつける手段
と、前記繰り返しの中で変数のアクセスがある場合に
は、変数のアクセス頻度を保持するアクセス頻度情報保
持手段にアクセス回数を加算する手段と、前記重みがつ
いた関数内での変数のアクセスがある場合には、アクセ
ス回数にその重みを乗じた値をアクセス回数として前記
アクセス頻度情報に加算する手段と、を含むことを特徴
とする。
変数定義検索部は、前記中間コードの各関数内で、前記
関数内で繰り返しがあるか否かを判定する手段と、前記
繰り返しがある場合には、その繰り返し回数を調べる手
段と、前記繰り返しの中で関数呼び出しがある場合には
その関数に前記調べた繰り返し回数の重みをつける手段
と、前記繰り返しの中で変数のアクセスがある場合に
は、変数のアクセス頻度を保持するアクセス頻度情報保
持手段にアクセス回数を加算する手段と、前記重みがつ
いた関数内での変数のアクセスがある場合には、アクセ
ス回数にその重みを乗じた値をアクセス回数として前記
アクセス頻度情報に加算する手段と、を含むことを特徴
とする。
【0028】上記請求項7の発明の構成によれば、原始
プログラムに繰り返し文が含まれていても、正確にアク
セス頻度を解析することができるため、効率よく変数を
配置するができる。従って、目的プログラムのオブジェ
クトサイズを小さくすることができる。これにより、目
的プログラムの実行速度の向上を図ることができるので
ある。
プログラムに繰り返し文が含まれていても、正確にアク
セス頻度を解析することができるため、効率よく変数を
配置するができる。従って、目的プログラムのオブジェ
クトサイズを小さくすることができる。これにより、目
的プログラムの実行速度の向上を図ることができるので
ある。
【0029】また、上記目的を達成するため、請求項8
の発明は、原始プログラム内で使用される各変数につい
てプログラム実行時のアクセス頻度を解析する処理と、
この解析されたアクセス頻度に基づいて、前記原始プロ
グラムから生成されるオブジェクトコードが最小になる
ように前記変数を配置する処理と、含み、これら処理を
コンピュータに実行させることを特徴とする。
の発明は、原始プログラム内で使用される各変数につい
てプログラム実行時のアクセス頻度を解析する処理と、
この解析されたアクセス頻度に基づいて、前記原始プロ
グラムから生成されるオブジェクトコードが最小になる
ように前記変数を配置する処理と、含み、これら処理を
コンピュータに実行させることを特徴とする。
【0030】上記請求項8の発明の構成のように原始プ
ログラムにおけるアクセス頻度を解析せずに、プログラ
ム実行時のアクセス頻度を解析することで、プログラム
実行時のアクセス頻度を正確に知ることができるのであ
る。従って、より最適な変数のメモリ配置を行うことが
できるので、目的プログラムのオブジェクトサイズを小
さくすることができる。これにより、目的プログラムの
実行速度の向上を図ることができるのである。
ログラムにおけるアクセス頻度を解析せずに、プログラ
ム実行時のアクセス頻度を解析することで、プログラム
実行時のアクセス頻度を正確に知ることができるのであ
る。従って、より最適な変数のメモリ配置を行うことが
できるので、目的プログラムのオブジェクトサイズを小
さくすることができる。これにより、目的プログラムの
実行速度の向上を図ることができるのである。
【0031】請求項9の発明は、原始プログラム内で使
用される各変数についてプログラム実行時のアクセス頻
度を解析する処理と、この解析されたアクセス頻度に基
づいて、最もアクセス頻度の大きな変数から順に低位の
アドレス領域に配置する処理と、を含み、これら処理を
コンピュータに実行させることを特徴とする。
用される各変数についてプログラム実行時のアクセス頻
度を解析する処理と、この解析されたアクセス頻度に基
づいて、最もアクセス頻度の大きな変数から順に低位の
アドレス領域に配置する処理と、を含み、これら処理を
コンピュータに実行させることを特徴とする。
【0032】上記請求項9の発明の構成のように、アク
セス頻度の大きな変数から順に低位のアドレス領域に配
置することで、アクセス頻度の大きな変数についてのア
ドレス指定の少ないアドレス領域に配置することができ
る。従って、より最適な変数のメモリ配置を行うことが
できるので、目的プログラムのオブジェクトサイズを小
さくすることができる。これにより、目的プログラムの
実行速度の向上を図ることができるのである。
セス頻度の大きな変数から順に低位のアドレス領域に配
置することで、アクセス頻度の大きな変数についてのア
ドレス指定の少ないアドレス領域に配置することができ
る。従って、より最適な変数のメモリ配置を行うことが
できるので、目的プログラムのオブジェクトサイズを小
さくすることができる。これにより、目的プログラムの
実行速度の向上を図ることができるのである。
【0033】請求項10の発明は、前記請求項8または
9におけるアクセス頻度を解析する際には、前記原始プ
ログラムを言語処理により最適化処理が施された中間コ
ードを生成する処理と、この中間コードを用いてプログ
ラム実行時のアクセス頻度を解析する処理と、を含み、
これら処理をコンピュータに実行させることを特徴とす
る。
9におけるアクセス頻度を解析する際には、前記原始プ
ログラムを言語処理により最適化処理が施された中間コ
ードを生成する処理と、この中間コードを用いてプログ
ラム実行時のアクセス頻度を解析する処理と、を含み、
これら処理をコンピュータに実行させることを特徴とす
る。
【0034】このように、一度中間コードに変換し、そ
の中間コードに対してプログラム実行時のアクセス頻度
を解析することで、より解析処理を容易に行うことがで
きるのである。
の中間コードに対してプログラム実行時のアクセス頻度
を解析することで、より解析処理を容易に行うことがで
きるのである。
【0035】請求項11の発明は、原始プログラムを入
力する原始プログラム入力ステップと、前記入力した原
始プログラムについて言語処理を行い、中間コードを出
力する言語処理ステップと、前記中間コードの関数の依
存関係を解析する依存関係解析ステップと、前記解析さ
れた依存関係から各変数のプログラム実行時のアクセス
頻度を調べる変数定義検索ステップと、前記調べられた
アクセス頻度に基づいてアクセス頻度の高い変数から順
に、低位のアドレス領域に配置する変数配置ステップ
と、前記配置された変数の情報を含む中間コードからオ
ブジェクトコードを生成するコード生成ステップと、を
含み、これらステップをコンピュータに実行させること
を特徴とする。
力する原始プログラム入力ステップと、前記入力した原
始プログラムについて言語処理を行い、中間コードを出
力する言語処理ステップと、前記中間コードの関数の依
存関係を解析する依存関係解析ステップと、前記解析さ
れた依存関係から各変数のプログラム実行時のアクセス
頻度を調べる変数定義検索ステップと、前記調べられた
アクセス頻度に基づいてアクセス頻度の高い変数から順
に、低位のアドレス領域に配置する変数配置ステップ
と、前記配置された変数の情報を含む中間コードからオ
ブジェクトコードを生成するコード生成ステップと、を
含み、これらステップをコンピュータに実行させること
を特徴とする。
【0036】上記請求項11の発明の構成のように、ア
クセス頻度の高い変数を、低位のアドレス領域に配置す
ることで、アクセス頻度の大きな変数をよりアドレス指
定の少ないアドレス領域に配置することができる。従っ
て、より最適な変数のメモリ配置を行うことができるの
で、目的プログラムのオブジェクトサイズを小さくする
ことができる。これにより、目的プログラムの実行速度
の向上を図ることができるのである。
クセス頻度の高い変数を、低位のアドレス領域に配置す
ることで、アクセス頻度の大きな変数をよりアドレス指
定の少ないアドレス領域に配置することができる。従っ
て、より最適な変数のメモリ配置を行うことができるの
で、目的プログラムのオブジェクトサイズを小さくする
ことができる。これにより、目的プログラムの実行速度
の向上を図ることができるのである。
【0037】請求項12の発明は、前記請求項11にお
ける変数定義検索ステップは、前記中間コードに含まれ
る関数に対し、各関数内で繰り返しがあるか否かを判定
する処理と、前記繰り返しがある場合には、その繰り返
し回数を調べる処理を、前記繰り返しの中で関数呼び出
しがある場合にはその関数に前記調べた繰り返し回数の
重みづけを行う処理と、前記繰り返しの中で変数のアク
セスがある場合には、変数のアクセス頻度を保持するア
クセス頻度情報にアクセス回数を加算する処理と、前記
重みがついた関数内での変数のアクセスがある場合に
は、アクセス回数にその重みを乗じた値をアクセス回数
として前記アクセス頻度情報に加算する処理と、を含
み、これら処理をコンピュータに実行させることを特徴
とする。
ける変数定義検索ステップは、前記中間コードに含まれ
る関数に対し、各関数内で繰り返しがあるか否かを判定
する処理と、前記繰り返しがある場合には、その繰り返
し回数を調べる処理を、前記繰り返しの中で関数呼び出
しがある場合にはその関数に前記調べた繰り返し回数の
重みづけを行う処理と、前記繰り返しの中で変数のアク
セスがある場合には、変数のアクセス頻度を保持するア
クセス頻度情報にアクセス回数を加算する処理と、前記
重みがついた関数内での変数のアクセスがある場合に
は、アクセス回数にその重みを乗じた値をアクセス回数
として前記アクセス頻度情報に加算する処理と、を含
み、これら処理をコンピュータに実行させることを特徴
とする。
【0038】上記請求項12の発明の構成によれば、原
始プログラムに繰り返し文が含まれていても、正確にア
クセス頻度を解析することができるため、効率よく変数
を配置するができる。従って、目的プログラムのオブジ
ェクトサイズを小さくすることができる。これにより、
目的プログラムの実行速度の向上を図ることができるの
である。
始プログラムに繰り返し文が含まれていても、正確にア
クセス頻度を解析することができるため、効率よく変数
を配置するができる。従って、目的プログラムのオブジ
ェクトサイズを小さくすることができる。これにより、
目的プログラムの実行速度の向上を図ることができるの
である。
【0039】
【発明の実施の形態】以下、本発明に係る変数の最適配
置方法及びその装置及び変数の最適配置プログラムを格
納したコンピュータ読み取り可能な記録媒体の実施形態
について、図面を引用しながら説明する。
置方法及びその装置及び変数の最適配置プログラムを格
納したコンピュータ読み取り可能な記録媒体の実施形態
について、図面を引用しながら説明する。
【0040】図1は、本実施形態の変数の最適配置装置
を示すブロック図である。この装置は、原始プログラム
を入力する原始プログラム入力部100と、入力した原
始プログラムについて言語処理を行い、中間コードを出
力する言語処理部210と、中間コードの関数の依存関
係を解析する依存関係解析部221と、解析された依存
関係から各変数のプログラム実行時のアクセス頻度を調
べる変数定義検索部222と、調べられたアクセス頻度
に基づき、アクセス頻度の高い変数を、低位のアドレス
領域に配置する変数配置部223と、配置された変数の
情報を含む中間コードからオブジェクトコードを生成す
るコード生成部224と、生成されたオブジェクトコー
ドを出力する出力プログラム出力部300とを備えるも
のである。
を示すブロック図である。この装置は、原始プログラム
を入力する原始プログラム入力部100と、入力した原
始プログラムについて言語処理を行い、中間コードを出
力する言語処理部210と、中間コードの関数の依存関
係を解析する依存関係解析部221と、解析された依存
関係から各変数のプログラム実行時のアクセス頻度を調
べる変数定義検索部222と、調べられたアクセス頻度
に基づき、アクセス頻度の高い変数を、低位のアドレス
領域に配置する変数配置部223と、配置された変数の
情報を含む中間コードからオブジェクトコードを生成す
るコード生成部224と、生成されたオブジェクトコー
ドを出力する出力プログラム出力部300とを備えるも
のである。
【0041】ここで、入力部100は、キーボード、マ
ウス、ライトペン、又はフレキシブルディスク装置等が
含まれ、処理部200は、各種の処理を行うためのCP
Uと、この処理の命令を記憶する記憶部とを含む通常の
コンピュータシステムが含まれ、また、出力部300
は、ディスプレイ装置やプリンタ装置等が含まれる。上
記処理部200に含まれる言語処理部210及び中間コ
ード処理部220の各処理の命令は、記憶部に保持され
ており、必要に応じてCPUにロードされ、実行がなさ
れる。通常の場合、実行の制御は、操作者が入力部10
0に対して命令(コマンド)の入力を行うことによりな
される。
ウス、ライトペン、又はフレキシブルディスク装置等が
含まれ、処理部200は、各種の処理を行うためのCP
Uと、この処理の命令を記憶する記憶部とを含む通常の
コンピュータシステムが含まれ、また、出力部300
は、ディスプレイ装置やプリンタ装置等が含まれる。上
記処理部200に含まれる言語処理部210及び中間コ
ード処理部220の各処理の命令は、記憶部に保持され
ており、必要に応じてCPUにロードされ、実行がなさ
れる。通常の場合、実行の制御は、操作者が入力部10
0に対して命令(コマンド)の入力を行うことによりな
される。
【0042】図2は、本実施形態の変数の最適配置方法
を示すフローチャートである。このフローチャートは、
原始プログラムを入力する原始プログラム入力ステップ
S110と、入力した原始プログラムについて言語処理
を行い、中間コードを出力する言語処理ステップS12
0と、中間コードの関数の依存関係を解析する依存関係
解析ステップS130と、解析された依存関係から各変
数のプログラム実行時のアクセス頻度を調べる変数定義
検索ステップS140と、調べられたアクセス頻度が高
い変数を、低位のアドレス領域に配置する変数配置ステ
ップ150と、配置された変数の情報を含む中間コード
からオブジェクトコードを生成するコード生成ステップ
S160と、生成されたオブジェクトコードを出力する
出力プログラム出力ステップS170とを含むものであ
る。
を示すフローチャートである。このフローチャートは、
原始プログラムを入力する原始プログラム入力ステップ
S110と、入力した原始プログラムについて言語処理
を行い、中間コードを出力する言語処理ステップS12
0と、中間コードの関数の依存関係を解析する依存関係
解析ステップS130と、解析された依存関係から各変
数のプログラム実行時のアクセス頻度を調べる変数定義
検索ステップS140と、調べられたアクセス頻度が高
い変数を、低位のアドレス領域に配置する変数配置ステ
ップ150と、配置された変数の情報を含む中間コード
からオブジェクトコードを生成するコード生成ステップ
S160と、生成されたオブジェクトコードを出力する
出力プログラム出力ステップS170とを含むものであ
る。
【0043】以下、本実施形態の変数の最適配置処理の
具体例について説明する。図3は、本実施形態の具体例
を説明するために用いる原始プログラムである。まず、
この原始プログラムは、入力部100より処理部200
に入力される(ステップS110)。この入力は、キー
ボード等より原始プログラムのファイルを指定すること
により行ってもよいし、エディタ等で編集した原始プロ
グラムを入力するようにしてもよい。入力された原始プ
ログラムは、言語処理部210にて中間コードに変換さ
れる(ステップS120)。中間コードは種々の最適化
を受けた形で出力され、通常の専用の中間コード処理装
置より出力される図4で示される出力プログラムと対応
がほぼ同じ形態をとる。以降、説明の簡便のため、本実
施形態の言語処理部210にて出力された中間コード
は、図4に示した中間コードであるものとする。
具体例について説明する。図3は、本実施形態の具体例
を説明するために用いる原始プログラムである。まず、
この原始プログラムは、入力部100より処理部200
に入力される(ステップS110)。この入力は、キー
ボード等より原始プログラムのファイルを指定すること
により行ってもよいし、エディタ等で編集した原始プロ
グラムを入力するようにしてもよい。入力された原始プ
ログラムは、言語処理部210にて中間コードに変換さ
れる(ステップS120)。中間コードは種々の最適化
を受けた形で出力され、通常の専用の中間コード処理装
置より出力される図4で示される出力プログラムと対応
がほぼ同じ形態をとる。以降、説明の簡便のため、本実
施形態の言語処理部210にて出力された中間コード
は、図4に示した中間コードであるものとする。
【0044】続いて、依存関係解析部221にて図4に
示す中間コードに記述された関数の依存関係を解析する
(ステップS130)。図4においては、命令群51と
52はそれぞれ関数tupleとfunctionでの
処理を示す。命令群51の中において、命令53で示さ
れる文が、関数tupleの中から関数functio
nを呼び出している。同様に関数部分52の中において
関数呼出し文54で呼び出される文が関数functi
on中から関数checkを呼び出していることを示
す。従って、その結果、図5で示される様な依存関係を
表すグラフデータが作成される。
示す中間コードに記述された関数の依存関係を解析する
(ステップS130)。図4においては、命令群51と
52はそれぞれ関数tupleとfunctionでの
処理を示す。命令群51の中において、命令53で示さ
れる文が、関数tupleの中から関数functio
nを呼び出している。同様に関数部分52の中において
関数呼出し文54で呼び出される文が関数functi
on中から関数checkを呼び出していることを示
す。従って、その結果、図5で示される様な依存関係を
表すグラフデータが作成される。
【0045】続いて、変数定義検索部222にて、グラ
フで求められた関数内において、関数内で繰り返しがな
いか調べる(ステップS140)。繰り返しがあれば、
繰り返し回数を算出する。その回数は、変数などの情報
を用いて、最大繰り返し回数を推定できるものであれば
その値を算出し、推定できないものは適当な大きな値を
設定しておく。また、グラフに重みがついている場合
は、繰り返し回数に重みを積算する。続いて、繰り返し
部分で関数呼び出しが行われていれば、関数の依存関係
を表す図5のグラフに値70で示される回数の重みをつ
ける。そして繰り返しの中に外部変数のアクセスがある
か検索する。すなわち、外部変数は図4に示す変数定義
部55で宣言テーブルを構成しており、この中にある外
部変数が使用されているかどうかを検索することにな
る。繰り返し部分で外部変数が使用されている場合は、
図6で示される外部変数アクセス頻度情報テーブルに、
その繰り返し回数を加算する。以下、次の繰り返しに進
み、次の関数についても上記と同様のことを行う。
フで求められた関数内において、関数内で繰り返しがな
いか調べる(ステップS140)。繰り返しがあれば、
繰り返し回数を算出する。その回数は、変数などの情報
を用いて、最大繰り返し回数を推定できるものであれば
その値を算出し、推定できないものは適当な大きな値を
設定しておく。また、グラフに重みがついている場合
は、繰り返し回数に重みを積算する。続いて、繰り返し
部分で関数呼び出しが行われていれば、関数の依存関係
を表す図5のグラフに値70で示される回数の重みをつ
ける。そして繰り返しの中に外部変数のアクセスがある
か検索する。すなわち、外部変数は図4に示す変数定義
部55で宣言テーブルを構成しており、この中にある外
部変数が使用されているかどうかを検索することにな
る。繰り返し部分で外部変数が使用されている場合は、
図6で示される外部変数アクセス頻度情報テーブルに、
その繰り返し回数を加算する。以下、次の繰り返しに進
み、次の関数についても上記と同様のことを行う。
【0046】図7は、変数定義検索ステップS140に
おける外部変数のアクセス頻度を求めるフローチャート
を示したものである。まず、入力した中間コードに含ま
れる関数内に繰り返しがあるか否かを判定する(ステッ
プS141)。この判定により関数内に繰り返しがあれ
ば、その繰り返し回数を調べる(ステップS142)。
この回数の調べ方は、上述の如くである。続いて、その
繰り返しの中で関数の呼び出しがあるか否かを判定する
(ステップS143)。関数呼び出しがある場合には、
繰り返し回数だけグラフデータに重みをつける(ステッ
プS144)。続いて、その繰り返しの中で外部変数の
アクセスがあるか否かを判定し(ステップS145)、
その判定の結果外部変数のアクセスがある場合には、そ
の情報をアクセス頻度情報に加算する。このようにし
て、1つの繰り返しの処理が終了し、ステップS141
に戻って次の繰り返しの処理を行う。これらの処理を関
数内の繰り返しについてすべて行い、全ての繰り返しに
ついて終了した場合には、繰り返し部以外の外部変数の
アクセス回数を調べる(ステップS147)。図7に示
した処理を入力した中間コードに含まれる全ての関数に
ついて適用する。
おける外部変数のアクセス頻度を求めるフローチャート
を示したものである。まず、入力した中間コードに含ま
れる関数内に繰り返しがあるか否かを判定する(ステッ
プS141)。この判定により関数内に繰り返しがあれ
ば、その繰り返し回数を調べる(ステップS142)。
この回数の調べ方は、上述の如くである。続いて、その
繰り返しの中で関数の呼び出しがあるか否かを判定する
(ステップS143)。関数呼び出しがある場合には、
繰り返し回数だけグラフデータに重みをつける(ステッ
プS144)。続いて、その繰り返しの中で外部変数の
アクセスがあるか否かを判定し(ステップS145)、
その判定の結果外部変数のアクセスがある場合には、そ
の情報をアクセス頻度情報に加算する。このようにし
て、1つの繰り返しの処理が終了し、ステップS141
に戻って次の繰り返しの処理を行う。これらの処理を関
数内の繰り返しについてすべて行い、全ての繰り返しに
ついて終了した場合には、繰り返し部以外の外部変数の
アクセス回数を調べる(ステップS147)。図7に示
した処理を入力した中間コードに含まれる全ての関数に
ついて適用する。
【0047】ここで、図4においては、関数tuple
()の中で使用されている外部変数は変数56,57,
58,59のbind,custom,array1,
array2であり、関数functionの中で使用
されている外部変数は変数60のattributeで
ある。関数内での繰り返しは、ジャンプ文61のジャン
プ先がラベル62のL2である様に後方参照の形をと
り、この形態であればラベル62とジャンプ文61の間
で示される65は繰り返し部分である。同様にラベル6
4のL4とジャンプ文の間で示される部分66も繰り返
し部分である。
()の中で使用されている外部変数は変数56,57,
58,59のbind,custom,array1,
array2であり、関数functionの中で使用
されている外部変数は変数60のattributeで
ある。関数内での繰り返しは、ジャンプ文61のジャン
プ先がラベル62のL2である様に後方参照の形をと
り、この形態であればラベル62とジャンプ文61の間
で示される65は繰り返し部分である。同様にラベル6
4のL4とジャンプ文の間で示される部分66も繰り返
し部分である。
【0048】この繰り返し部分65では、関数func
tionと外部変数bindがあり、上述の手法に基づ
き、図5のグラフに値70で示される繰り返し関数la
rge_number(適当な大きな値)を重みとして
つけ、外部変数bindは、図6のアクセス頻度情報テ
ーブルに繰り返し回数を外部変数bindのアクセス回
数として加算する。また、重みがついた関数funct
ionの中にある外部変数60のattributeは
一度のアクセスが重みの値倍繰り返すことになり、この
例ではattributeのアクセス頻度は(2*la
rge_number)回になる。以降、同様の操作を
繰り返すことにより、図6に示すように最終的な外部変
数のアクセス頻度情報が作成される。
tionと外部変数bindがあり、上述の手法に基づ
き、図5のグラフに値70で示される繰り返し関数la
rge_number(適当な大きな値)を重みとして
つけ、外部変数bindは、図6のアクセス頻度情報テ
ーブルに繰り返し回数を外部変数bindのアクセス回
数として加算する。また、重みがついた関数funct
ionの中にある外部変数60のattributeは
一度のアクセスが重みの値倍繰り返すことになり、この
例ではattributeのアクセス頻度は(2*la
rge_number)回になる。以降、同様の操作を
繰り返すことにより、図6に示すように最終的な外部変
数のアクセス頻度情報が作成される。
【0049】この情報を基に外部変数のアクセス頻度順
位を決定する。この順位により、変数配置部223によ
りアクセス頻度の高い順番に低位のアドレス領域(アド
レス指定のサイズが小さいアドレス領域)に外部変数の
配置を行う(ステップS150)。ここで、この配置に
より低位のアドレス領域が不足した場合には次位のアド
レス領域へ配置する様な調整を実施する。図6は、アク
セス頻度が一番高いのが変数attributeであ
り、次いで変数customとbindである。アドレ
ス領域の空き領域を考慮し、最もアクセス頻度の高い変
数から順に低位のアドレス領域に配置する。例えば、変
数attributeを_tiny領域へ、変数cus
tomとbindを_near領域へ、その他は_fa
r領域に配置することを決定する。
位を決定する。この順位により、変数配置部223によ
りアクセス頻度の高い順番に低位のアドレス領域(アド
レス指定のサイズが小さいアドレス領域)に外部変数の
配置を行う(ステップS150)。ここで、この配置に
より低位のアドレス領域が不足した場合には次位のアド
レス領域へ配置する様な調整を実施する。図6は、アク
セス頻度が一番高いのが変数attributeであ
り、次いで変数customとbindである。アドレ
ス領域の空き領域を考慮し、最もアクセス頻度の高い変
数から順に低位のアドレス領域に配置する。例えば、変
数attributeを_tiny領域へ、変数cus
tomとbindを_near領域へ、その他は_fa
r領域に配置することを決定する。
【0050】この決定を基に、中間コードに外部変数の
配置情報を反映させ、コード生成部224にてコードジ
ェネレーションを行う(ステップS160)。次に出力
プログラムをアセンブラコードとして出力する(ステッ
プS170)。尚、ステップS170は必要に応じて省
略してもよい。
配置情報を反映させ、コード生成部224にてコードジ
ェネレーションを行う(ステップS160)。次に出力
プログラムをアセンブラコードとして出力する(ステッ
プS170)。尚、ステップS170は必要に応じて省
略してもよい。
【0051】図13は上述の如く図3の原始プログラム
を外部変数に対する配置指定なしでプログラム作成者が
外部変数を適宜配置する手法によりコンパイルされた場
合のオブジェクトコードマップである。一方、図8は本
実施形態の変数の最適化配置を実施した場合のオブジェ
クトコードマップある。アクセス頻度の一番高い外部変
数attributeのアクセスオブジェクトコード
は、図8では91,92に示し、従来例である図13で
は81,82で示される。オブジェクトのコードサイズ
を比較すると、互いに4バイトずつ、最適化配置された
場合の方が小さくなっていることが分かる。以上のよう
にして、本実施形態の変数の最適配置方法及びその装置
によれば、目的プログラムのオブジェクトサイズを小さ
くすることができるので、実行速度の向上を図ることが
できる。
を外部変数に対する配置指定なしでプログラム作成者が
外部変数を適宜配置する手法によりコンパイルされた場
合のオブジェクトコードマップである。一方、図8は本
実施形態の変数の最適化配置を実施した場合のオブジェ
クトコードマップある。アクセス頻度の一番高い外部変
数attributeのアクセスオブジェクトコード
は、図8では91,92に示し、従来例である図13で
は81,82で示される。オブジェクトのコードサイズ
を比較すると、互いに4バイトずつ、最適化配置された
場合の方が小さくなっていることが分かる。以上のよう
にして、本実施形態の変数の最適配置方法及びその装置
によれば、目的プログラムのオブジェクトサイズを小さ
くすることができるので、実行速度の向上を図ることが
できる。
【0052】なお、上述した変数の最適配置方法を実現
するためのプログラムはコンピュータ読み取り可能な記
録媒体に保存することができる。この記録媒体をコンピ
ュータシステムによって読み込ませ、前記プログラムを
実行してコンピュータを制御しながら上述した変数の最
適配置方法を実現することができる。ここで、前記記録
媒体とは、メモリ装置、磁気ディスク装置、光ディスク
装置等、プログラムを記録することができるような装置
が含まれる。
するためのプログラムはコンピュータ読み取り可能な記
録媒体に保存することができる。この記録媒体をコンピ
ュータシステムによって読み込ませ、前記プログラムを
実行してコンピュータを制御しながら上述した変数の最
適配置方法を実現することができる。ここで、前記記録
媒体とは、メモリ装置、磁気ディスク装置、光ディスク
装置等、プログラムを記録することができるような装置
が含まれる。
【0053】
【発明の効果】以上説明してきたように、本発明に係る
変数の最適配置方法及びその装置及び変数の最適配置プ
ログラムを格納したコンピュータ読み取り可能な記録媒
体によれば、最適化を受けたレベルでのアクセス頻度の
高い変数を、自動的に低位のアドレス領域に配置するこ
とにより、オブジェクトサイズの小さい命令に置き換え
ることが可能となり、全体としてサイズの減少、しいて
は目的プログラムの実行速度の向上が得られる。
変数の最適配置方法及びその装置及び変数の最適配置プ
ログラムを格納したコンピュータ読み取り可能な記録媒
体によれば、最適化を受けたレベルでのアクセス頻度の
高い変数を、自動的に低位のアドレス領域に配置するこ
とにより、オブジェクトサイズの小さい命令に置き換え
ることが可能となり、全体としてサイズの減少、しいて
は目的プログラムの実行速度の向上が得られる。
【図1】本実施形態の変数の最適配置装置を示すブロッ
ク図である。
ク図である。
【図2】本実施形態の変数の最適配置方法を示すフロー
チャートである。
チャートである。
【図3】本実施形態の説明のために用いる原始プログラ
ムを示す図である。
ムを示す図である。
【図4】図3の原始プログラムが言語処理部210によ
り変換された際の中間コードを示す図である。
り変換された際の中間コードを示す図である。
【図5】関数の依存関係のグラフデータを示す図であ
る。
る。
【図6】外部変数のアクセス頻度情報テーブルを示す図
である。
である。
【図7】変数定義検索ステップS140の具体例を示す
フローチャートである。
フローチャートである。
【図8】本実施形態の外部変数の最適化配置処理を実行
してコンパイルされた場合のオブジェクトコードマップ
を示す図である。
してコンパイルされた場合のオブジェクトコードマップ
を示す図である。
【図9】従来の変数配置指定方法を説明するための図で
ある。
ある。
【図10】変数のメモリマッピングを説明するための図
である。
である。
【図11】従来の変数配置指定方法を説明するために用
いるユーザー定義の原始プログラムを示す図である。
いるユーザー定義の原始プログラムを示す図である。
【図12】図11の原始プログラムを従来技術により変
換された中間コードを示す図である。
換された中間コードを示す図である。
【図13】従来の外部変数の最適化配置処理を実行して
コンパイルされた場合のオブジェクトコードマップを示
す図である。
コンパイルされた場合のオブジェクトコードマップを示
す図である。
21,22,22′ 外部変数宣言文 23 関数定義部 25,26 プログラム中の繰り返し部 28 代入命令 31,32 外部変数へのアクセス文 35 繰り返し部26に対応する繰り返し部 51,52 関数部分 53,54 関数呼出し文 55 変数宣言部 56,57,58,59,60 変数 61,63 ジャンブ文 62,64 ラベル 65,66 繰り返し部分 70 繰り返しの重みを表す値 81,82 オブジェクトコード 91,92 オブジェクトコード 100 入力部 200 処理部 210 言語処理部 220 中間コード処理部 221 依存関係解析部 222 変数定義検索部 223 変数配置部 224 コード生成部 300 出力部
Claims (12)
- 【請求項1】 変数の最適な配置を行う方法において、 原始プログラム内で使用される各変数についてプログラ
ム実行時のアクセス頻度を解析し、 この解析されたアクセス頻度に基づいて、前記原始プロ
グラムから生成されるオブジェクトコードが最小になる
ように前記変数を配置することを含むことを特徴とする
変数の最適配置方法。 - 【請求項2】 変数の最適配置を行う方法において、 原始プログラム内で使用される各変数についてプログラ
ム実行時のアクセス頻度を解析し、 この解析されたアクセス頻度に基づき、最もアクセス頻
度の大きな変数から順に低位のアドレス領域に配置する
ことを含むことを特徴とする変数の最適配置方法。 - 【請求項3】 前記アクセス頻度を解析する際には、 前記原始プログラムを言語処理により最適化処理が施さ
れた中間コードを生成し、この中間コードを用いてプロ
グラム実行時のアクセス頻度を解析することを特徴とす
る請求項1または2記載の変数の最適配置方法。 - 【請求項4】 原始プログラムを入力する原始プログラ
ム入力ステップと、 前記入力した原始プログラムについて言語処理を行い、
中間コードを出力する言語処理ステップと、 前記中間コードの関数の依存関係を解析する依存関係解
析ステップと、 前記解析された依存関係から各変数のプログラム実行時
のアクセス頻度を調べる変数定義検索ステップと、 前記調べられたアクセス頻度に基づいて、アクセス頻度
の高い変数を低位のアドレス領域に配置する変数配置ス
テップと、 前記配置された変数の情報を含む中間コードからオブジ
ェクトコードを生成するコード生成ステップと、 を含むことを特徴とする変数の最適配置方法。 - 【請求項5】 前記変数定義検索ステップは、 前記中間コードに含まれる関数に対し、各関数内で繰り
返しがあるか否かを判定し、前記繰り返しがある場合に
は、その繰り返し回数を調べ、 前記繰り返しの中で関数呼び出しがある場合にはその関
数に前記調べた繰り返し回数の重みをつけ、 前記繰り返しの中で変数のアクセスがある場合には、変
数のアクセス頻度を保持するアクセス頻度情報にアクセ
ス回数を加算し、 前記重みがついた関数内での変数のアクセスがある場合
には、アクセス回数にその重みを乗じた値をアクセス回
数として前記アクセス頻度情報に加算することを含むこ
とを特徴とする請求項4記載の変数の最適配置方法。 - 【請求項6】 原始プログラムを入力する原始プログラ
ム入力部と、 前記入力した原始プログラムについて言語処理を行い、
中間コードを出力する言語処理部と、 前記中間コードの関数の依存関係を解析する依存関係解
析部と、 前記解析された依存関係から各変数のプログラム実行時
のアクセス頻度を調べる変数定義検索部と、 前記調べられたアクセス頻度に基づき、アクセス頻度の
高い変数を低位のアドレス領域に配置する変数配置部
と、 前記配置された変数の情報を含む中間コードからオブジ
ェクトコードを生成するコード生成部と、 を含むことを特徴とする変数の最適配置装置。 - 【請求項7】 前記変数定義検索部は、前記中間コード
の各関数内で、 前記関数内で繰り返しがあるか否かを判定する手段と、 前記繰り返しがある場合には、その繰り返し回数を調べ
る手段と、 前記繰り返しの中で関数呼び出しがある場合にはその関
数に前記調べた繰り返し回数の重みをつける手段と、 前記繰り返しの中で変数のアクセスがある場合には、変
数のアクセス頻度を保持するアクセス頻度情報保持手段
にアクセス回数を加算する手段と、 前記重みがついた関数内での変数のアクセスがある場合
には、アクセス回数にその重みを乗じた値をアクセス回
数として前記アクセス頻度情報に加算する手段と、 を含むことを特徴とする請求項6記載の変数の最適配置
装置。 - 【請求項8】 原始プログラム内で使用される各変数に
ついてプログラム実行時のアクセス頻度を解析する処理
と、 この解析されたアクセス頻度に基づいて、前記原始プロ
グラムから生成されるオブジェクトコードが最小になる
ように前記変数を配置する処理と、 を含み、これら処理をコンピュータに実行させることを
特徴とする変数の最適配置プログラムを格納したコンピ
ュータ読み取り可能な記録媒体。 - 【請求項9】 原始プログラム内で使用される各変数に
ついてプログラム実行時のアクセス頻度を解析する処理
と、 この解析されたアクセス頻度に基づいて最もアクセス頻
度の大きな変数から順に低位のアドレス領域に配置する
処理と、 を含み、これら処理をコンピュータに実行させることを
特徴とする変数の最適配置プログラムを格納したコンピ
ュータ読み取り可能な記録媒体。 - 【請求項10】 前記アクセス頻度を解析する際には、 前記原始プログラムを言語処理により最適化処理が施さ
れた中間コードを生成する処理と、この中間コードを用
いてプログラム実行時のアクセス頻度を解析する処理
と、 を含み、これら処理をコンピュータに実行させることを
特徴とする請求項8または9記載の変数の最適配置プロ
グラムを格納したコンピュータ読み取り可能な記録媒
体。 - 【請求項11】 原始プログラムを入力する原始プログ
ラム入力ステップと、 前記入力した原始プログラムについて言語処理を行い、
中間コードを出力する言語処理ステップと、 前記中間コードの関数の依存関係を解析する依存関係解
析ステップと、 前記解析された依存関係から各変数のプログラム実行時
のアクセス頻度を調べる変数定義検索ステップと、 前記調べられたアクセス頻度に基づいてアクセス頻度の
高い変数から順に、低位のアドレス領域に配置する変数
配置ステップと、 前記配置された変数の情報を含む中間コードからオブジ
ェクトコードを生成するコード生成ステップと、 を含み、これらステップをコンピュータに実行させるこ
とを特徴とする変数の最適配置プログラムを格納したコ
ンピュータ読み取り可能な記録媒体。 - 【請求項12】 前記変数定義検索ステップは、 前記中間コードに含まれる関数に対し、各関数内で繰り
返しがあるか否かを判定する処理する処理と、 前記繰り返しがある場合には、その繰り返し回数を調べ
る処理と、 前記繰り返しの中で関数呼び出しがある場合にはその関
数に前記調べた繰り返し回数の重みづけを行う処理と、 前記繰り返しの中で変数のアクセスがある場合には、変
数のアクセス頻度を保持するアクセス頻度情報にアクセ
ス回数を加算する処理と、 前記重みがついた関数内での変数のアクセスがある場合
には、アクセス回数にその重みを乗じた値をアクセス回
数として前記アクセス頻度情報に加算する処理と、 を含み、これら処理をコンピュータに実行させることを
特徴とする請求項11記載の変数の最適配置プログラム
を格納したコンピュータ読み取り可能な記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8284312A JPH10124325A (ja) | 1996-10-25 | 1996-10-25 | 変数の最適配置方法、変数の最適配置装置及び変数の最適配置プログラムを格納したコンピュータ読み取り可能な記録媒体 |
US08/957,064 US6023583A (en) | 1996-10-25 | 1997-10-24 | Optimized variable allocation method, optimized variable allocation system and computer-readable memory containing an optimized variable allocation program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8284312A JPH10124325A (ja) | 1996-10-25 | 1996-10-25 | 変数の最適配置方法、変数の最適配置装置及び変数の最適配置プログラムを格納したコンピュータ読み取り可能な記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10124325A true JPH10124325A (ja) | 1998-05-15 |
Family
ID=17676923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8284312A Abandoned JPH10124325A (ja) | 1996-10-25 | 1996-10-25 | 変数の最適配置方法、変数の最適配置装置及び変数の最適配置プログラムを格納したコンピュータ読み取り可能な記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6023583A (ja) |
JP (1) | JPH10124325A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7148909B2 (en) | 1998-05-27 | 2006-12-12 | Canon Kabushiki Kaisha | Image display system capable of displaying and scaling images on plurality of image sources and display control method therefor |
JP2007200240A (ja) * | 2006-01-30 | 2007-08-09 | Kyocera Corp | 情報処理装置及び情報処理方法 |
JP2011123719A (ja) * | 2009-12-11 | 2011-06-23 | Renesas Electronics Corp | 言語処理システム、言語処理方法、及び言語処理用プログラム |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999012094A1 (de) * | 1997-09-01 | 1999-03-11 | Siemens Nixdorf Informationssysteme Ag | Verfahren zum umsetzen eines objektcodes in einen programmcode |
JPH1185526A (ja) * | 1997-09-12 | 1999-03-30 | Hitachi Ltd | プログラムロード方法 |
US6317873B1 (en) * | 1998-10-14 | 2001-11-13 | Alcatel Usa Sourcing, L.P. | Assembly language translator |
JP3699354B2 (ja) * | 1998-12-22 | 2005-09-28 | 富士通株式会社 | 最適化オブジェクト生成装置及び方法 |
US6550055B1 (en) * | 1998-12-29 | 2003-04-15 | Intel Corp. | Method and apparatus for cheating an information report resulting from a diagnostic session |
US6341338B1 (en) * | 1999-02-04 | 2002-01-22 | Sun Microsystems, Inc. | Protocol for coordinating the distribution of shared memory |
JP2001005675A (ja) * | 1999-06-21 | 2001-01-12 | Matsushita Electric Ind Co Ltd | プログラム変換装置及びプロセッサ |
US6757892B1 (en) * | 1999-06-24 | 2004-06-29 | Sarnoff Corporation | Method for determining an optimal partitioning of data among several memories |
US7035989B1 (en) | 2000-02-16 | 2006-04-25 | Sun Microsystems, Inc. | Adaptive memory allocation |
US6802057B1 (en) | 2000-05-03 | 2004-10-05 | Sun Microsystems, Inc. | Automatic generation of fortran 90 interfaces to fortran 77 code |
US6647546B1 (en) | 2000-05-03 | 2003-11-11 | Sun Microsystems, Inc. | Avoiding gather and scatter when calling Fortran 77 code from Fortran 90 code |
US6986130B1 (en) | 2000-07-28 | 2006-01-10 | Sun Microsystems, Inc. | Methods and apparatus for compiling computer programs using partial function inlining |
US6910107B1 (en) | 2000-08-23 | 2005-06-21 | Sun Microsystems, Inc. | Method and apparatus for invalidation of data in computer systems |
US7406681B1 (en) | 2000-10-12 | 2008-07-29 | Sun Microsystems, Inc. | Automatic conversion of source code from 32-bit to 64-bit |
US6957208B1 (en) | 2000-10-31 | 2005-10-18 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for performance analysis using semantic knowledge |
JP3895934B2 (ja) * | 2001-01-31 | 2007-03-22 | 株式会社東芝 | 仕様操作装置 |
US6792580B2 (en) * | 2001-01-31 | 2004-09-14 | Kabushiki Kaisha Toshiba | Method and computer program product for software/hardware language model conversion |
US7020870B2 (en) * | 2002-05-15 | 2006-03-28 | Sun Microsystems, Inc. | Dynamic size for language variables |
JP2004021425A (ja) * | 2002-06-13 | 2004-01-22 | Hitachi Ltd | コンパイラにおけるメモリ配置方式 |
US8473971B2 (en) | 2005-09-06 | 2013-06-25 | Microsoft Corporation | Type inference and type-directed late binding |
US7743366B2 (en) * | 2005-10-03 | 2010-06-22 | Arm Limited | System and method for compiling a computer program |
US8484620B2 (en) * | 2006-04-12 | 2013-07-09 | International Business Machines Corporation | Implementing performance impact reduction of watched variables |
US8321836B2 (en) * | 2007-06-21 | 2012-11-27 | Microsoft Corporation | Late bound programmatic assistance |
US20080320453A1 (en) * | 2007-06-21 | 2008-12-25 | Microsoft Corporation | Type inference and late binding |
JP2009237762A (ja) * | 2008-03-26 | 2009-10-15 | Toshiba Corp | プログラム解析装置、プログラム解析方法および解析プログラム |
US8397217B2 (en) * | 2010-02-22 | 2013-03-12 | International Business Machines Corporation | Integrating templates into tests |
US8572591B2 (en) | 2010-06-15 | 2013-10-29 | Microsoft Corporation | Dynamic adaptive programming |
US9256401B2 (en) | 2011-05-31 | 2016-02-09 | Microsoft Technology Licensing, Llc | Editor visualization of symbolic relationships |
JP2017010123A (ja) * | 2015-06-17 | 2017-01-12 | 富士通株式会社 | コンパイルを行う計算機、コンパイラ方法、およびコンパイラプログラム |
US10310870B2 (en) * | 2015-08-20 | 2019-06-04 | Appdome Ltd. | Method for creating a revised application by adding code functionality to an existing application executable |
GB2549775B (en) | 2016-04-28 | 2018-05-16 | Imagination Tech Ltd | Directed placement of data in memory |
GB2581070A (en) | 2017-10-17 | 2020-08-05 | Appdome Ltd | Automated mobile application integration |
US11243748B2 (en) | 2018-11-08 | 2022-02-08 | Appdome Ltd. | Artificial intelligence mobile integration |
US11831631B2 (en) | 2018-11-08 | 2023-11-28 | Appdome Ltd. | Single sign-on for mobile applications using direct brokering for identity authentication |
CN110333870B (zh) * | 2019-06-28 | 2023-04-18 | 潍柴动力股份有限公司 | Simulink模型变量分配的处理方法、装置及设备 |
US11520579B1 (en) * | 2020-11-30 | 2022-12-06 | Styra, Inc. | Automated asymptotic analysis |
US20220237008A1 (en) * | 2021-01-22 | 2022-07-28 | Seagate Technology Llc | Embedded computation instruction set optimization |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530866A (en) * | 1991-07-30 | 1996-06-25 | Tera Computer Company | Register allocation methods having upward pass for determining and propagating variable usage information and downward pass for binding; both passes utilizing interference graphs via coloring |
US5659704A (en) * | 1994-12-02 | 1997-08-19 | Hewlett-Packard Company | Methods and system for reserving storage space for data migration in a redundant hierarchic data storage system by dynamically computing maximum storage space for mirror redundancy |
-
1996
- 1996-10-25 JP JP8284312A patent/JPH10124325A/ja not_active Abandoned
-
1997
- 1997-10-24 US US08/957,064 patent/US6023583A/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7148909B2 (en) | 1998-05-27 | 2006-12-12 | Canon Kabushiki Kaisha | Image display system capable of displaying and scaling images on plurality of image sources and display control method therefor |
JP2007200240A (ja) * | 2006-01-30 | 2007-08-09 | Kyocera Corp | 情報処理装置及び情報処理方法 |
JP2011123719A (ja) * | 2009-12-11 | 2011-06-23 | Renesas Electronics Corp | 言語処理システム、言語処理方法、及び言語処理用プログラム |
Also Published As
Publication number | Publication date |
---|---|
US6023583A (en) | 2000-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH10124325A (ja) | 変数の最適配置方法、変数の最適配置装置及び変数の最適配置プログラムを格納したコンピュータ読み取り可能な記録媒体 | |
EP0806725B1 (en) | Method and apparatus for early insertion of assembler code for optimization | |
JP4699580B2 (ja) | データ処理システムの配列の静的初期化方法、データ処理方法、並びにデータ処理システム及びその制御手順をコンピュータに実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体 | |
US7000227B1 (en) | Iterative optimizing compiler | |
US5606697A (en) | Compiler system for language processing program | |
US6973644B2 (en) | Program interpreter | |
US7185327B2 (en) | System and method for optimizing operations via dataflow analysis | |
US6363522B1 (en) | Method and apparatus for handling exceptions as normal control flow | |
JPH0519173B2 (ja) | ||
JPH06103463B2 (ja) | コード生成方法 | |
JP2000347874A (ja) | レジスタ割当器を用いた呼出規則プロローグ・エピローグコード構築方法及び装置 | |
JPH0695310B2 (ja) | コード最適化方法 | |
JP2000347876A (ja) | スタック・スロット割当て方法および装置 | |
US6301652B1 (en) | Instruction cache alignment mechanism for branch targets based on predicted execution frequencies | |
US6334212B1 (en) | Compiler | |
US20030079210A1 (en) | Integrated register allocator in a compiler | |
US6014519A (en) | Language processing unit and a language processing method to translate a source program and generate an object module file | |
US20040205320A1 (en) | Method and apparatus for refining an alias set of address taken variables | |
US6421824B1 (en) | Method and apparatus for producing a sparse interference graph | |
US7926044B2 (en) | Method, apparatus and computer program for executing a program | |
US8856765B2 (en) | Analyzing a pointer in an analysis target program or a partial program | |
US7770152B1 (en) | Method and apparatus for coordinating state and execution context of interpreted languages | |
JP3339317B2 (ja) | 動的情報利用型プログラム最適化装置 | |
JPH11345127A (ja) | コンパイラ | |
US5319784A (en) | System for automatic and selective compile-time installation of fastpath into program for calculation of function/procedure without executing the function/procedure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20031216 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20040302 |