JPH1196001A - プログラム実行装置及びプログラム変換方法 - Google Patents
プログラム実行装置及びプログラム変換方法Info
- Publication number
- JPH1196001A JPH1196001A JP9256313A JP25631397A JPH1196001A JP H1196001 A JPH1196001 A JP H1196001A JP 9256313 A JP9256313 A JP 9256313A JP 25631397 A JP25631397 A JP 25631397A JP H1196001 A JPH1196001 A JP H1196001A
- Authority
- JP
- Japan
- Prior art keywords
- flag
- instruction
- program
- arithmetic
- arithmetic processing
- 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
Links
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
ム実行装置で実行できる形式に変換するコンパイラが最
適化を行う際に、フラグ操作を伴う命令列に関する処理
を容易にする。 【解決手段】 プログラム実行装置の演算実行手段とし
て、ALU40と論理積演算部42という複数の演算回
路を設ける。これらは並列に動作し、それぞれ演算結果
に基づいて互いにフラグ群46中の異なるフラグを操作
する。この装置で実行されるプログラムとして、大小比
較命令とビットテスト命令に対し、共通の演算処理命令
を生成し、一方、その結果に応じた分岐を行う分岐命令
には、互いに異なるフラグパターンを検知するものが生
成される。複数のフラグ操作命令に対して演算処理命令
を統合することにより、コンパイラにおける演算処理命
令判別処理が容易となる。
Description
られるフラグを有したプログラム実行装置及びその装置
において実行可能な機械語に対応する命令を生成するプ
ログラム変換方法に関する。
置」とは、マイクロプロセッサなど、実行可能なデータ
形式に変換されたプログラム(すなわち機械語で表現さ
れた命令など)を実行してデータを処理する装置をい
う。マイクロプロセッサがその代表であるが、この装置
は必ずしも単一の素子である必要はない。
って理解が容易な文法を有した「C」、「Fortra
n」といった高級プログラミング言語から、プログラム
実行装置で実行可能なデータ形式に対応した命令列で記
述されたプログラムにプログラムを変換する方法をい
う。以降、変換前の高級プログラミング言語で記述され
たプログラムをソースプログラム、変換後のプログラム
をアセンブラプログラムと呼ぶ。また高級プログラミン
グ言語を記述する命令を高級命令とよぶ。これに対し、
低級命令とは、コンパイラが高級命令を解読して生成す
るもので、一般にはアセンブラ命令を指す。
のブロック構成図である。通常、高級命令プログラムは
コンパイラによってアセンブラ言語に翻訳され、アセン
ブラ言語はアセンブラによって機械語に翻訳される。メ
モリ4はこの機械語を格納しうる。アセンブラ命令はニ
ーモニックコードと呼ばれる記号で表記されている。こ
のニーモニックコードは、命令の機能(オペレーショ
ン)を理解しやすいように定められる。例えば、加算命
令には「add」、比較命令には「comp」、ビット
テスト命令には「tst」、分岐命令には「br」とい
う記号が割り当てられる。1命令は、これらオペレーシ
ョンを表す記号に通常1または2個のオペランドが付加
されて構成される。この機械語の命令は基本的にこのア
センブラ命令に一対一に対応して生成される。命令フェ
ッチ部2は、メモリ4に格納されたバイナリ形式の機械
語で表現されたプログラムを構成する命令を順次フェッ
チするフェッチ手段である。
送られる。命令デコード部6はその命令のバイナリ形式
に応じて、レジスタ群8、算術論理演算部(ALU:Ar
ithmetic Logic Unit)10、データアクセス部12、
フラグ14の動作を制御する。例えば、命令にレジスタ
番号が指定されている場合には、レジスタ群8中の指定
されたレジスタから値が読み出されてALU10に送ら
れたり、逆に指定されたレジスタに値が格納されたりす
る。ALU10は、命令コードに応じた演算を行い、そ
の演算結果は、データアクセス部12を介してレジスタ
群8やメモリ4に格納される。また、ALU10におい
てフラグに値を設定する処理が行われると、その値によ
ってフラグ14の値が更新される。
ラムからアセンブラプログラムへの変換を行う。コンパ
イラは高級言語の各命令を解釈して、それぞれの機能を
通常複数の低級命令に分解する。また、コンパイラは、
このように生成されたアセンブラプログラムを、より高
速な実行が可能なように最適化を行うこともできる。
の順序を入れ替えることにより行われる。このとき、コ
ンパイラは命令順序の交換によってプログラムの処理結
果が変化しないように、命令順序の依存関係の有無を考
慮する。例えば、コンパイラは2つのレジスタ“reg
0”、“reg1”それぞれの内容“R0”、“R1”
を比較し、R1=R0のときプログラム上の所定箇所
“LABEL1”に分岐するという処理を行う命令列と
して以下のようなものを生成する。
定の大小関係が満たされたときフラグTに1を設定す
る。そして、次の命令 “br”はフラグTが1のとき
指定された分岐先“LABEL1”に分岐する。このよ
うな2つの命令の順序を交換することはできない。ま
た、それらの間に他の命令、または命令列を挿入するこ
とは、その命令列がフラグTの値を変化させる可能性が
あるので避けるべきである。同様に依存関係を有する命
令列の他の例をいくつか示す。
である。また別の例は、 comp/gt reg0,reg1 br LABEL1 という命令列である。これは、R1>R0のときLAB
EL1に分岐するものである。これらは上記例と同様、
R1とR0の所定の大小関係が満たされたときに、フラ
グTに1を設定する。
つのレジスタ“reg0”、“reg1”それぞれの内
容“R0”、“R1”の論理積を演算し、その結果が0
のとき、フラグTに1を設定する。そして、命令“b
r”は上述したようにフラグTをみてその値が1のとき
指定された分岐先“LABEL1”に分岐する。この場
合も2つの命令の順序に依存関係がある。ちなみに、命
令“tst”は、検査対象数値の所定のビットが0か1
かを判定するビットテストを行うものである。つまり、
R1を検査対象の数値とするとき、R0には判定したい
所定のビット位置が1である数値を指定する。論理和の
結果が0でないならば、R1の上記所定のビットは1で
あり、逆に論理和の結果が0ならばR1の上記所定のビ
ットは0であることが判明する。
グラム中の命令が、“comp/eq”、“comp/
ge”、“comp/gt”、“tst”といったフラ
グ操作を伴うものであり、命令順序に依存関係を有する
ものであるか否かを逐一判断しながら最適化処理を進め
ていく。
装置では、演算処理はALUにおいて行われる。ここで
例えば“comp”と“tst”といった異なる種類の
演算処理に対しては、ALUがその種類を区別できる必
要があるため、異なる命令名(命令コード)を割り当て
なければならない。これに応じて、上述のようにフラグ
操作を伴い命令順序に依存関係を生じる命令に多くの種
類が存在する。このため、コンパイラで用いられるプロ
グラム変換方法において、命令順序に依存関係を有する
命令か否かの判断が複雑となる問題点があった。また、
一つのフラグを複数種類の命令で用いるということは、
命令順序の依存関係に対する制約が厳しくなるという問
題や、アセンブラによるプログラミングの生産性の低下
やアセンブラプログラムの可読性の低下という問題を招
いていた。
れたもので、コンパイラの処理を容易とし、またアセン
ブラによるプログラミングやアセンブラプログラムの読
解を容易とするプログラム実行装置及びプログラム変換
方法を提供することを目的とする。
グラム実行装置は、複数種類のフラグを保持するフラグ
保持手段を有し、演算実行手段が、フラグを変化させる
複数種類の所定の演算処理を、入力された被演算データ
を共通に用いてそれぞれ行い、当該各演算処理ごとに互
いに別個の前記フラグに対し当該演算処理の結果に応じ
て操作を行うことを特徴とする。
演算処理を1つの、つまり1種類の命令で行うことがで
きる。すなわち演算実行手段は、1つの命令に従って1
つ又は1組の被演算データが入力されると、フラグを変
化させる複数種類の演算処理が行われる。これら演算処
理は、演算実行手段に入力された1つ又は1組の被演算
データを共通に用いて別個に行われる。また、これら各
演算処理は、互いに異なるフラグを用いる。よって、フ
ラグ保持手段には、入力された被演算データに対してこ
こで行われるすべての演算処理のフラグ操作結果が保持
される。つまり、演算処理が実行された後において、実
行された任意の演算処理に対応するフラグ操作結果を知
ることができる。
装置は、前記演算実行手段が、互いに共通の前記被演算
データを入力されそれぞれ所定の前記演算処理を互いに
並列して行い、互いに別個の前記フラグに対し当該演算
処理の結果に応じて操作を行う複数の演算回路を含むも
のである。
演算処理に対してそれぞれ演算回路が設けられ、これら
が並列に動作して、入力された被演算データをそれぞれ
演算処理する。
路として算術論理演算回路と論理積回路とを含むもので
ある。算術論理演算回路は、例えば、入力された2つの
データの大小比較を行うことができる。例えばその大小
比較は2つのデータの差を求め、大小比較結果はその差
の正負又は0か非零に応じてフラグを設定することによ
り保持される。一方、論理積回路は入力された2つのデ
ータの論理積を求めることができる。そしてその結果は
例えばそれが0か非零かに応じて、算術論理演算回路で
用いるのとは別のフラグを設定することにより保持され
る。
は、高級プログラミング言語に基づく高級命令で記述さ
れたプログラムを、上記第2のプログラム実行装置にて
実行可能な機械語に対応する低級命令列に変換するプロ
グラム変換方法であって、所定の演算処理を行いさらに
その結果に応じて前記フラグに値を設定してなる当該フ
ラグに基づいたフラグ依存処理を行うためのフラグ利用
高級命令を、前記演算実行手段に前記被演算データを入
力し前記各演算回路にそれぞれ演算処理を行わせ前記フ
ラグを設定する演算処理命令と、複数の前記演算回路の
うち当該フラグ利用高級命令について定義された前記演
算処理を実行する前記演算回路によって操作される前記
フラグを用いて前記フラグ依存処理を行うフラグ依存処
理命令とを含む前記低級命令列に変換することを特徴と
する。
動作を指示する命令であり、例えばアセンブラ命令のよ
うなものである。フラグ依存処理とは、所定のフラグの
値に応じて異なる動作をするものであり、例えば、フラ
グに所定の値が設定されている場合にのみ指定分岐先に
処理を移行するといったものである。本発明によれば、
演算処理命令は、複数設けられた演算回路によって並列
に実行される。これら演算回路はそれぞれ互いに異なる
フラグに対し値の設定を行う。フラグ依存処理命令は、
元のフラグ利用高級命令が意図したフラグの値を参照す
るものが生成される。つまり本発明によれば、各フラグ
ごとにその役割が異なり、プログラム上では、その役割
はフラグ依存命令の違いによって容易に区別される。
は、上記第1のプログラム変換方法において、それぞれ
定義された前記演算処理が互いに異なる複数の前記フラ
グ利用高級命令に対して、それぞれの前記演算処理命令
として共通の命令コードを生成するというものである。
のフラグ利用高級命令が意図したフラグの値を参照する
ものが生成される。つまり本発明によれば、各フラグ利
用高級命令の動作は、それぞれに対応するフラグを参照
し、それに基づいて所定のフラグ依存処理を行う部分で
は互いに異なるが、演算回路を用いて演算処理を行う部
分では、いずれもすべての演算回路にて並列に演算処理
を行うという点で互いに共通である。よって本発明では
演算処理命令として、異なるフラグ利用高級命令相互で
共通の命令コードを用いる。
利用高級命令として、前記演算処理が2つの前記被演算
データの大小関係を求め、当該大小関係に応じて前記フ
ラグを設定する処理であり、前記フラグ依存処理が当該
フラグの値に応じて前記プログラムの所定のアドレスに
分岐する処理である大小比較分岐命令と、前記演算処理
が2つの前記被演算データの論理積を求め、当該論理積
が0か非零かに応じて前記フラグを設定する処理であ
り、前記フラグ依存処理が当該フラグの値に応じて前記
プログラムの所定のアドレスに分岐する処理であるビッ
トパターン比較分岐命令とを含むものである。
図面を参照して説明する。図1は、本発明の実施形態で
あるプログラム実行装置の概略のブロック構成図であ
る。命令フェッチ部32は、アセンブラプログラムの各
命令に対応して生成されメモリ34に格納された機械語
命令を順次フェッチするフェッチ手段である。
に送られる。命令デコード部36はその命令のバイナリ
形式に応じて、レジスタ群38、ALU40、論理積演
算部(論理積回路)42、データアクセス部44、フラ
グ群46(フラグ保持手段)の動作を制御する。例え
ば、命令にレジスタ番号が指定されている場合には、レ
ジスタ群38中の指定されたレジスタから値が読み出さ
れてALU40及び論理積演算部42に送られたり、逆
に指定されたレジスタに値が格納されたりする。一方、
命令のオペランドに即値が指定されている場合には、そ
の値を用いてALU40及び論理積演算部42での演算
が行われる。
段としてALU40と論理積演算部42という2つの異
なる演算回路の並列構成をとる点である。つまり、演算
実行手段に入力されるレジスタからの値、又は即値は、
ALU40と論理積演算部42に並列に入力される。
ードに応じた演算を行い、その演算結果は、データアク
セス部44を介してレジスタ群38やメモリ34に格納
される。また、ALU40において所定のフラグに値を
設定する処理が行われると、その値によってフラグ群4
6中の当該所定のフラグの値が更新される。
8中の指定されたレジスタから読み出された値や命令語
に指定された即値などの2つのデータを入力され、それ
ら2つのデータの論理積を求める。本装置では論理積演
算部42には2つのデータが入力され、その一つをマス
クデータとして用い、もう一方の入力データである被検
査データがそのマスクデータに合致したビットパターン
を有するか否かを検査するビットテストに用いられる。
なお、マスクデータは検査対象とする所定の1又は複数
のビットだけが“1”であり、このマスクデータの
“1”であるビット位置を「関心ビット」と呼ぶことに
する。論理積演算部42は例えばAND回路を含んで、
被検査データとマスクデータとの論理積を求め、それが
0に等しいときフラグ群46中のフラグTを“1”にセ
ットし、論理積が0とならないとき、フラグTをリセッ
トする、つまり“0”とする。これにより、被検査デー
タの関心ビットのいずれかが“1”である場合には、フ
ラグT=0、一方関心ビットのすべてが“0”である場
合にフラグT=1が設定される。
ットのすべてが“1”であるかどうかを検査する構成も
可能である。その場合には、例えば、論理積演算部42
は、入力されたマスクデータと被検査データとで対応す
るビット同士の論理積を求めるAND回路と、AND回
路から出力された論理積とマスクデータとで対応するビ
ット同士の排他的論理和を求めるXOR回路とを含んで
構成される。この構成では、まずAND回路は、被検査
データのビットのうち関心ビットのみをそのまま残し、
他のビットを“0”とした値を出力する。この値とマス
クデータとの排他的論理和は、被検査データの関心ビッ
トがすべて“1”である場合にのみ、すべての桁が
“0”となる。そして、例えばXOR回路の出力が0の
場合にフラグT=0、一方、XOR回路の出力が非零の
場合にフラグT=1に設定する。
えばZ、N、V、Cといったフラグが含まれるが、論理
積演算部42はフラグTしか操作しない。一方、ALU
40はフラグTを操作することはなく、残りのフラグ
Z、N、V、Cだけを操作する。なお、フラグTは上述
したようにビットテストの結果を表すもので、ここでは
テスト・フラグと呼ぶものである。また、フラグZはゼ
ロ・フラグと称するものであり、ALU40での演算処
理結果が0であれば“1”が設定され、非零の場合、
“0”にリセットされる。フラグNはネガティブ・フラ
グと称するものであり、ALU40での演算処理結果が
負であれば“1”が設定され、正又は0であれば“0”
にリセットされる。フラグVはオーバーフロー・フラグ
と称するものであり、ALU40での演算処理により符
号ビットへのオーバーフローが生じたときに“1”が設
定され、符号ビットへのオーバーフローが生じなければ
“0”にリセットされる。またフラグCはキャリー・フ
ラグと称するものであり、ALU40での演算処理によ
りキャリーが発生したときに“1”が設定され、キャリ
ーが発生しない場合には“0”にリセットされる。
令に対応して生成された機械語に対して、その本来の演
算処理がALU40にて行われるばかりでなく、その命
令に指定される2つのオペランドに対する論理積演算が
論理積演算部42にて並列に行われる。論理積演算部4
2がその結果の保持に用いるフラグTは、ALU40で
用いられるフラグと異なるものであるので、ALU40
の演算結果と論理積演算部42の演算結果とが互いに干
渉しあうことはない。よって、プログラムにおいて、こ
れら2つの演算回路から結果のいずれか又は両方を任意
に選択して利用することができる。
て複数の異なる種類の演算回路を設け、各演算処理を並
列に行う構成としたが、ALU40のみで、同一の入力
データに対し複数の異なる演算処理、例えば上述の例に
即して述べれば、フラグTの操作を伴う論理積演算と、
その他のフラグの操作を伴う他の種類の演算とを順次行
う構成とすることもできる。この場合も、それぞれの演
算結果によるフラグの値は異なる演算処理間で干渉する
ことがない。また、上述の構成では、演算回路はALU
40と論理積演算部42との2種類としたが、互いに異
なるフラグを操作する3つ以上の演算回路を設け、それ
らにより演算処理を並列に行う構成とすることも可能で
ある。もちろん、フラグは上述の定義の5つに限られる
必要はない。
した「C」、「Fortran」といった高級プログラ
ミング言語を変換して、上記本装置にて実行可能な機械
語に対応するアセンブラ命令を生成するプログラム変換
方法を説明する。以下、本方法を採用した実施形態であ
るコンパイラについて説明する。
結果に応じてフラグを操作し、さらにそのフラグの値に
基づいた処理を行うもの(フラグ利用高級命令)が一般
には複数存在する。例えば、2つの値“A”、“B”と
プログラムの行番号やラベルといった分岐先“LABE
L1”とを指定したフラグ利用高級命令として次のよう
なものがある。
ャンプしろ。」これらのうち、(i)〜(vi)は、基本
的にはA、Bの大小関係に応じて分岐するか否かを決定
する大小比較分岐命令である。また(vii)は、ビット
テスト結果の合否に応じて分岐するか否かを決定するビ
ットパターン比較分岐命令である。これら(i)〜(vi
i)の高級命令は、アセンブラに変換するとA、Bに基
づいて所定の演算処理を行いその結果に応じてフラグに
値を設定し、そしてそのフラグの値に基づいて分岐する
か否かを決定するという命令列となる。つまり、一般に
演算回路にA、Bについての演算処理を行わせフラグを
設定する演算処理命令と、フラグの値に依存して分岐を
行うフラグ依存命令である分岐命令とを含んだアセンブ
ラの命令列に変換される。
演算処理命令に対して、同一の命令コード「comp」
を生成する。また、(i)〜(vii)に対して分岐命令
としてそれぞれ「br.gt」、「br.ge」、「b
r.lt」、「br.le」、「br.eq」、「b
r.neq」、「br.t」を生成する。これら分岐命
令は、互いに本発明のプログラム実行装置に設けられた
フラグ群46に設定されるフラグの値の異なるパターン
に対応して分岐を実行する。
されるアセンブラ命令列は、基本的には次のようなもの
である。
mp」命令といずれかの「br」命令との並びに変換さ
れる。
記フラグ利用高級命令に対し本コンパイラが生成したア
センブラ命令がどのように実行されるかを説明する。
令に対して生成される共通の「comp」命令は、AL
U40と論理積演算部42とでそれぞれ演算処理を行わ
れる。ALU40は「comp」命令に対して、その2
つのオペランドA、Bの差“A−B”を求める演算処理
を行い、その結果が、A−B<0であればフラグN=1
とし、A−B=0であればフラグZ=1とする。一方、
このALU40での演算処理と並行して、論理積演算部
42は「comp」命令に対してA、Bの論理積を生成
し、それが0であればフラグT=1とする。このよう
に、「comp」命令が実行されることにより、フラグ
N、Z、Tが設定される可能性がある。
は、それぞれ異なる分岐命令が生成される。命令(i)
に対して生成される「br.gt」は、フラグN=0か
つフラグZ=0の場合に分岐処理を実行する。ここでフ
ラグTの値は参照されない。
e」は、フラグN=0の場合に分岐処理を実行する。こ
こでフラグZ、Tの値は参照されない。
lt」は、フラグN=1かつフラグZ=0の場合に分岐
処理を実行する。ここでフラグTの値は参照されない。
e」は、フラグN=1又はZ=1の場合に分岐処理を実
行する。ここでフラグTの値は参照されない。
q」は、フラグZ=1の場合に分岐処理を実行する。こ
こでフラグN、Tの値は参照されない。
eq」は、フラグZ=0の場合に分岐処理を実行する。
ここでフラグN、Tの値は参照されない。
「br.t」は、フラグT=1の場合に分岐処理を実行
する。ここでフラグN、Zの値は参照されない。
有のフラグパターンを検知して、分岐処理を行う。つま
り、本プログラム実行装置では各演算回路が互いに異な
るフラグを操作する構成としているので、各分岐命令
は、自分が参照するフラグの操作を行うもの以外の演算
回路において行われる「comp」命令の実行内容につ
いては関知する必要がない。
は、フラグ操作を伴う大小比較処理とビットテスト処理
といった各種の高級言語命令に対し、演算処理命令を統
合することができる。コンパイラは、アセンブラプログ
ラムの最適化処理を行う場合、フラグ操作を行う演算処
理命令とそのフラグを用いた分岐命令との間において、
当該フラグを操作する他の命令が挿入されないようにす
る。具体的には、コンパイラは、例えばアセンブラプロ
グラム中の各命令がフラグ操作を行う演算処理命令であ
るか否かを逐一判断し、もしフラグ操作を行う演算処理
命令であれば、それとそれに続く分岐命令とはひとかた
まりにして取り扱い最適化処理を行う。本発明によれ
ば、フラグ操作を行う演算処理命令の種類が減少するの
で、コンパイラにおける上記フラグ操作を行う演算処理
命令の判定処理が簡素化される。
フラグ操作を行う複数種類の演算処理に対応して複数の
フラグを用意し、演算命令の種類に関係なくフラグ操作
を行う複数種類の演算処理がそれぞれ実行される。つま
り、フラグ操作を行う演算処理に対して共通の演算命令
を用いることができる。これにより、コンパイラが行う
アセンブラプログラムの最適化処理における、フラグ操
作を行う演算命令であるか否かを判断する処理が容易と
なり、コンパイラのサイズの縮小及び処理負荷の軽減が
図られるという効果が得られる。また、異なる演算処理
に対しては異なるフラグが操作され、異なる演算処理間
でフラグ操作の干渉が回避されるので、アセンブラによ
るプログラミングやアセンブラプログラムの読解が容易
となるという効果が得られる。
記プログラム実行装置に対応して、フラグ操作を行う演
算処理に対し共通の演算命令を用いたアセンブラプログ
ラムが生成される。これにより、コンパイラが行うアセ
ンブラプログラムの最適化処理における、フラグ操作を
行う演算命令であるか否かを判断する処理が容易とな
り、コンパイラのサイズの縮小及び処理負荷の軽減が図
られるという効果が得られる。また、異なる演算処理に
対しては異なるフラグが操作され、異なる演算処理間で
フラグ操作の干渉が回避されるので、アセンブラによる
プログラミングやアセンブラプログラムの読解が容易と
なるという効果が得られる。
の概略のブロック構成図である。
構成図である。
ード部、38 レジスタ群、40 算術論理演算部(A
LU)、42 論理積演算部、44 データアクセス
部、46 フラグ群。
Claims (6)
- 【請求項1】 命令を順次フェッチするフェッチ手段
と、その命令を解読する解読手段と、解読された命令を
実行する演算実行手段を有するプログラム実行装置にお
いて、 複数種類のフラグを保持するフラグ保持手段を有し、 前記演算実行手段は、 フラグを変化させる複数種類の所定の演算処理を、入力
された被演算データを共通に用いてそれぞれ行い、当該
各演算処理ごとに互いに別個の前記フラグに対し当該演
算処理の結果に応じて操作を行うこと、 を特徴とするプログラム実行装置。 - 【請求項2】 請求項1記載のプログラム実行装置にお
いて、 前記演算実行手段は、 互いに共通の前記被演算データが入力されそれぞれ所定
の前記演算処理を互いに並列して行い、互いに別個の前
記フラグに対し当該演算処理の結果に応じて操作を行う
複数の演算回路を含むこと、 を特徴とするプログラム実行装置。 - 【請求項3】 請求項2記載のプログラム実行装置にお
いて、 前記複数の演算回路として、 算術論理演算回路と、 論理積回路と、 を含むことを特徴とするプログラム実行装置。 - 【請求項4】 高級プログラミング言語に基づく高級命
令で記述されたプログラムを、請求項2記載のプログラ
ム実行装置にて実行可能な機械語に対応する低級命令列
に変換するプログラム変換方法において、 所定の演算処理を行いさらにその結果に応じて前記フラ
グに値を設定してなる当該フラグに基づいたフラグ依存
処理を行うためのフラグ利用高級命令を、前記演算実行
手段に前記被演算データを入力し前記各演算回路にそれ
ぞれ演算処理を行わせ前記フラグを設定する演算処理命
令と、複数の前記演算回路のうち当該フラグ利用高級命
令について定義された前記演算処理を実行する前記演算
回路によって操作される前記フラグを用いて前記フラグ
依存処理を行うフラグ依存処理命令とを含む前記低級命
令列に変換すること、 を特徴とするプログラム変換方法。 - 【請求項5】 請求項4記載のプログラム変換方法にお
いて、 それぞれ定義された前記演算処理が互いに異なる複数の
前記フラグ利用高級命令に対して、それぞれの前記演算
処理命令として共通の命令コードを生成すること、 を特徴とするプログラム変換方法。 - 【請求項6】 請求項4記載のプログラム変換方法にお
いて、 前記複数のフラグ利用高級命令として、 前記演算処理が2つの前記被演算データの大小関係を求
め、当該大小関係に応じて前記フラグを設定する処理で
あり、前記フラグ依存処理が当該フラグの値に応じて前
記プログラムの所定のアドレスに分岐する処理である大
小比較分岐命令と、 前記演算処理が2つの前記被演算データの論理積を求
め、当該論理積が0か非零かに応じて前記フラグを設定
する処理であり、前記フラグ依存処理が当該フラグの値
に応じて前記プログラムの所定のアドレスに分岐する処
理であるビットパターン比較分岐命令と、 を含むことを特徴とするプログラム変換方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25631397A JP3515337B2 (ja) | 1997-09-22 | 1997-09-22 | プログラム実行装置 |
US09/157,811 US6324641B1 (en) | 1997-09-22 | 1998-09-18 | Program executing apparatus and program converting method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25631397A JP3515337B2 (ja) | 1997-09-22 | 1997-09-22 | プログラム実行装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1196001A true JPH1196001A (ja) | 1999-04-09 |
JP3515337B2 JP3515337B2 (ja) | 2004-04-05 |
Family
ID=17290938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25631397A Expired - Fee Related JP3515337B2 (ja) | 1997-09-22 | 1997-09-22 | プログラム実行装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6324641B1 (ja) |
JP (1) | JP3515337B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7114063B1 (en) * | 2000-12-01 | 2006-09-26 | Unisys Corporation | Condition indicator for use by a conditional branch instruction |
US20080222388A1 (en) * | 2007-03-05 | 2008-09-11 | Microsoft Corporation | Simulation of processor status flags |
US20090172348A1 (en) * | 2007-12-26 | 2009-07-02 | Robert Cavin | Methods, apparatus, and instructions for processing vector data |
US20210255861A1 (en) * | 2020-02-07 | 2021-08-19 | Micron Technology, Inc. | Arithmetic logic unit |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0199009A3 (en) * | 1985-02-28 | 1989-05-31 | Kabushiki Kaisha Toshiba | Path coverage measuring system in a programme |
US4947315A (en) * | 1986-12-03 | 1990-08-07 | Finnigan Corporation | System for controlling instrument using a levels data structure and concurrently running compiler task and operator task |
JP2786574B2 (ja) * | 1992-05-06 | 1998-08-13 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 |
EP0626641B1 (en) * | 1993-05-27 | 2003-04-09 | Matsushita Electric Industrial Co., Ltd. | Processor improved in address management |
JP3202497B2 (ja) * | 1994-09-09 | 2001-08-27 | 日本電気株式会社 | 情報処理装置 |
US5896292A (en) * | 1995-06-05 | 1999-04-20 | Canon Kabushiki Kaisha | Automated system for production facility |
US5761524A (en) * | 1996-03-15 | 1998-06-02 | Renditon, Inc. | Method and apparatus for performing and operation multiple times in response to a single instruction |
WO1998006038A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Architectural support for software pipelining of loops |
US5943250A (en) * | 1996-10-21 | 1999-08-24 | Samsung Electronics Co., Ltd. | Parallel multiplier that supports multiple numbers with different bit lengths |
US6012836A (en) * | 1996-12-05 | 2000-01-11 | Hewlett-Packard Company | Method of reducing boolean complements in code generated by a circuit compiler |
-
1997
- 1997-09-22 JP JP25631397A patent/JP3515337B2/ja not_active Expired - Fee Related
-
1998
- 1998-09-18 US US09/157,811 patent/US6324641B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6324641B1 (en) | 2001-11-27 |
JP3515337B2 (ja) | 2004-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2569694B1 (en) | Conditional compare instruction | |
JP3969895B2 (ja) | データ型によるコプロセッサの操作コードの分割 | |
KR100327777B1 (ko) | 다중명령 세트를 이용한 데이터 프로세싱 장치 | |
US5710902A (en) | Instruction dependency chain indentifier | |
US6986025B2 (en) | Conditional execution per lane | |
JP3828677B2 (ja) | レジスタとメモリとの間のデータ転送 | |
CN104899181B (zh) | 用于处理向量操作数的数据处理装置和方法 | |
EP1204918B1 (en) | Conditional instruction execution in a computer | |
EP1267258A2 (en) | Setting up predicates in a processor with multiple data paths | |
US5577256A (en) | Data driven type information processor including a combined program memory and memory for queuing operand data | |
KR101016257B1 (ko) | 프로세서 및 정보 처리 장치 | |
EP0094535B1 (en) | Pipe-line data processing system | |
US7861071B2 (en) | Conditional branch instruction capable of testing a plurality of indicators in a predicate register | |
JPH05150979A (ja) | 即値オペランド拡張方式 | |
GB2352308A (en) | Conditional instruction execution | |
JP2000194557A (ja) | Vliwプロセッサ | |
US6230258B1 (en) | Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions | |
JPH1196001A (ja) | プログラム実行装置及びプログラム変換方法 | |
JP2000207210A (ja) | マイクロプロセッサ | |
US6842852B1 (en) | System and method for controlling conditional branching utilizing a control instruction having a reduced word length | |
JP2000112754A (ja) | データ処理装置 | |
JP2005149297A (ja) | プロセッサおよびそのアセンブラ | |
JPH02148140A (ja) | 情報処理装置における条件分岐制御方式 | |
KR100515039B1 (ko) | 조건부 명령어를 고려한 파이프라인 상태 표시 회로 | |
EP1050797A1 (en) | Execution of instructions in a computer program |
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: 20040106 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040115 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090123 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090123 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100123 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100123 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110123 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |