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
Application number
JP9256313A
Other languages
English (en)
Other versions
JP3515337B2 (ja
Inventor
Kenji Matsumoto
松本  健志
Yasuto Komura
康人 甲村
Hiroki Miura
宏喜 三浦
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.)
Sanyo Electric Co Ltd
Original Assignee
Sanyo Electric Co Ltd
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 Sanyo Electric Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP25631397A priority Critical patent/JP3515337B2/ja
Priority to US09/157,811 priority patent/US6324641B1/en
Publication of JPH1196001A publication Critical patent/JPH1196001A/ja
Application granted granted Critical
Publication of JP3515337B2 publication Critical patent/JP3515337B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag

Abstract

(57)【要約】 【課題】 高級言語で記述されたプログラムをプログラ
ム実行装置で実行できる形式に変換するコンパイラが最
適化を行う際に、フラグ操作を伴う命令列に関する処理
を容易にする。 【解決手段】 プログラム実行装置の演算実行手段とし
て、ALU40と論理積演算部42という複数の演算回
路を設ける。これらは並列に動作し、それぞれ演算結果
に基づいて互いにフラグ群46中の異なるフラグを操作
する。この装置で実行されるプログラムとして、大小比
較命令とビットテスト命令に対し、共通の演算処理命令
を生成し、一方、その結果に応じた分岐を行う分岐命令
には、互いに異なるフラグパターンを検知するものが生
成される。複数のフラグ操作命令に対して演算処理命令
を統合することにより、コンパイラにおける演算処理命
令判別処理が容易となる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、処理の制御に用い
られるフラグを有したプログラム実行装置及びその装置
において実行可能な機械語に対応する命令を生成するプ
ログラム変換方法に関する。
【0002】
【従来の技術】本明細書において「プログラム実行装
置」とは、マイクロプロセッサなど、実行可能なデータ
形式に変換されたプログラム(すなわち機械語で表現さ
れた命令など)を実行してデータを処理する装置をい
う。マイクロプロセッサがその代表であるが、この装置
は必ずしも単一の素子である必要はない。
【0003】一方、プログラム変換方法とは、人間にと
って理解が容易な文法を有した「C」、「Fortra
n」といった高級プログラミング言語から、プログラム
実行装置で実行可能なデータ形式に対応した命令列で記
述されたプログラムにプログラムを変換する方法をい
う。以降、変換前の高級プログラミング言語で記述され
たプログラムをソースプログラム、変換後のプログラム
をアセンブラプログラムと呼ぶ。また高級プログラミン
グ言語を記述する命令を高級命令とよぶ。これに対し、
低級命令とは、コンパイラが高級命令を解読して生成す
るもので、一般にはアセンブラ命令を指す。
【0004】図2は、従来のプログラム実行装置の概略
のブロック構成図である。通常、高級命令プログラムは
コンパイラによってアセンブラ言語に翻訳され、アセン
ブラ言語はアセンブラによって機械語に翻訳される。メ
モリ4はこの機械語を格納しうる。アセンブラ命令はニ
ーモニックコードと呼ばれる記号で表記されている。こ
のニーモニックコードは、命令の機能(オペレーショ
ン)を理解しやすいように定められる。例えば、加算命
令には「add」、比較命令には「comp」、ビット
テスト命令には「tst」、分岐命令には「br」とい
う記号が割り当てられる。1命令は、これらオペレーシ
ョンを表す記号に通常1または2個のオペランドが付加
されて構成される。この機械語の命令は基本的にこのア
センブラ命令に一対一に対応して生成される。命令フェ
ッチ部2は、メモリ4に格納されたバイナリ形式の機械
語で表現されたプログラムを構成する命令を順次フェッ
チするフェッチ手段である。
【0005】フェッチされた命令は命令デコード部6に
送られる。命令デコード部6はその命令のバイナリ形式
に応じて、レジスタ群8、算術論理演算部(ALU:Ar
ithmetic Logic Unit)10、データアクセス部12、
フラグ14の動作を制御する。例えば、命令にレジスタ
番号が指定されている場合には、レジスタ群8中の指定
されたレジスタから値が読み出されてALU10に送ら
れたり、逆に指定されたレジスタに値が格納されたりす
る。ALU10は、命令コードに応じた演算を行い、そ
の演算結果は、データアクセス部12を介してレジスタ
群8やメモリ4に格納される。また、ALU10におい
てフラグに値を設定する処理が行われると、その値によ
ってフラグ14の値が更新される。
【0006】上述したようにコンパイラがソースプログ
ラムからアセンブラプログラムへの変換を行う。コンパ
イラは高級言語の各命令を解釈して、それぞれの機能を
通常複数の低級命令に分解する。また、コンパイラは、
このように生成されたアセンブラプログラムを、より高
速な実行が可能なように最適化を行うこともできる。
【0007】この最適化は、具体的にはアセンブラ命令
の順序を入れ替えることにより行われる。このとき、コ
ンパイラは命令順序の交換によってプログラムの処理結
果が変化しないように、命令順序の依存関係の有無を考
慮する。例えば、コンパイラは2つのレジスタ“reg
0”、“reg1”それぞれの内容“R0”、“R1”
を比較し、R1=R0のときプログラム上の所定箇所
“LABEL1”に分岐するという処理を行う命令列と
して以下のようなものを生成する。
【0008】comp/eq reg0,reg1 br LABEL1 ここで“comp/eq”は上述したR1とR0との所
定の大小関係が満たされたときフラグTに1を設定す
る。そして、次の命令 “br”はフラグTが1のとき
指定された分岐先“LABEL1”に分岐する。このよ
うな2つの命令の順序を交換することはできない。ま
た、それらの間に他の命令、または命令列を挿入するこ
とは、その命令列がフラグTの値を変化させる可能性が
あるので避けるべきである。同様に依存関係を有する命
令列の他の例をいくつか示す。
【0009】comp/ge reg0,reg1 br LABEL1 これは、R1≧R0のときLABEL1に分岐するもの
である。また別の例は、 comp/gt reg0,reg1 br LABEL1 という命令列である。これは、R1>R0のときLAB
EL1に分岐するものである。これらは上記例と同様、
R1とR0の所定の大小関係が満たされたときに、フラ
グTに1を設定する。
【0010】もう一つの例は、 tst reg0,reg1 br LABEL1 という命令列である。オペレーション“tst”は、2
つのレジスタ“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であることが判明する。
【0011】コンパイラは最適化対象のアセンブラプロ
グラム中の命令が、“comp/eq”、“comp/
ge”、“comp/gt”、“tst”といったフラ
グ操作を伴うものであり、命令順序に依存関係を有する
ものであるか否かを逐一判断しながら最適化処理を進め
ていく。
【0012】
【発明が解決しようとする課題】従来のプログラム実行
装置では、演算処理はALUにおいて行われる。ここで
例えば“comp”と“tst”といった異なる種類の
演算処理に対しては、ALUがその種類を区別できる必
要があるため、異なる命令名(命令コード)を割り当て
なければならない。これに応じて、上述のようにフラグ
操作を伴い命令順序に依存関係を生じる命令に多くの種
類が存在する。このため、コンパイラで用いられるプロ
グラム変換方法において、命令順序に依存関係を有する
命令か否かの判断が複雑となる問題点があった。また、
一つのフラグを複数種類の命令で用いるということは、
命令順序の依存関係に対する制約が厳しくなるという問
題や、アセンブラによるプログラミングの生産性の低下
やアセンブラプログラムの可読性の低下という問題を招
いていた。
【0013】本発明は上記問題点を解消するためになさ
れたもので、コンパイラの処理を容易とし、またアセン
ブラによるプログラミングやアセンブラプログラムの読
解を容易とするプログラム実行装置及びプログラム変換
方法を提供することを目的とする。
【0014】
【課題を解決するための手段】本発明に係る第1のプロ
グラム実行装置は、複数種類のフラグを保持するフラグ
保持手段を有し、演算実行手段が、フラグを変化させる
複数種類の所定の演算処理を、入力された被演算データ
を共通に用いてそれぞれ行い、当該各演算処理ごとに互
いに別個の前記フラグに対し当該演算処理の結果に応じ
て操作を行うことを特徴とする。
【0015】本発明によれば、演算実行手段は、複数の
演算処理を1つの、つまり1種類の命令で行うことがで
きる。すなわち演算実行手段は、1つの命令に従って1
つ又は1組の被演算データが入力されると、フラグを変
化させる複数種類の演算処理が行われる。これら演算処
理は、演算実行手段に入力された1つ又は1組の被演算
データを共通に用いて別個に行われる。また、これら各
演算処理は、互いに異なるフラグを用いる。よって、フ
ラグ保持手段には、入力された被演算データに対してこ
こで行われるすべての演算処理のフラグ操作結果が保持
される。つまり、演算処理が実行された後において、実
行された任意の演算処理に対応するフラグ操作結果を知
ることができる。
【0016】また、本発明に係る第2のプログラム実行
装置は、前記演算実行手段が、互いに共通の前記被演算
データを入力されそれぞれ所定の前記演算処理を互いに
並列して行い、互いに別個の前記フラグに対し当該演算
処理の結果に応じて操作を行う複数の演算回路を含むも
のである。
【0017】本発明によれば、フラグを使用する複数の
演算処理に対してそれぞれ演算回路が設けられ、これら
が並列に動作して、入力された被演算データをそれぞれ
演算処理する。
【0018】本発明の好適な態様は、前記複数の演算回
路として算術論理演算回路と論理積回路とを含むもので
ある。算術論理演算回路は、例えば、入力された2つの
データの大小比較を行うことができる。例えばその大小
比較は2つのデータの差を求め、大小比較結果はその差
の正負又は0か非零に応じてフラグを設定することによ
り保持される。一方、論理積回路は入力された2つのデ
ータの論理積を求めることができる。そしてその結果は
例えばそれが0か非零かに応じて、算術論理演算回路で
用いるのとは別のフラグを設定することにより保持され
る。
【0019】本発明に係る第1のプログラム変換方法
は、高級プログラミング言語に基づく高級命令で記述さ
れたプログラムを、上記第2のプログラム実行装置にて
実行可能な機械語に対応する低級命令列に変換するプロ
グラム変換方法であって、所定の演算処理を行いさらに
その結果に応じて前記フラグに値を設定してなる当該フ
ラグに基づいたフラグ依存処理を行うためのフラグ利用
高級命令を、前記演算実行手段に前記被演算データを入
力し前記各演算回路にそれぞれ演算処理を行わせ前記フ
ラグを設定する演算処理命令と、複数の前記演算回路の
うち当該フラグ利用高級命令について定義された前記演
算処理を実行する前記演算回路によって操作される前記
フラグを用いて前記フラグ依存処理を行うフラグ依存処
理命令とを含む前記低級命令列に変換することを特徴と
する。
【0020】低級命令とは、プログラム実行装置の単位
動作を指示する命令であり、例えばアセンブラ命令のよ
うなものである。フラグ依存処理とは、所定のフラグの
値に応じて異なる動作をするものであり、例えば、フラ
グに所定の値が設定されている場合にのみ指定分岐先に
処理を移行するといったものである。本発明によれば、
演算処理命令は、複数設けられた演算回路によって並列
に実行される。これら演算回路はそれぞれ互いに異なる
フラグに対し値の設定を行う。フラグ依存処理命令は、
元のフラグ利用高級命令が意図したフラグの値を参照す
るものが生成される。つまり本発明によれば、各フラグ
ごとにその役割が異なり、プログラム上では、その役割
はフラグ依存命令の違いによって容易に区別される。
【0021】本発明に係る第2のプログラム変換方法
は、上記第1のプログラム変換方法において、それぞれ
定義された前記演算処理が互いに異なる複数の前記フラ
グ利用高級命令に対して、それぞれの前記演算処理命令
として共通の命令コードを生成するというものである。
【0022】上述したようにフラグ依存処理命令は、元
のフラグ利用高級命令が意図したフラグの値を参照する
ものが生成される。つまり本発明によれば、各フラグ利
用高級命令の動作は、それぞれに対応するフラグを参照
し、それに基づいて所定のフラグ依存処理を行う部分で
は互いに異なるが、演算回路を用いて演算処理を行う部
分では、いずれもすべての演算回路にて並列に演算処理
を行うという点で互いに共通である。よって本発明では
演算処理命令として、異なるフラグ利用高級命令相互で
共通の命令コードを用いる。
【0023】本発明の好適な態様は、前記複数のフラグ
利用高級命令として、前記演算処理が2つの前記被演算
データの大小関係を求め、当該大小関係に応じて前記フ
ラグを設定する処理であり、前記フラグ依存処理が当該
フラグの値に応じて前記プログラムの所定のアドレスに
分岐する処理である大小比較分岐命令と、前記演算処理
が2つの前記被演算データの論理積を求め、当該論理積
が0か非零かに応じて前記フラグを設定する処理であ
り、前記フラグ依存処理が当該フラグの値に応じて前記
プログラムの所定のアドレスに分岐する処理であるビッ
トパターン比較分岐命令とを含むものである。
【0024】
【発明の実施の形態】次に、本発明の実施形態について
図面を参照して説明する。図1は、本発明の実施形態で
あるプログラム実行装置の概略のブロック構成図であ
る。命令フェッチ部32は、アセンブラプログラムの各
命令に対応して生成されメモリ34に格納された機械語
命令を順次フェッチするフェッチ手段である。
【0025】フェッチされた命令は命令デコード部36
に送られる。命令デコード部36はその命令のバイナリ
形式に応じて、レジスタ群38、ALU40、論理積演
算部(論理積回路)42、データアクセス部44、フラ
グ群46(フラグ保持手段)の動作を制御する。例え
ば、命令にレジスタ番号が指定されている場合には、レ
ジスタ群38中の指定されたレジスタから値が読み出さ
れてALU40及び論理積演算部42に送られたり、逆
に指定されたレジスタに値が格納されたりする。一方、
命令のオペランドに即値が指定されている場合には、そ
の値を用いてALU40及び論理積演算部42での演算
が行われる。
【0026】さて、本装置の特徴の一つは、演算実行手
段としてALU40と論理積演算部42という2つの異
なる演算回路の並列構成をとる点である。つまり、演算
実行手段に入力されるレジスタからの値、又は即値は、
ALU40と論理積演算部42に並列に入力される。
【0027】ALU40は、加算、減算といった命令コ
ードに応じた演算を行い、その演算結果は、データアク
セス部44を介してレジスタ群38やメモリ34に格納
される。また、ALU40において所定のフラグに値を
設定する処理が行われると、その値によってフラグ群4
6中の当該所定のフラグの値が更新される。
【0028】一方、論理積演算部42は、レジスタ群3
8中の指定されたレジスタから読み出された値や命令語
に指定された即値などの2つのデータを入力され、それ
ら2つのデータの論理積を求める。本装置では論理積演
算部42には2つのデータが入力され、その一つをマス
クデータとして用い、もう一方の入力データである被検
査データがそのマスクデータに合致したビットパターン
を有するか否かを検査するビットテストに用いられる。
なお、マスクデータは検査対象とする所定の1又は複数
のビットだけが“1”であり、このマスクデータの
“1”であるビット位置を「関心ビット」と呼ぶことに
する。論理積演算部42は例えばAND回路を含んで、
被検査データとマスクデータとの論理積を求め、それが
0に等しいときフラグ群46中のフラグTを“1”にセ
ットし、論理積が0とならないとき、フラグTをリセッ
トする、つまり“0”とする。これにより、被検査デー
タの関心ビットのいずれかが“1”である場合には、フ
ラグT=0、一方関心ビットのすべてが“0”である場
合にフラグT=1が設定される。
【0029】また、論理積演算部42としては、関心ビ
ットのすべてが“1”であるかどうかを検査する構成も
可能である。その場合には、例えば、論理積演算部42
は、入力されたマスクデータと被検査データとで対応す
るビット同士の論理積を求めるAND回路と、AND回
路から出力された論理積とマスクデータとで対応するビ
ット同士の排他的論理和を求めるXOR回路とを含んで
構成される。この構成では、まずAND回路は、被検査
データのビットのうち関心ビットのみをそのまま残し、
他のビットを“0”とした値を出力する。この値とマス
クデータとの排他的論理和は、被検査データの関心ビッ
トがすべて“1”である場合にのみ、すべての桁が
“0”となる。そして、例えばXOR回路の出力が0の
場合にフラグT=0、一方、XOR回路の出力が非零の
場合にフラグT=1に設定する。
【0030】フラグ群46には、フラグTのほかに、例
えば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”にリセットされる。
【0031】本装置の構成によれば、あるアセンブラ命
令に対応して生成された機械語に対して、その本来の演
算処理がALU40にて行われるばかりでなく、その命
令に指定される2つのオペランドに対する論理積演算が
論理積演算部42にて並列に行われる。論理積演算部4
2がその結果の保持に用いるフラグTは、ALU40で
用いられるフラグと異なるものであるので、ALU40
の演算結果と論理積演算部42の演算結果とが互いに干
渉しあうことはない。よって、プログラムにおいて、こ
れら2つの演算回路から結果のいずれか又は両方を任意
に選択して利用することができる。
【0032】なお、上述の構成では、演算実行手段とし
て複数の異なる種類の演算回路を設け、各演算処理を並
列に行う構成としたが、ALU40のみで、同一の入力
データに対し複数の異なる演算処理、例えば上述の例に
即して述べれば、フラグTの操作を伴う論理積演算と、
その他のフラグの操作を伴う他の種類の演算とを順次行
う構成とすることもできる。この場合も、それぞれの演
算結果によるフラグの値は異なる演算処理間で干渉する
ことがない。また、上述の構成では、演算回路はALU
40と論理積演算部42との2種類としたが、互いに異
なるフラグを操作する3つ以上の演算回路を設け、それ
らにより演算処理を並列に行う構成とすることも可能で
ある。もちろん、フラグは上述の定義の5つに限られる
必要はない。
【0033】次に、人間にとって理解が容易な文法を有
した「C」、「Fortran」といった高級プログラ
ミング言語を変換して、上記本装置にて実行可能な機械
語に対応するアセンブラ命令を生成するプログラム変換
方法を説明する。以下、本方法を採用した実施形態であ
るコンパイラについて説明する。
【0034】高級プログラミング言語の命令には、演算
結果に応じてフラグを操作し、さらにそのフラグの値に
基づいた処理を行うもの(フラグ利用高級命令)が一般
には複数存在する。例えば、2つの値“A”、“B”と
プログラムの行番号やラベルといった分岐先“LABE
L1”とを指定したフラグ利用高級命令として次のよう
なものがある。
【0035】 (i) 「A>Bならば、LABEL1にジャンプしろ。」 (ii) 「A≧Bならば、LABEL1にジャンプしろ。」 (iii)「A<Bならば、LABEL1にジャンプしろ。」 (iv) 「A≦Bならば、LABEL1にジャンプしろ。」 (v) 「A=Bならば、LABEL1にジャンプしろ。」 (vi) 「A≠Bならば、LABEL1にジャンプしろ。」 (vii)「論理積A・B=0ならば、LABEL1にジ
ャンプしろ。」これらのうち、(i)〜(vi)は、基本
的にはA、Bの大小関係に応じて分岐するか否かを決定
する大小比較分岐命令である。また(vii)は、ビット
テスト結果の合否に応じて分岐するか否かを決定するビ
ットパターン比較分岐命令である。これら(i)〜(vi
i)の高級命令は、アセンブラに変換するとA、Bに基
づいて所定の演算処理を行いその結果に応じてフラグに
値を設定し、そしてそのフラグの値に基づいて分岐する
か否かを決定するという命令列となる。つまり、一般に
演算回路にA、Bについての演算処理を行わせフラグを
設定する演算処理命令と、フラグの値に依存して分岐を
行うフラグ依存命令である分岐命令とを含んだアセンブ
ラの命令列に変換される。
【0036】本コンパイラは、上記(i)〜(vii)の
演算処理命令に対して、同一の命令コード「comp」
を生成する。また、(i)〜(vii)に対して分岐命令
としてそれぞれ「br.gt」、「br.ge」、「b
r.lt」、「br.le」、「br.eq」、「b
r.neq」、「br.t」を生成する。これら分岐命
令は、互いに本発明のプログラム実行装置に設けられた
フラグ群46に設定されるフラグの値の異なるパターン
に対応して分岐を実行する。
【0037】よって、例えば、命令(i)に対して生成
されるアセンブラ命令列は、基本的には次のようなもの
である。
【0038】comp A,B br.gt LABEL1 残りの命令(ii)〜(vii)についても同様に、「co
mp」命令といずれかの「br」命令との並びに変換さ
れる。
【0039】以下、本プログラム実行装置において、上
記フラグ利用高級命令に対し本コンパイラが生成したア
センブラ命令がどのように実行されるかを説明する。
【0040】上述したように(i)〜(vii)の高級命
令に対して生成される共通の「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が設定される可能性がある。
【0041】次に(i)〜(vii)の各命令に対して
は、それぞれ異なる分岐命令が生成される。命令(i)
に対して生成される「br.gt」は、フラグN=0か
つフラグZ=0の場合に分岐処理を実行する。ここでフ
ラグTの値は参照されない。
【0042】命令(ii)に対して生成される「br.g
e」は、フラグN=0の場合に分岐処理を実行する。こ
こでフラグZ、Tの値は参照されない。
【0043】命令(iii)に対して生成される「br.
lt」は、フラグN=1かつフラグZ=0の場合に分岐
処理を実行する。ここでフラグTの値は参照されない。
【0044】命令(iv)に対して生成される「br.l
e」は、フラグN=1又はZ=1の場合に分岐処理を実
行する。ここでフラグTの値は参照されない。
【0045】命令(v)に対して生成される「br.e
q」は、フラグZ=1の場合に分岐処理を実行する。こ
こでフラグN、Tの値は参照されない。
【0046】命令(vi)に対して生成される「br.n
eq」は、フラグZ=0の場合に分岐処理を実行する。
ここでフラグN、Tの値は参照されない。
【0047】最後に命令(vii)に対して生成される
「br.t」は、フラグT=1の場合に分岐処理を実行
する。ここでフラグN、Zの値は参照されない。
【0048】このように、各種分岐命令は、それぞれ固
有のフラグパターンを検知して、分岐処理を行う。つま
り、本プログラム実行装置では各演算回路が互いに異な
るフラグを操作する構成としているので、各分岐命令
は、自分が参照するフラグの操作を行うもの以外の演算
回路において行われる「comp」命令の実行内容につ
いては関知する必要がない。
【0049】上述したように、本プログラム実行装置で
は、フラグ操作を伴う大小比較処理とビットテスト処理
といった各種の高級言語命令に対し、演算処理命令を統
合することができる。コンパイラは、アセンブラプログ
ラムの最適化処理を行う場合、フラグ操作を行う演算処
理命令とそのフラグを用いた分岐命令との間において、
当該フラグを操作する他の命令が挿入されないようにす
る。具体的には、コンパイラは、例えばアセンブラプロ
グラム中の各命令がフラグ操作を行う演算処理命令であ
るか否かを逐一判断し、もしフラグ操作を行う演算処理
命令であれば、それとそれに続く分岐命令とはひとかた
まりにして取り扱い最適化処理を行う。本発明によれ
ば、フラグ操作を行う演算処理命令の種類が減少するの
で、コンパイラにおける上記フラグ操作を行う演算処理
命令の判定処理が簡素化される。
【0050】
【発明の効果】本発明のプログラム実行装置によれば、
フラグ操作を行う複数種類の演算処理に対応して複数の
フラグを用意し、演算命令の種類に関係なくフラグ操作
を行う複数種類の演算処理がそれぞれ実行される。つま
り、フラグ操作を行う演算処理に対して共通の演算命令
を用いることができる。これにより、コンパイラが行う
アセンブラプログラムの最適化処理における、フラグ操
作を行う演算命令であるか否かを判断する処理が容易と
なり、コンパイラのサイズの縮小及び処理負荷の軽減が
図られるという効果が得られる。また、異なる演算処理
に対しては異なるフラグが操作され、異なる演算処理間
でフラグ操作の干渉が回避されるので、アセンブラによ
るプログラミングやアセンブラプログラムの読解が容易
となるという効果が得られる。
【0051】本発明のプログラム変換方法によれば、上
記プログラム実行装置に対応して、フラグ操作を行う演
算処理に対し共通の演算命令を用いたアセンブラプログ
ラムが生成される。これにより、コンパイラが行うアセ
ンブラプログラムの最適化処理における、フラグ操作を
行う演算命令であるか否かを判断する処理が容易とな
り、コンパイラのサイズの縮小及び処理負荷の軽減が図
られるという効果が得られる。また、異なる演算処理に
対しては異なるフラグが操作され、異なる演算処理間で
フラグ操作の干渉が回避されるので、アセンブラによる
プログラミングやアセンブラプログラムの読解が容易と
なるという効果が得られる。
【図面の簡単な説明】
【図1】 本発明の実施形態であるプログラム実行装置
の概略のブロック構成図である。
【図2】 従来のプログラム実行装置の概略のブロック
構成図である。
【符号の説明】
32 命令フェッチ部、34 メモリ、36 命令デコ
ード部、38 レジスタ群、40 算術論理演算部(A
LU)、42 論理積演算部、44 データアクセス
部、46 フラグ群。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 命令を順次フェッチするフェッチ手段
    と、その命令を解読する解読手段と、解読された命令を
    実行する演算実行手段を有するプログラム実行装置にお
    いて、 複数種類のフラグを保持するフラグ保持手段を有し、 前記演算実行手段は、 フラグを変化させる複数種類の所定の演算処理を、入力
    された被演算データを共通に用いてそれぞれ行い、当該
    各演算処理ごとに互いに別個の前記フラグに対し当該演
    算処理の結果に応じて操作を行うこと、 を特徴とするプログラム実行装置。
  2. 【請求項2】 請求項1記載のプログラム実行装置にお
    いて、 前記演算実行手段は、 互いに共通の前記被演算データが入力されそれぞれ所定
    の前記演算処理を互いに並列して行い、互いに別個の前
    記フラグに対し当該演算処理の結果に応じて操作を行う
    複数の演算回路を含むこと、 を特徴とするプログラム実行装置。
  3. 【請求項3】 請求項2記載のプログラム実行装置にお
    いて、 前記複数の演算回路として、 算術論理演算回路と、 論理積回路と、 を含むことを特徴とするプログラム実行装置。
  4. 【請求項4】 高級プログラミング言語に基づく高級命
    令で記述されたプログラムを、請求項2記載のプログラ
    ム実行装置にて実行可能な機械語に対応する低級命令列
    に変換するプログラム変換方法において、 所定の演算処理を行いさらにその結果に応じて前記フラ
    グに値を設定してなる当該フラグに基づいたフラグ依存
    処理を行うためのフラグ利用高級命令を、前記演算実行
    手段に前記被演算データを入力し前記各演算回路にそれ
    ぞれ演算処理を行わせ前記フラグを設定する演算処理命
    令と、複数の前記演算回路のうち当該フラグ利用高級命
    令について定義された前記演算処理を実行する前記演算
    回路によって操作される前記フラグを用いて前記フラグ
    依存処理を行うフラグ依存処理命令とを含む前記低級命
    令列に変換すること、 を特徴とするプログラム変換方法。
  5. 【請求項5】 請求項4記載のプログラム変換方法にお
    いて、 それぞれ定義された前記演算処理が互いに異なる複数の
    前記フラグ利用高級命令に対して、それぞれの前記演算
    処理命令として共通の命令コードを生成すること、 を特徴とするプログラム変換方法。
  6. 【請求項6】 請求項4記載のプログラム変換方法にお
    いて、 前記複数のフラグ利用高級命令として、 前記演算処理が2つの前記被演算データの大小関係を求
    め、当該大小関係に応じて前記フラグを設定する処理で
    あり、前記フラグ依存処理が当該フラグの値に応じて前
    記プログラムの所定のアドレスに分岐する処理である大
    小比較分岐命令と、 前記演算処理が2つの前記被演算データの論理積を求
    め、当該論理積が0か非零かに応じて前記フラグを設定
    する処理であり、前記フラグ依存処理が当該フラグの値
    に応じて前記プログラムの所定のアドレスに分岐する処
    理であるビットパターン比較分岐命令と、 を含むことを特徴とするプログラム変換方法。
JP25631397A 1997-09-22 1997-09-22 プログラム実行装置 Expired - Fee Related JP3515337B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
EP1164479B1 (en) * 1993-05-27 2007-05-09 Matsushita Electric Industrial Co., Ltd. Program converting unit
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

Also Published As

Publication number Publication date
JP3515337B2 (ja) 2004-04-05
US6324641B1 (en) 2001-11-27

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
JP2005149297A (ja) プロセッサおよびそのアセンブラ
JPH02148140A (ja) 情報処理装置における条件分岐制御方式
KR100515039B1 (ko) 조건부 명령어를 고려한 파이프라인 상태 표시 회로
EP1050797A1 (en) Execution of instructions in a computer program
JPH06168216A (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: 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