JPH09223023A - コンパイル装置およびコンパイラ - Google Patents

コンパイル装置およびコンパイラ

Info

Publication number
JPH09223023A
JPH09223023A JP8030914A JP3091496A JPH09223023A JP H09223023 A JPH09223023 A JP H09223023A JP 8030914 A JP8030914 A JP 8030914A JP 3091496 A JP3091496 A JP 3091496A JP H09223023 A JPH09223023 A JP H09223023A
Authority
JP
Japan
Prior art keywords
register
program
instruction
mask
mask value
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.)
Granted
Application number
JP8030914A
Other languages
English (en)
Other versions
JP2904099B2 (ja
Inventor
Saori Nakamura
さおり 中村
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP8030914A priority Critical patent/JP2904099B2/ja
Priority to US08/802,045 priority patent/US6256782B1/en
Priority to EP97102666A priority patent/EP0790555B1/en
Priority to DE69731574T priority patent/DE69731574T2/de
Publication of JPH09223023A publication Critical patent/JPH09223023A/ja
Application granted granted Critical
Publication of JP2904099B2 publication Critical patent/JP2904099B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target 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)【要約】 【課題】同一のマスク値が多く使用されることが予測可
能な原始プログラムから実行効率の良い目的プログラム
を生成する。 【解決手段】構文解析手段111が原始プログラム21
に対して構文解析処理を行い、最適化手段112が最適
化処理を行って中間言語形式のプログラムを生成し、マ
スク値専用レジスタ確保手段114が特定のマスク命令
に対してレジスタの一つを専用に確保し、レジスタ割り
付け手段115がマスク命令用のレジスタ以外のレジス
タに変数および定数を割り付け、コード生成手段116
がマスク値を使用するマスク命令に対しては、マスク値
用レジスタをオペランドとしてコード生成を行い、その
他の命令に対しては通常の方法でコード生成を行い、マ
スク値設定命令挿入手段117が生成された目的プログ
ラムの先頭にマスク命令用レジスタへマスク値を設定す
る命令を挿入する。

Description

【発明の詳細な説明】
【発明の属する技術分野】本発明は、原始プログラムを
翻訳して目的プログラムを生成するコンパイル装置に関
し、特に、変換された目的プログラム中に特定のマスク
命令が多く生成される原始プログラムを翻訳して、実行
効率が良くサイズの小さい目的プログラムを生成するコ
ンパイル装置およびコンパイラに関する。
【0001】
【従来の技術】コンパイラが目的プログラムを生成する
際に、データをできるだけ多くレジスタにおいて使用す
ることにより該目的プログラムの実行効率が向上し、コ
ードサイズも削減される。
【0002】このため、従来のコンパイラにおいては、
原始プログラム中の関数単位にデータ出現数を計測して
重み付けを行い、重みの大きい順に該データをレジスタ
に割り付けている。
【0003】特開平1−305434号公報には、デー
タが関数呼び出しの実パラメータとして使用されている
場合に、該データの重み付けを行うコンパイラが記載さ
れている。
【0004】ところで、コンパイル対象となる原始プロ
グラムによっては、特定のデータが多く出現することが
容易に予測できる場合がある。例えば、ハードウェアの
レジスタ幅よりデータ幅の短いデータ型を規定している
プログラミング言語で書かれた原始プログラムがその短
いデータ型の変数を使用している場合には、レジスタ上
でデータ幅から溢れた部分のビットを無効にするため
に、特定のビットがすべて1である値(以下、マスク値
とする)を使用した、演算対象となる値の特定のビット
以外を全て0にするビット毎の論理積命令(以下、マス
ク命令とする)が多く生成される。
【0005】
【発明が解決しようとする課題】上述した従来のコンパ
イラにおいては、レジスタ割り付けが原始プログラム中
の関数を単位として行われているために、上述したよう
にマスク命令を多く含む原始プログラムをコンパイルす
る場合に、関数内で割り付けられたレジスタにマスク値
を設定する命令を設定する必要がある。全体のサイズが
小さい関数においては、この命令を設定し実行すること
が無視できないオーバーヘッドとなるという問題点があ
る。
【0006】また、この従来のコンパイラにおいては、
レジスタ割り付けが原始プログラム中の関数の大きさに
関わらず行われるために、目的プログラムの実行効率が
低下する場合があるという問題点がある。
【0007】本発明の目的は、実行効率の良い目的プロ
グラムを生成するコンパイル装置およびコンパイラを提
供することにある。
【0008】本発明の他の目的は、同一のマスク値が多
く使用されることが予測可能な場合には、コンパイル時
に利用者が明示的な指示を与えることにより、専用のレ
ジスタを確保し、マスク値を該レジスタに設定する命令
の生成を最小限に抑え、サイズの小さな目的プログラム
を生成することにある。
【0009】
【課題を解決するための手段】本発明の第1のコンパイ
ル装置は、原始プログラムを翻訳して目的プログラムを
生成するコンパイル装置であって、前記原始プログラム
を入力して構文解析処理と最適化処理を行い、中間言語
形式のプログラムに変換する構文解析手段と、前記中間
言語形式のプログラム中のマスク命令に使用するための
レジスタを確保するマスク値専用レジスタ確保手段と、
前記中間言語形式のプログラムをコード化する際に、前
記中間言語形式のプログラム中のマスク命令については
前記マスク値専用レジスタ確保手段が確保したレジスタ
をオペランドとしたコードを生成するコード生成手段
と、前記コード生成手段が生成したコード群の先頭に、
前記マスク値専用レジスタ確保手段が確保したレジスタ
にマスク値を設定する命令を挿入して、前記目的プログ
ラムとするマスク値設定命令挿入手段とから構成されて
いる。
【0010】本発明の第2のコンパイル装置は、原始プ
ログラムを翻訳して目的プログラムを生成するコンパイ
ル装置であって、前記原始プログラムを入力して構文解
析処理と最適化処理を行い、中間言語形式のプログラム
に変換する構文解析手段と、前記中間言語形式のプログ
ラム中のマスク命令に使用するためのレジスタを専用に
確保する旨の利用者の指示に応じて、該レジスタを確保
するマスク値専用レジスタ確保手段と、前記中間言語形
式のプログラムをコード化する際に、前記中間言語形式
のプログラム中のマスク命令については前記マスク値専
用レジスタ確保手段が確保したレジスタをオペランドと
したコードを生成するとともに、他の命令については該
中間言語形式のプログラム中の変数および定数データを
前記マスク値専用レジスタ確保手段が確保した以外のレ
ジスタに割り付けコードを生成するコード生成手段と、
前記コード生成手段が生成したコード群の先頭に、前記
マスク値専用レジスタ確保手段が確保したレジスタにマ
スク値を設定する命令を挿入して、前記目的プログラム
とするマスク値設定命令挿入手段とから構成されてい
る。
【0011】本発明の第3のコンパイル装置は、原始プ
ログラムを翻訳して目的プログラムを生成するコンパイ
ル装置であって、前記原始プログラムを入力して構文解
析処理を行い、該原始プログラムを中間言語形式のプロ
グラムに変換する構文解析手段と、前記構文解析手段に
より生成された中間言語形式のプログラムに対して最適
化処理を行う最適化手段と、前記最適化手段が最適化し
た前記中間言語形式のプログラム中のマスク命令に使用
するためのレジスタを専用に確保するか否かを示す利用
者の指示を入力するコード生成方式選択手段と、前記コ
ード生成方式選択手段がマスク命令に使用するためのレ
ジスタを専用に確保する旨の指示を入力した場合に、該
レジスタを確保するマスク値専用レジスタ確保手段と、
前記最適化手段が最適化した前記中間言語形式のプログ
ラム中の変数および定数データをレジスタに割り付ける
際に、前記マスク値専用レジスタ確保手段によりマスク
命令に使用するためのレジスタが確保されている場合に
は、該マスク値専用レジスタ確保手段が確保した以外の
レジスタに該変数および定数データを割り付けるレジス
タ割り付け手段と、前記最適化手段が最適化した前記中
間言語形式のプログラム中のマスク命令については前記
マスク値専用レジスタ確保手段が確保したレジスタをオ
ペランドとしたコードを生成し、他の命令については前
記マスク値専用レジスタ確保手段が確保した以外のレジ
スタを使用してコードを生成するコード生成手段と、前
記コード生成手段が生成したコード群の先頭に、前記マ
スク値専用レジスタ確保手段が確保したレジスタにマス
ク値を設定する命令を挿入して、前記目的プログラムと
するマスク値設定命令挿入手段とから構成されている。
【0012】本発明の第1のコンパイラは、原始プログ
ラムを翻訳して目的プログラムを生成するコンパイラで
あって、前記原始プログラムを入力して構文解析処理と
最適化処理を行い、中間言語形式のプログラムに変換す
る構文解析ステップと、前記中間言語形式のプログラム
中のマスク命令に使用するためのレジスタを確保するマ
スク値専用レジスタ確保ステップと、前記中間言語形式
のプログラムをコード化する際に、前記中間言語形式の
プログラム中のマスク命令については前記マスク値専用
レジスタ確保ステップで確保したレジスタをオペランド
としたコードを生成するコード生成ステップと、前記コ
ード生成ステップで生成したコード群の先頭に、前記マ
スク値専用レジスタ確保ステップで確保したレジスタに
マスク値を設定する命令を挿入して、前記目的プログラ
ムとするマスク値設定命令挿入ステップとを含む。
【0013】本発明の第2のコンパイラは、原始プログ
ラムを翻訳して目的プログラムを生成するコンパイラで
あって、前記原始プログラムを入力して構文解析処理と
最適化処理を行い、中間言語形式のプログラムに変換す
る構文解析ステップと、前記中間言語形式のプログラム
中のマスク命令に使用するためのレジスタを専用に確保
する旨の利用者の指示に応じて、該レジスタを確保する
マスク値専用レジスタ確保ステップと、前記中間言語形
式のプログラムをコード化する際に、前記中間言語形式
のプログラム中のマスク命令については前記マスク値専
用レジスタ確保ステップで確保したレジスタをオペラン
ドとしたコードを生成するとともに、他の命令について
は該中間言語形式のプログラム中の変数および定数デー
タを前記マスク値専用レジスタ確保ステップで確保した
以外のレジスタに割り付けコードを生成するコード生成
ステップと、前記コード生成ステップで生成したコード
群の先頭に、前記マスク値専用レジスタ確保ステップで
確保したレジスタにマスク値を設定する命令を挿入し
て、前記目的プログラムとするマスク値設定命令挿入ス
テップとを含む。
【0014】本発明の第3のコンパイラは、原始プログ
ラムを翻訳して目的プログラムを生成するコンパイラで
あって、前記原始プログラムを入力して構文解析処理を
行い、該原始プログラムを中間言語形式のプログラムに
変換する構文解析ステップと、前記構文解析ステップで
生成された中間言語形式のプログラムに対して最適化処
理を行う最適化ステップと、前記最適化ステップで最適
化した前記中間言語形式のプログラム中のマスク命令に
使用するためのレジスタを専用に確保するか否かを示す
利用者の指示を入力するコード生成方式選択ステップ
と、前記コード生成方式選択ステップでマスク命令に使
用するためのレジスタを専用に確保する旨の指示を入力
した場合に、該レジスタを確保するマスク値専用レジス
タ確保ステップと、前記最適化ステップで最適化した前
記中間言語形式のプログラム中の変数および定数データ
をレジスタに割り付ける際に、前記マスク値専用レジス
タ確保ステップでマスク命令に使用するためのレジスタ
が確保されている場合には、該マスク値専用レジスタ確
保ステップで確保した以外のレジスタに該変数および定
数データを割り付けるレジスタ割り付けステップと、前
記最適化ステップで最適化した前記中間言語形式のプロ
グラム中のマスク命令については前記マスク値専用レジ
スタ確保ステップで確保したレジスタをオペランドとし
たコードを生成し、他の命令については前記マスク値専
用レジスタ確保ステップで確保した以外のレジスタを使
用してコードを生成するコード生成ステップと、前記コ
ード生成ステップで生成したコード群の先頭に、前記マ
スク値専用レジスタ確保ステップで確保したレジスタに
マスク値を設定する命令を挿入して、前記目的プログラ
ムとするマスク値設定命令挿入ステップとを含む。
【0015】本発明の第1の媒体は、原始プログラムを
入力して構文解析処理と最適化処理を行い、中間言語形
式のプログラムに変換する構文解析ステップと、前記中
間言語形式のプログラム中のマスク命令に使用するため
のレジスタを確保するマスク値専用レジスタ確保ステッ
プと、前記中間言語形式のプログラムをコード化する際
に、前記中間言語形式のプログラム中のマスク命令につ
いては前記マスク値専用レジスタ確保ステップで確保し
たレジスタをオペランドとしたコードを生成するコード
生成ステップと、前記コード生成ステップで生成したコ
ード群の先頭に、前記マスク値専用レジスタ確保ステッ
プで確保したレジスタにマスク値を設定する命令を挿入
して、目的プログラムとするマスク値設定命令挿入ステ
ップとを含むコンパイラを記憶する。
【0016】本発明の第2の媒体は、原始プログラムを
入力して構文解析処理と最適化処理を行い、中間言語形
式のプログラムに変換する構文解析ステップと、前記中
間言語形式のプログラム中のマスク命令に使用するため
のレジスタを専用に確保する旨の利用者の指示に応じ
て、該レジスタを確保するマスク値専用レジスタ確保ス
テップと、前記中間言語形式のプログラムをコード化す
る際に、前記中間言語形式のプログラム中のマスク命令
については前記マスク値専用レジスタ確保ステップで確
保したレジスタをオペランドとしたコードを生成すると
ともに、他の命令については該中間言語形式のプログラ
ム中の変数および定数データを前記マスク値専用レジス
タ確保ステップで確保した以外のレジスタに割り付けコ
ードを生成するコード生成ステップと、前記コード生成
ステップで生成したコード群の先頭に、前記マスク値専
用レジスタ確保ステップで確保したレジスタにマスク値
を設定する命令を挿入して、目的プログラムとするマス
ク値設定命令挿入ステップとを含むコンパイラを記憶す
る。
【0017】本発明の第3の媒体は、原始プログラムを
入力して構文解析処理を行い、該原始プログラムを中間
言語形式のプログラムに変換する構文解析ステップと、
前記構文解析ステップで生成された中間言語形式のプロ
グラムに対して最適化処理を行う最適化ステップと、前
記最適化ステップで最適化した前記中間言語形式のプロ
グラム中のマスク命令に使用するためのレジスタを専用
に確保するか否かを示す利用者の指示を入力するコード
生成方式選択ステップと、前記コード生成方式選択ステ
ップでマスク命令に使用するためのレジスタを専用に確
保する旨の指示を入力した場合に、該レジスタを確保す
るマスク値専用レジスタ確保ステップと、前記最適化ス
テップで最適化した前記中間言語形式のプログラム中の
変数および定数データをレジスタに割り付ける際に、前
記マスク値専用レジスタ確保ステップでマスク命令に使
用するためのレジスタが確保されている場合には、該マ
スク値専用レジスタ確保ステップで確保した以外のレジ
スタに該変数および定数データを割り付けるレジスタ割
り付けステップと、前記最適化ステップで最適化した前
記中間言語形式のプログラム中のマスク命令については
前記マスク値専用レジスタ確保ステップで確保したレジ
スタをオペランドとしたコードを生成し、他の命令につ
いては前記マスク値専用レジスタ確保ステップで確保し
た以外のレジスタを使用してコードを生成するコード生
成ステップと、前記コード生成ステップで生成したコー
ド群の先頭に、前記マスク値専用レジスタ確保ステップ
で確保したレジスタにマスク値を設定する命令を挿入し
て、目的プログラムとするマスク値設定命令挿入ステッ
プとを含むコンパイラを記憶する。
【0018】
【発明の実施の形態】以下、本発明の実施例について、
図を参照しながら詳細に説明する。
【0019】図1を参照すると、本発明の第一の実施例
は、コンパイル装置11が、原始プログラムを入力して
文法誤りのチェックおよび構造の解析(以下、構文解析
とする)を行い、冗長なコードの削除、コードの移動、
およびコンパイル時に値が確定している変数に対する定
数による置換等(以下、最適化とする)およびレジスタ
割り付けを行うための中間形式のプログラムに変換する
構文解析手段111と、構文解析手段111によって変
換された中間形式のプログラムに対して最適化を行い、
効率の良い中間形式のプログラムに変換する最適化手段
112と、レジスタの一部を特定のマスク命令専用に確
保するか否かを指定する利用者の指示を入力するコード
生成方式選択手段113と、コード生成時に割り付け可
能なレジスタの一部を特定のマスク命令専用に確保する
マスク値専用レジスタ確保手段114と、マスク値専用
レジスタ確保手段114が確保した以外のレジスタを変
数や定数に割り付けるレジスタ割り付け手段115と、
特定のマスク値をオペランドとするマスク命令に対して
はマスク命令用のレジスタをオペランドとして使用して
コード生成を行うコード生成手段116と、目的プログ
ラムの先頭に、確保された専用のレジスタにマスク値を
格納する命令を挿入するマスク値設定命令挿入手段11
7とを含んで構成されている。
【0020】以下に本発明の第一の実施例であるコンパ
イル装置について、図1〜図3を参照して説明する。
【0021】コンパイル装置11が起動されると、まず
構文解析手段111は、原始プログラム21に対して構
文解析処理を行い、中間言語形式に変換する(ステップ
221)。
【0022】最適化手段112は、構文解析手段111
が変換した中間言語形式のプログラムに対して最適化処
理を行う(ステップ222)。
【0023】コード生成方式選択手段113は、レジス
タの一部を特定のマスク命令専用に確保するか否かを指
定する利用者の指示を入力する(ステップ223)。な
おコード生成方式選択手段113によるステップ223
の処理は、コンパイル装置11の起動からステップ22
2終了時点までの間の任意の時点で行うことができる。
【0024】コード生成方式選択手段113がレジスタ
の一部を特定のマスク命令専用に確保する旨指定する利
用者の指示を入力した場合、マスク値専用レジスタ確保
手段114は、レジスタ割り付け手段115によるレジ
スタ割り付け処理の前に、割り付けに使用されるレジス
タの一部を、特定のマスク命令のために確保する(ステ
ップ224)。マスク値は、コンパイラが予め規定した
値か、または利用者が指定した値とする。
【0025】レジスタ割り付け手段115は、マスク値
専用レジスタ確保手段114によるステップ224終了
後、マスク値専用レジスタ確保手段114が確保した以
外のレジスタを変数や定数に割り付ける(ステップ22
5)。
【0026】コード生成手段116は、上述したマスク
値を使用するマスク命令に対しては、マスク値の代わり
に、確保されたレジスタをオペランドとして用いてコー
ド生成を行い(ステップ226)、その他の命令につい
ては、通常の方法でコード生成を行う(ステップ22
8)。
【0027】最後に、マスク値設定命令挿入手段117
は、コード生成手段116によるステップ226終了
後、生成された目的プログラムの先頭、すなわち最初に
実行される部分に、確保されたレジスタにマスク値を設
定する命令を挿入し(ステップ227)、目的プログラ
ム24が生成される。
【0028】なお、コード生成方式選択手段113がス
テップ223において、レジスタの一部を特定のマスク
命令専用に確保しない旨指定する利用者の指示を入力し
た場合には、レジスタ割り付け手段115によるステッ
プ225とコード生成処理228により、通常の目的プ
ログラム24が生成される。
【0029】図3は、コンパイル装置11により生成さ
れた目的プログラム24のコードの例を示す図である。
レジスタの一部を特定のマスク値専用に確保した場合の
目的プログラム24のコード31と確保しない場合の目
的プログラム24のコード32を対比させて説明する。
【0030】図3のコードが動作するターゲットのハー
ドウェアは、レジスタの幅が32ビットで、演算を行う
際のオペランドはレジスタに限られており、メモリ上の
値あるいは定数は一旦レジスタに格納してから使用す
る、また、メモリからレジスタへの8ビット幅および1
6ビット幅のロード命令が存在するという特徴を持つも
のとする。
【0031】コード311、322はメモリ上の8ビッ
ト幅の変数aの値をロードする場合の一連の操作を、コ
ード312、323はメモリ上の16ビット幅の変数b
の値をロードする場合の一連の操作を示すものとする。
【0032】変数aの値のロードは、レジスタの一部を
特定のマスク値専用に確保しない場合のコード311で
は、8ビットの値をaのメモリ位置からレジスタrxに
ロードする命令3111と、8ビット以外を無効にする
ためのマスク値0xffをレジスタrtに格納する命令
3112と、マスク命令3113とによって実行され
る。
【0033】レジスタの一部を特定のマスク値専用に確
保した場合のコード322では、8ビットの値をaのメ
モリ位置からレジスタrxにロードする命令3221
と、8ビットのマスク値専用のレジスタrmask1を
用いたマスク命令3222とによって実行される。
【0034】同様に、変数bの値のロードは、レジスタ
の一部を特定のマスク値専用に確保しない場合のコード
312では、16ビットの値をaのメモリ位置からレジ
スタrxにロードする命令3121と、8ビット以外を
無効にするためのマスク値0xffffをレジスタrt
に格納する命令3122と、マスク命令3123とによ
って実行される。
【0035】レジスタの一部を特定のマスク値専用に確
保した場合のコード323では、16ビットの値をbの
メモリ位置からレジスタrxにロードする命令3231
と、16ビットのマスク値専用のレジスタrmask2
を用いたマスク命令3232とによって実行される。
【0036】また、レジスタの一部を特定のマスク値専
用に確保した場合には、プログラムの先頭にマスク値0
xffをレジスタrmask1へ格納する命令3211
およびマスク値0xffffをレジスタrmask2へ
格納する命令3212を含むコード321が挿入され
る。
【0037】以上により、本発明の第一の実施例である
コンパイル装置の処理が完了する。
【0038】本発明の第一の実施例であるコンパイル装
置の特徴は、マスク値専用レジスタ確保手段114が特
定のマスク命令に対してレジスタの一つを専用に確保
し、レジスタ割り付け手段115がマスク命令用のレジ
スタ以外のレジスタに変数および定数を割り付け、コー
ド生成手段116がマスク値を使用するマスク命令に対
しては、マスク命令用のレジスタをオペランドとしてコ
ード生成を行い、その他の命令に対しては通常の方法で
コード生成を行い、マスク値設定命令挿入手段117が
生成された目的プログラムの先頭にマスク命令用のレジ
スタへマスク値を設定する命令を挿入するようにしたこ
とにあり、同一のマスク値が多く使用されることが予測
可能な原始プログラムから変換される目的プログラムに
ついては、マスク命令の実行を減らすことができるので
サイズの小さな目的プログラムを生成することができる
効果を有している。
【0039】本発明の他の実施例であるコンパイラは、
原始プログラムを入力して文法誤りのチェックおよび構
造の解析を行い、最適化およびレジスタ割り付けを行う
ための中間形式のプログラムに変換する構文解析ステッ
プと、構文解析ステップによって変換された中間形式の
プログラムに対して各種の最適化を行い、効率の良い中
間形式のプログラムに変換する最適化ステップと、レジ
スタの一部を特定のマスク命令専用に確保するか否かを
指定する利用者の指示を入力するコード生成方式選択ス
テップと、コード生成時に割り付け可能なレジスタの一
部を特定のマスク命令専用に確保するマスク値専用レジ
スタ確保ステップと、マスク値専用レジスタ確保ステッ
プが確保した以外のレジスタを変数や定数に割り付ける
レジスタ割り付けステップと、特定のマスク値をオペラ
ンドとするマスク命令に対してはマスク命令用のレジス
タをオペランドとして使用してコード生成を行うコード
生成ステップと、目的プログラムの先頭に、確保された
専用のレジスタにマスク値を格納する命令を挿入するマ
スク値設定命令挿入ステップとを含み、上述した一実施
例であるコンパイル装置と同等の処理を行う。
【0040】なおこのコンパイラは、メモリ、ディス
ク、フロッピーディスク、およびCD−ROM等の記憶
媒体に記憶することができる。
【0041】
【発明の効果】以上説明したように、本発明のコンパイ
ル装置およびコンパイラは、同一のマスク値が多く使用
されることが予測可能な原始プログラムから変換される
目的プログラムについては、マスク命令の実行を減らす
ことができるのでサイズの小さな実行効率の良い目的プ
ログラムを生成することができる効果を有している。
【図面の簡単な説明】
【図1】本発明の一実施例におけるブロック図である。
【図2】本発明の一実施例における構文解析手段11
1、最適化手段112、コード生成方式選択手段11
3、マスク値専用レジスタ確保手段114、レジスタ割
り付け手段115、コード生成手段116、マスク値設
定命令挿入手段117の処理を示す流れ図である。
【図3】本発明の一実施例においてコンパイル装置11
により生成された目的プログラム24のコードの例を示
す図である。
【符号の説明】
11 コンパイル装置 21 原始プログラム 24 目的プログラム 31 目的プログラムのコード 32 目的プログラムのコード 111 構文解析手段 112 最適化手段 113 コード生成方式選択手段 114 マスク値専用レジスタ確保手段 115 レジスタ割り付け手段 116 コード生成手段 117 マスク値設定命令挿入手段

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 原始プログラムを翻訳して目的プログラ
    ムを生成するコンパイル装置であって、 前記原始プログラムを入力して構文解析処理と最適化処
    理を行い、中間言語形式のプログラムに変換する構文解
    析手段と、 前記中間言語形式のプログラム中のマスク命令に使用す
    るためのレジスタを確保するマスク値専用レジスタ確保
    手段と、 前記中間言語形式のプログラムをコード化する際に、前
    記中間言語形式のプログラム中のマスク命令については
    前記マスク値専用レジスタ確保手段が確保したレジスタ
    をオペランドとしたコードを生成するコード生成手段
    と、 前記コード生成手段が生成したコード群の先頭に、前記
    マスク値専用レジスタ確保手段が確保したレジスタにマ
    スク値を設定する命令を挿入して、前記目的プログラム
    とするマスク値設定命令挿入手段とを備えたことを特徴
    とするコンパイル装置。
  2. 【請求項2】 原始プログラムを翻訳して目的プログラ
    ムを生成するコンパイル装置であって、 前記原始プログラムを入力して構文解析処理と最適化処
    理を行い、中間言語形式のプログラムに変換する構文解
    析手段と、 前記中間言語形式のプログラム中のマスク命令に使用す
    るためのレジスタを専用に確保する旨の利用者の指示に
    応じて、該レジスタを確保するマスク値専用レジスタ確
    保手段と、 前記中間言語形式のプログラムをコード化する際に、前
    記中間言語形式のプログラム中のマスク命令については
    前記マスク値専用レジスタ確保手段が確保したレジスタ
    をオペランドとしたコードを生成するとともに、他の命
    令については該中間言語形式のプログラム中の変数およ
    び定数データを前記マスク値専用レジスタ確保手段が確
    保した以外のレジスタに割り付けコードを生成するコー
    ド生成手段と、 前記コード生成手段が生成したコード群の先頭に、前記
    マスク値専用レジスタ確保手段が確保したレジスタにマ
    スク値を設定する命令を挿入して、前記目的プログラム
    とするマスク値設定命令挿入手段とを備えたことを特徴
    とするコンパイル装置。
  3. 【請求項3】 原始プログラムを翻訳して目的プログラ
    ムを生成するコンパイル装置であって、 前記原始プログラムを入力して構文解析処理を行い、該
    原始プログラムを中間言語形式のプログラムに変換する
    構文解析手段と、 前記構文解析手段により生成された中間言語形式のプロ
    グラムに対して最適化処理を行う最適化手段と、 前記最適化手段が最適化した前記中間言語形式のプログ
    ラム中のマスク命令に使用するためのレジスタを専用に
    確保するか否かを示す利用者の指示を入力するコード生
    成方式選択手段と、 前記コード生成方式選択手段がマスク命令に使用するた
    めのレジスタを専用に確保する旨の指示を入力した場合
    に、該レジスタを確保するマスク値専用レジスタ確保手
    段と、 前記最適化手段が最適化した前記中間言語形式のプログ
    ラム中の変数および定数データをレジスタに割り付ける
    際に、前記マスク値専用レジスタ確保手段によりマスク
    命令に使用するためのレジスタが確保されている場合に
    は、該マスク値専用レジスタ確保手段が確保した以外の
    レジスタに該変数および定数データを割り付けるレジス
    タ割り付け手段と、 前記最適化手段が最適化した前記中間言語形式のプログ
    ラム中のマスク命令については前記マスク値専用レジス
    タ確保手段が確保したレジスタをオペランドとしたコー
    ドを生成し、他の命令については前記マスク値専用レジ
    スタ確保手段が確保した以外のレジスタを使用してコー
    ドを生成するコード生成手段と、 前記コード生成手段が生成したコード群の先頭に、前記
    マスク値専用レジスタ確保手段が確保したレジスタにマ
    スク値を設定する命令を挿入して、前記目的プログラム
    とするマスク値設定命令挿入手段とを備えたことを特徴
    とするコンパイル装置。
  4. 【請求項4】 原始プログラムを翻訳して目的プログラ
    ムを生成するコンパイラであって、 前記原始プログラムを入力して構文解析処理と最適化処
    理を行い、中間言語形式のプログラムに変換する構文解
    析ステップと、 前記中間言語形式のプログラム中のマスク命令に使用す
    るためのレジスタを確保するマスク値専用レジスタ確保
    ステップと、 前記中間言語形式のプログラムをコード化する際に、前
    記中間言語形式のプログラム中のマスク命令については
    前記マスク値専用レジスタ確保ステップで確保したレジ
    スタをオペランドとしたコードを生成するコード生成ス
    テップと、 前記コード生成ステップで生成したコード群の先頭に、
    前記マスク値専用レジスタ確保ステップで確保したレジ
    スタにマスク値を設定する命令を挿入して、前記目的プ
    ログラムとするマスク値設定命令挿入ステップとを含む
    ことを特徴とするコンパイラ。
  5. 【請求項5】 原始プログラムを翻訳して目的プログラ
    ムを生成するコンパイラであって、 前記原始プログラムを入力して構文解析処理と最適化処
    理を行い、中間言語形式のプログラムに変換する構文解
    析ステップと、 前記中間言語形式のプログラム中のマスク命令に使用す
    るためのレジスタを専用に確保する旨の利用者の指示に
    応じて、該レジスタを確保するマスク値専用レジスタ確
    保ステップと、 前記中間言語形式のプログラムをコード化する際に、前
    記中間言語形式のプログラム中のマスク命令については
    前記マスク値専用レジスタ確保ステップで確保したレジ
    スタをオペランドとしたコードを生成するとともに、他
    の命令については該中間言語形式のプログラム中の変数
    および定数データを前記マスク値専用レジスタ確保ステ
    ップで確保した以外のレジスタに割り付けコードを生成
    するコード生成ステップと、 前記コード生成ステップで生成したコード群の先頭に、
    前記マスク値専用レジスタ確保ステップで確保したレジ
    スタにマスク値を設定する命令を挿入して、前記目的プ
    ログラムとするマスク値設定命令挿入ステップとを含む
    ことを特徴とするコンパイラ。
  6. 【請求項6】 原始プログラムを翻訳して目的プログラ
    ムを生成するコンパイラであって、 前記原始プログラムを入力して構文解析処理を行い、該
    原始プログラムを中間言語形式のプログラムに変換する
    構文解析ステップと、 前記構文解析ステップで生成された中間言語形式のプロ
    グラムに対して最適化処理を行う最適化ステップと、 前記最適化ステップで最適化した前記中間言語形式のプ
    ログラム中のマスク命令に使用するためのレジスタを専
    用に確保するか否かを示す利用者の指示を入力するコー
    ド生成方式選択ステップと、 前記コード生成方式選択ステップでマスク命令に使用す
    るためのレジスタを専用に確保する旨の指示を入力した
    場合に、該レジスタを確保するマスク値専用レジスタ確
    保ステップと、 前記最適化ステップで最適化した前記中間言語形式のプ
    ログラム中の変数および定数データをレジスタに割り付
    ける際に、前記マスク値専用レジスタ確保ステップでマ
    スク命令に使用するためのレジスタが確保されている場
    合には、該マスク値専用レジスタ確保ステップで確保し
    た以外のレジスタに該変数および定数データを割り付け
    るレジスタ割り付けステップと、 前記最適化ステップで最適化した前記中間言語形式のプ
    ログラム中のマスク命令については前記マスク値専用レ
    ジスタ確保ステップで確保したレジスタをオペランドと
    したコードを生成し、他の命令については前記マスク値
    専用レジスタ確保ステップで確保した以外のレジスタを
    使用してコードを生成するコード生成ステップと、 前記コード生成ステップで生成したコード群の先頭に、
    前記マスク値専用レジスタ確保ステップで確保したレジ
    スタにマスク値を設定する命令を挿入して、前記目的プ
    ログラムとするマスク値設定命令挿入ステップとを含む
    ことを特徴とするコンパイラ。
JP8030914A 1996-02-19 1996-02-19 コンパイル装置およびコンパイル方法 Expired - Lifetime JP2904099B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP8030914A JP2904099B2 (ja) 1996-02-19 1996-02-19 コンパイル装置およびコンパイル方法
US08/802,045 US6256782B1 (en) 1996-02-19 1997-02-18 Compile apparatus, compile method and computer-readable medium storing compiler
EP97102666A EP0790555B1 (en) 1996-02-19 1997-02-19 Compile apparatus and method
DE69731574T DE69731574T2 (de) 1996-02-19 1997-02-19 Kompiliergerät und -verfahren

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8030914A JP2904099B2 (ja) 1996-02-19 1996-02-19 コンパイル装置およびコンパイル方法

Publications (2)

Publication Number Publication Date
JPH09223023A true JPH09223023A (ja) 1997-08-26
JP2904099B2 JP2904099B2 (ja) 1999-06-14

Family

ID=12316975

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8030914A Expired - Lifetime JP2904099B2 (ja) 1996-02-19 1996-02-19 コンパイル装置およびコンパイル方法

Country Status (4)

Country Link
US (1) US6256782B1 (ja)
EP (1) EP0790555B1 (ja)
JP (1) JP2904099B2 (ja)
DE (1) DE69731574T2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529907B2 (en) * 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US8832672B2 (en) 2011-01-28 2014-09-09 International Business Machines Corporation Ensuring register availability for dynamic binary optimization
US9400650B2 (en) * 2012-09-28 2016-07-26 Intel Corporation Read and write masks update instruction for vectorization of recursive computations over interdependent data
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9778932B2 (en) * 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US5212778A (en) * 1988-05-27 1993-05-18 Massachusetts Institute Of Technology Message-driven processor in a concurrent computer
JPH01305434A (ja) 1988-06-02 1989-12-08 Nec Corp コンパイラのレジスタ使用方式
JPH0281230A (ja) * 1988-09-19 1990-03-22 Hitachi Ltd 構文解析および言語処理システム
US5095432A (en) * 1989-07-10 1992-03-10 Harris Corporation Data processing system implemented process and compiling technique for performing context-free parsing algorithm based on register vector grammar
US5428793A (en) 1989-11-13 1995-06-27 Hewlett-Packard Company Method and apparatus for compiling computer programs with interproceduural register allocation
US5488714A (en) * 1990-05-23 1996-01-30 Unisys Corporation Computer program analyzer for adapting computer programs to different architectures
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
GB9402470D0 (en) * 1994-02-09 1994-03-30 Texas Instruments Ltd Improvements in or relating to mask generation
JP3242278B2 (ja) * 1995-03-24 2001-12-25 東芝テック株式会社 画像処理装置
US5956479A (en) * 1995-11-13 1999-09-21 Object Technology Licensing Corporation Demand based generation of symbolic information
US5956511A (en) * 1996-03-29 1999-09-21 Kabushiki Kaisha Toshiba Program development support apparatus, program development support method, and storage medium therefor
US6041181A (en) * 1997-07-23 2000-03-21 International Business Machines Corporation Method of, system for, and computer program product for providing quick fusion in WHERE constructs
US6141374A (en) * 1998-10-14 2000-10-31 Lucent Technologies Inc. Method and apparatus for generating multiple matched-filter PN vectors in a CDMA demodulator

Also Published As

Publication number Publication date
US6256782B1 (en) 2001-07-03
DE69731574T2 (de) 2006-03-23
DE69731574D1 (de) 2004-12-23
EP0790555A3 (en) 2000-05-24
EP0790555A2 (en) 1997-08-20
EP0790555B1 (en) 2004-11-17
JP2904099B2 (ja) 1999-06-14

Similar Documents

Publication Publication Date Title
US6023583A (en) Optimized variable allocation method, optimized variable allocation system and computer-readable memory containing an optimized variable allocation program
US5701487A (en) Method and apparatus for displaying locations of errors detected inside software macro calls
US5606697A (en) Compiler system for language processing program
US5956510A (en) Apparatus and method for revising computer program code
US6345384B1 (en) Optimized program code generator, a method for compiling a source text and a computer-readable medium for a processor capable of operating with a plurality of instruction sets
JP2005216177A (ja) コンフィグラブル・プロセッサの設計装置、設計方法、ライブラリの最適化方法、プロセッサ、及びプロセッサを備えた半導体装置の製造方法
US5964861A (en) Method for writing a program to control processors using any instructions selected from original instructions and defining the instructions used as a new instruction set
US20040194071A1 (en) Compiling device, computer-readable recording medium on which a compiling program is recorded and a compiling method
JP2904099B2 (ja) コンパイル装置およびコンパイル方法
EP0947922B1 (en) Compiler
US6014519A (en) Language processing unit and a language processing method to translate a source program and generate an object module file
US20010039653A1 (en) Program conversion method, program conversion apparatus, storage medium for storing program conversion program and program conversion program
US5815716A (en) Method for supporting multiple call interface conventions for computer programs using directives
KR20060035077A (ko) 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법
JPH01118931A (ja) プログラム変換方式
US6973645B2 (en) Compiler, operation processing system and operation processing method
EP0626640A1 (en) Program translator with selective data value amendment and processor with data extension instructions
JP3264901B2 (ja) コンパイル装置及びコンパイル方法
JP2003256215A (ja) プログラム変換方法、これを用いたデータ処理装置及びプログラム
JP3327674B2 (ja) プログラム翻訳装置及び方法
US6934892B2 (en) Computing system construction method under execution environment to be dependent on OS
JP3464019B2 (ja) レジスタの割付方式
Nonaka et al. Design and implementation of superinstructions for JavaScript virtual machine generation system for embedded systems eJSTK
JP2801193B2 (ja) インダクション変数のベクトル化処理装置
JP2000339171A (ja) コンパイル装置、方法及び記録媒体

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19990223

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

Free format text: PAYMENT UNTIL: 20080326

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20090326

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20100326

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20100326

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20110326

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20110326

Year of fee payment: 12

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20110326

Year of fee payment: 12

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20110326

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20120326

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20130326

Year of fee payment: 14