(57)【特許請求の範囲】
【請求項１】
データ処理装置であって、
データを処理するための処理回路と、
プログラム命令に応答して、前記データを処理するように、前記処理回路を制御するための制御信号を生成する、命令デコーダと、
前記処理回路の現在の条件状態を記憶するための状態記憶装置であって、前記現在の条件状態は、前記データの処理の際、修正可能である、状態記憶装置と、
を備え、前記プログラム命令は、条件付き比較命令を含み、前記命令デコーダは、前記条件付き比較命令に応答して、
（ｉ）前記現在の条件状態が、試験条件に合格する場合、第１のオペランドおよび第２のオペランドに比較演算を行い、前記現在の条件状態を前記比較演算の際に生成された結果の条件状態に設定することと、
（ｉｉ）前記現在の条件状態が、前記試験条件に失敗する場合、前記現在の条件状態を前記条件付き比較命令によって指定された失敗条件状態に設定することと、
を含む、条件付き比較演算を行うように、前記処理回路を制御するための制御信号を生成する、データ処理装置。
【請求項２】
前記状態記憶装置は、状態レジスタを備える、請求項１に記載のデータ処理装置。
【請求項３】
前記現在の条件状態は、前記状態記憶装置内に記憶された少なくとも１つの条件コードフラグの値を備える、請求項１および２のいずれかに記載のデータ処理装置。
【請求項４】
前記条件付き比較命令は、前記試験条件を指定するためのフィールドを含む、請求項１から３のいずれか一項に記載のデータ処理装置。
【請求項５】
前記失敗条件状態は、前記条件付き比較命令によって、即値として指定される、請求項１から４のいずれか一項記載のデータ処理装置。
【請求項６】
前記即値は、プログラムのプログラマによって設定される、プログラム可能値である、請求項５に記載のデータ処理装置。
【請求項７】
前記即値は、前記条件付き比較命令を備えるプログラムのコンパイラによって設定される、プログラム可能値であって、前記コンパイラに基づいて、条件付き比較命令のための失敗条件状態を指定するにあたり、当該失敗条件状態により現在の条件状態が設定される場合に、当該条件付き比較命令に後続する条件付き比較命令における試験条件に合格するように、前記プログラム可能値を選択する、
請求項５に記載のデータ処理装置。
【請求項８】
前記失敗条件状態は、Ｎビットの失敗条件状態値として指定され、Ｎは、ゼロより大きい任意の整数であって、前記現在の条件状態は、Ｎビットの値によって表され、
前記命令デコーダは、前記現在の条件状態が、前記試験条件に失敗する場合、前記Ｎビットの失敗条件状態値を前記状態記憶装置に書き込むように、前記処理回路を制御する、
請求項１から７のいずれか一項に記載のデータ処理装置。
【請求項９】
前記現在の条件状態は、所定の条件状態を含む、複数の条件状態のうちのいずれかに設定可能であって、
前記失敗条件状態として前記所定の条件状態を指定する条件付き比較命令のための前記試験条件に失敗する場合にのみ、前記現在の条件状態は前記所定の条件状態に設定されることができるものである、
請求項１から８のいずれか一項に記載のデータ処理装置。
【請求項１０】
前記条件付き比較命令は、前記第１のオペランドおよび前記第２のオペランドを指定するための第１および第２のオペランドフィールドを含む、請求項１から９のいずれか一項請求項に記載のデータ処理装置。
【請求項１１】
前記第１および第２のオペランドフィールドのうちの少なくとも１つは、前記第１のオペランドまたは前記第２のオペランドを記憶する、記憶場所を指定する、請求項１０に記載のデータ処理装置。
【請求項１２】
条件付き比較命令の第１および第２のオペランドフィールドのうちの少なくとも１つがビット値の所定の組み合わせであるときに、第１および第２のオペランドのうちの対応する１つがゼロの値を有するような条件付き比較演算を行うように、命令デコーダは処理回路を制御するものである、請求項１１に記載のデータ処理装置。
【請求項１３】
前記第１および第２のオペランドフィールドのうちの１つは、前記第１のオペランドまたは前記第２のオペランドとして、即値を指定する、請求項１０から１２のいずれかの請求項に記載のデータ処理装置。
【請求項１４】
前記比較演算は、
（ａ）前記第２のオペランドを前記第１のオペランドから減算すること、
（ｂ）前記第１のオペランドを前記第２のオペランドに加算すること、
（ｃ）ビット排他論理和演算を前記第１のオペランドおよび前記第２のオペランドに行うこと、
（ｄ）ビット論理積演算を前記第１のオペランドおよび前記第２のオペランドに行うこと、
（ｅ）前記第１のオペランド、前記第２のオペランド、および前記状態記憶装置の桁上げビットを加算すること、
（ｆ）ビット論理和演算を前記第１のオペランドおよび前記第２のオペランドに行うこと、
のうちの任意の１つを含む、請求項１から１３のいずれか一項に記載のデータ処理装置。
【請求項１５】
データ処理装置であって、
データを処理するための処理手段と、
プログラム命令に応答して、制御信号を生成するための命令デコーダ手段であって、前記制御信号は、前記データを処理するように、前記処理手段を制御するためのものである、命令デコーダ手段と、
前記処理手段の現在の条件状態を記憶するための状態記憶手段であって、前記現在の条件状態は、前記データの処理の際、修正可能である、状態記憶手段と、
を備え、前記プログラム命令は、条件付き比較命令を含み、前記命令デコーダ手段は、前記条件付き比較命令に応答して、
（ｉ）前記現在の条件状態が、試験条件に合格する場合、第１のオペランドおよび第２のオペランドに比較演算を行い、前記現在の条件状態を前記比較演算の際に生成された結果の条件状態に設定することと、
（ｉｉ）前記現在の条件状態が、前記試験条件に失敗する場合、前記現在の条件状態を前記条件付き比較命令によって指定された失敗条件状態に設定することと、
を含む、条件付き比較演算を行うように、前記処理手段を制御するための制御信号を生成する、データ処理装置。
【請求項１６】
データ処理方法であって、
条件付き比較命令を含む、プログラム命令に応答して、データを処理するように、処理回路を制御するための制御信号を生成するステップと、
前記処理回路の現在の条件状態を記憶するステップであって、前記現在の条件状態は、前記データの処理の際、修正可能である、ステップと、
前記条件付き比較命令に応答して、
（ｉ）前記現在の条件状態が、試験条件に合格する場合、第１のオペランドおよび第２のオペランドに比較演算を行い、前記現在の条件状態を前記比較演算の際に生成された結果の条件状態に設定することと、
（ｉｉ）前記現在の条件状態が、前記試験条件に失敗する場合、前記現在の条件状態を前記条件付き比較命令によって指定された失敗条件状態に設定することと、
を含む、条件付き比較演算を行うように、前記処理回路を制御するための制御信号を生成するステップと、
を含む、方法。
【請求項１７】
コンパイルを行うことにより、データ処理装置による実行のためのプログラム命令
のシーケンスを得る方法であって、
前記プログラム命令のシーケンスは、
２つのオペランドに無条件比較演算を行い、前記データ処理装置の現在の条件状態を前記無条件比較演算の際に生成された結果の条件状態に設定するように、前記データ処理装置を制御するための無条件比較命令と、
（ｉ）前記データ処理装置の前記現在の条件状態が、試験条件に合格する場合、第１のオペランドおよび第２のオペランドに比較演算を行い、前記現在の条件状態を前記比較演算の際に生成された結果の条件状態に設定することと、（ｉｉ）前記現在の条件状態が、前記試験条件に失敗する場合、前記現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、を含む、条件付き比較演算を行うように、前記データ処理装置を制御するための少なくとも１つの条件付き比較命令と、を含み、
前記方法は、
（ａ）１つ以上の論理積または論理和演算を使用して、論理的に組み合わせられたＮ個の比較演算の連鎖シーケンスを定義する、データの入力を受信するステップであって、Ｎは、１より大きい整数であって、前記Ｎ個の比較演算はそれぞれ、個別のオペランドが、個別の所定の基準を満たすかどうかを試験する、ステップと、
（ｂ）前記連鎖シーケンスの第１の比較演算に対応する前記無条件比較命令を生成するステップと、
（ｃ）２とＮとの間のｉの各整数値に対して、
（ｉ）前記連鎖シーケンスのｉ番目の比較演算が、論理積演算または論理和演算を使用して、部分的連鎖シーケンスの結果と論理的に組み合わせられるかどうか判定する段階であって、前記部分的連鎖シーケンスは、前記連鎖シーケンスの前記第１の比較演算から（ｉ−１）番目の比較演算を備える段階と、
（ｉｉ）前記ｉ番目の比較演算が、論理積演算を使用して、前記部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、前記ｉ番目の比較演算に対応する条件付き比較命令を生成する段階であって、前記条件付き比較命令は、前記試験条件として、前記（ｉ−１）番目の比較演算の前記所定の基準が満たされる時、合格される条件を指定し、前記失敗条件状態として、前記ｉ番目の比較演算の前記所定の基準が満たされていないことに対応する条件状態を指定する段階と、
（ｉｉｉ）前記ｉ番目の比較演算が、論理和演算を使用して、前記部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、前記ｉ番目の比較演算に対応する条件付き比較命令を生成する段階であって、前記条件付き比較命令は、前記試験条件として、前記（ｉ−１）番目の比較演算の前記所定の基準が満たされない時、合格する条件を指定し、前記失敗条件状態として、前記ｉ番目の比較演算の前記所定の基準が満たされていることに対応する条件状態を指定する段階と、
を行う、ステップと、
（ｄ）プログラム命令のシーケンスとして、ステップ（ｂ）で生成された少なくとも前記無条件比較命令と、ステップ（ｃ）で生成された（Ｎ−１）個の前記条件付き比較命令と、を出力するステップと、
を含む、方法。
【請求項１８】
ホストハードウェアで実行するコンピュータプログラムによって提供される仮想マシンであって、請求項１から１４のいずれかに記載のデータ処理装置に従って、命令実行環境を提供する、仮想マシン。
【請求項１９】
コンピュータによって実行されると、請求項１７の方法を行うように、前記コンピュータを制御する、コンピュータプログラムを記憶する、非一時的コンピュータ記憶媒体。
【請求項２０】
コンピュータプログラムを記憶する、非一時的コンピュータ記憶媒体であって、
前記コンピュータプログラムは、条件付き比較演算を行うように、処理回路を制御するための条件付き比較命令を備え、
前記条件付き比較演算は、
（ｉ）前記処理回路の現在の条件状態が、試験条件に合格する場合、第１のオペランドおよび第２のオペランドに比較演算を行い、前記現在の条件状態を前記比較演算の際に生成された結果の条件状態に設定することと、
（ｉｉ）前記現在の条件状態が、前記試験条件に失敗する場合、前記現在の条件状態を前記条件付き比較命令によって指定された失敗条件状態に設定することと、
を含む、非一時的コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関する。より具体的には、本発明は、条件付き比較命令に関する。
【背景技術】
【０００２】
処理装置の現在の条件状態(condition state)を表すための種々の条件フラグを処理装置に提供することは、知られている。そのようなデータ処理装置の一例は、ＡＲＭ命令セットを実行する、ＡＲＭ  Ｌｉｍｉｔｅｄ（Ｃａｍｂｒｉｄｇｅ、Ｅｎｇｌａｎｄ）によって設計されたプロセッサである。命令は、条件付き命令の実行時の条件フラグの現在の状態が、条件付き演算が行われるかどうかを制御するように、条件付きで実行するように配列され得る。例えば、ある種類の条件付き命令に対して、現在の条件状態が、実行時に試験され、現在の条件状態が、試験(test)を合格する場合、条件フラグは、２つのオペランドに行われた演算の結果に従って、更新される。現在の条件状態が、試験に失敗する場合、命令は、全く機能しないＮＯＰ命令として作用し、したがって、条件フラグは、不変のまま残される。
【０００３】
そのような命令は、試験の結果に試験および論理演算のいくつかの組み合わせを実装するために使用することができる。例えば、形式（Ａ＝＝Ｂ＆＆Ｃ＝＝Ｄ）｜｜Ｅ＝＝Ｆの論理式は、初期試験Ａ＝＝Ｂを備え、その後、一連のさらなる試験が続き、その結果が、それぞれ、論理積（＆＆）または論理和（｜｜）演算を使用して、前の演算から生じる条件フラグと組み合わせられるが、無条件比較命令および１つ以上の条件付き比較命令を備える、命令のシーケンスを使用して評価することができ、各条件付き比較命令は、前の命令の結果が、特定の条件を満たす場合のみ、条件フラグを更新するように配列される。
【０００４】
例えば、式（Ａ＝＝Ｂ＆＆Ｃ＝＝Ｄ）｜｜Ｅ＝＝Ｆは、以下の命令シーケンスを使用して、評価され得る。
ＣＭＰ                Ａ，Ｂ
ＣＭＰＥＱ            Ｃ，Ｄ
ＣＭＰＮＥ            Ｅ，Ｆ
【０００５】
無条件比較命令ＣＭＰ  Ａ、Ｂは、ＡおよびＢの値を比較し、比較の結果に従って、条件フラグを設定する。ＡとＢが、等しい場合、条件フラグは、ＥＱ状態に置かれる。一方、ＡとＢが、等しくない場合、条件フラグは、ＮＥ状態に置かれる。
【０００６】
条件付き比較命令ＣＭＰＥＱ  Ｃ、Ｄを実行する際、条件フラグが、ＥＱ状態にある（すなわち、試験Ａ＝＝Ｂが満たされた）場合、ＣとＤとの間の比較が、行われ、条件フラグは、比較の結果に従って、更新される。そうでなければ、条件フラグが、ＮＥ状態にある（すなわち、Ａ＝＝Ｂが満たされなかった）時、ＣＭＰＥＱ命令は、ＮＯＰとして挙動し、条件フラグは、変更されない。これは、第１の２つの命令の実行後、条件フラグが、Ａ＝ＢおよびＣ＝Ｄの両方である場合のみ、ＥＱ状態を示し、そうでなければ、ＮＥ状態を示すことを意味する。これは、論理積演算を使用して、試験Ａ＝＝ＢおよびＣ＝＝Ｄを組み合わせるための正しい結果である。
【０００７】
次に、条件付き比較命令ＣＭＰＮＥ  Ｅ、Ｆが、実行され、条件フラグが、ＥＱ状態にある（すなわち、試験Ａ＝＝Ｂ＆＆Ｃ＝＝Ｄが満たされた）場合、ＣＭＰＮＥ命令は、ＮＯＰとして取り扱われ、したがって、条件コードは、ＥＱ状態のままとなる。代替として、条件フラグが、ＮＥ状態にある（すなわち、試験Ａ＝＝Ｂ＆＆Ｃ＝＝Ｄが満たされなかった）場合、ＥおよびＦの比較が行われ、条件フラグは、比較の結果に従って、更新される。故に、最終結果は、（Ａ＝ＢかつＣ＝Ｄ）またはＥ＝Ｆのいずれかである場合、ＥＱとなり、これらの試験のいずれも満たされない場合のみ、ＮＥとなる。これは、論理和演算によって、試験（Ａ＝＝Ｂ＆＆Ｃ＝＝Ｄ）およびＥ＝＝Ｆを組み合わせるための正しい結果である。
【０００８】
故に、条件付き比較命令ＣＭＰＥＱおよびＣＭＰＮＥは、形式（Ａ＝＝Ｂ＆＆Ｃ＝＝Ｄ）｜｜Ｅ＝＝Ｆの一連の試験を評価するために使用することができる。しかしながら、これらの種類の命令は、連鎖内の個々の試験すべてが、同一種類の関係、または同一種類の関係に変換することができる、異なる種類の関係のいずれかを評価する時のみ、使用することができる。例えば、前の例では、個々の試験すべてが、「等しい」関係を評価する。代替として、条件付き命令は、関係Ｃ＜Ｄが、Ａ＞Ｂと同一種類の関係である、Ｄ＞Ｃに変換することができるため、形式（Ａ＞Ｂ＆＆Ｃ＜Ｄ）の論理条件を表すために使用され得る。しかしながら、例えば、試験される関係が、異なり、相互に変換することができないため、（Ａ＞Ｂ｜｜Ｃ＝＝Ｄ）＆＆Ｅ＜＝Ｆ、またはＡ＝＝Ｂ＆＆Ｃ！＝Ｄ等の論理式を試験することは、不可能である。
【０００９】
したがって、これらの条件付き命令は、ある種類の論理式を試験するためにのみ、使用することができる。これは、そのような命令を使用してコンパイルすることができる、ソースコードの量が限定さることを意味し、コンパイラが、条件付き命令が特定の用途のために使用することができるかどうかを判定することは、複雑である。
【発明の概要】
【課題を解決するための手段】
【００１０】
第１の側面に照らして、本発明は、データ処理装置であって、
データを処理するための処理回路と、
プログラム命令に応答して、データを処理するように、処理回路を制御するための制御信号を生成する、命令デコーダと、
処理回路の現在の条件状態を記憶するための状態記憶装置であって、現在の条件状態は、データの処理の際、修正可能である、状態記憶装置と、
を備え、プログラム命令は、条件付き比較命令を含み、命令デコーダは、条件付き比較命令に応答して、
（ｉ）現在の条件状態が、試験条件に合格する場合、第１のオペランドおよび第２のオペランドに比較演算を行い、現在の条件状態を比較演算の際に生成された結果の条件状態に設定することと、
（ｉｉ）現在の条件状態が、試験条件に失敗する場合、現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、
を備える、条件付き比較演算を行うように、処理回路を制御するための制御信号を生成する、データ処理装置を提供する。
【００１１】
本技法は、処理回路の現在の条件状態が、試験条件に合格するかどうかを判定するように、処理回路を制御する、条件付き比較命令を提供する。現在の条件状態が、試験条件に合格または失敗するかどうかに関わらず、現在の条件状態は、更新される。現在の条件状態のための新しい値は、現在の条件状態が、試験条件に合格または失敗したかどうかに応じて、異なる方法で判定される。現在の条件状態が、試験条件に合格した場合、比較演算は、第１のオペランドおよび第２のオペランドに行われ、現在の条件状態は、比較演算の際に生成された結果の条件状態に設定される。一方、現在の条件状態が、試験条件に失敗する場合、現在の条件状態は、条件付き比較命令によって指定された失敗条件状態に設定される。
【００１２】
現在の条件状態が、試験条件に失敗する場合、現在の条件状態を置換する、特定の失敗条件状態値を指定するための能力によって、条件付き比較命令は、異なる種類の比較の連鎖シーケンスを試験するために使用することが可能となる。これは、連鎖内の１つの比較に対応する条件付き比較命令に対して、失敗条件状態が、連鎖内の次の比較を試験するために要求される特定の条件状態を設定するために使用することができるためである。故に、条件付き比較命令は、連鎖シーケンス内の関係が、同一種類の関係に変換することができる時でも、使用することができる。例えば、形式（（Ｓ＝＝Ｔ＆＆Ｕ＞＝０）｜｜Ａ！＝Ｂ）＆＆Ｃ＞Ｄのシーケンスは、試験される個々の関係＝＝，＞＝，！＝，＞が、異なり、相互に変換することができない場合でも、試験することができる。これは、条件付き比較命令が、すでに知られている条件付き比較命令より広くに使用することができ、故に、コンパイラによって、より容易に使用可能であることを意味する。
【００１３】
状態記憶装置は、現在の条件状態を記憶するための任意の種類の記憶場所であり得る。一例示的な実施形態では、状態記憶装置は、状態レジスタを備えてもよい。
【００１４】
装置の現在の条件状態は、状態記憶装置内に記憶された少なくとも１つの条件コードフラグの値を備えてもよい。例えば、条件コードフラグは、前の比較が、負の値、ゼロ値、桁上げ、または桁あふれをもたらしたかどうかを示すために提供されてもよい。次いで、後の比較は、後の比較の結果が、先の比較および後の比較の両方に依存するように、条件フラグの値に条件付きで行うことができる。これによって、先および後の比較が、ともに連鎖され、組み合わせられた論理条件を形成することが可能となる。
【００１５】
条件付き比較命令は、試験条件を指定するためのフィールドを含んでもよい。試験条件は、条件付き比較命令を含む、プログラムのプログラマによって、直接、指定され得る、または条件付き比較命令が、所望の論理式を表す、プログラム命令のシーケンスの一部である時、コンパイラによって、自動的に生成され得る。
【００１６】
失敗条件状態は、条件付き比較命令によって、即値として、指定されてもよい。したがって、即値は、条件付き比較命令の実行時の現在の条件状態が、試験条件に失敗する場合、現在の条件状態に設定されるべき値を示す。
【００１７】
失敗条件状態を表す即値は、条件付き比較命令を備えるプログラムのプログラマによって設定される、プログラム可能値であってもよい。これは、プログラマに、失敗条件状態の直接制御を提供する。
【００１８】
また、失敗条件状態を表す即値は、条件付き比較命令を備えるプログラムのコンパイラによって設定される、プログラム可能値であってもよく、コンパイラは、条件付き比較命令のための失敗条件状態が、その後、合格すべき、所望の条件に応じて、プログラム可能値を選択する。この場合、コンパイラは、所望の条件が何であるかを判定することができ、試験条件に失敗する場合、現在の条件状態に書き込まれるべきプログラム可能値に変換する。例えば、所望の条件が、ＥＱ条件である場合、コンパイラは、試験条件に失敗する場合、条件フラグに書き込まれると、ＥＱ条件を満たす、プログラム可能値を選択することができる。複数の可能性として考えられるプログラム可能値がそれぞれ、所望の条件を満たす場合、コンパイラは、どのプログラム可能値が使用されるかを選択するための選択基準を適用し、特定のソースコードが、コンパイラによって、毎回、同様にコンパイルされることを確実にするように配列されてもよい。例えば、コンパイラは、所望の条件を満たす、最大または最小可能値を選択する、または失敗条件状態値として、使用するための１つの値を選択するための任意の他のルールを適用することができる。
【００１９】
失敗条件状態値は、Ｎビットの失敗条件状態値として指定されてもよく、Ｎは、ゼロより大きい任意の整数であって、現在の条件状態は、Ｎビットの値によって、表されてもよい。命令デコーダは、現在の条件状態が、試験条件に失敗する場合、Ｎビットの失敗条件状態値を状態記憶装置に書き込むように、処理回路を制御してもよい。失敗条件状態および現在の条件状態は、失敗条件状態値の特定のビットが、現在の条件状態が、試験条件に失敗する時、現在の条件状態を更新するために、状態記憶装置に単純に書き込まれ得るように、同様にエンコードされてもよい。
【００２０】
一例示的な実施形態では、現在の条件状態は、所定の条件状態を含む、複数の条件状態のうちのいずれかに設定可能であってもよく、現在の条件状態は、試験条件に失敗条件状態として、所定の条件状態を指定する条件付き比較命令に失敗する場合、所定の条件状態にのみ、設定されてもよい。
【００２１】
条件付き比較命令が、その試験条件に失敗すると、現在の条件状態は、命令内に指定された失敗条件状態に設定される。条件付き比較命令が、その試験条件に合格すると、比較演算が行われ、現在の条件状態が比較演算の結果に従って更新される。比較演算から生じる、更新された条件状態は、失敗条件状態と同一であり得るため、試験条件が合格または失敗したかどうかどうか、正確に判定することは、不可能であり得る。
【００２２】
したがって、一例示的な実施形態では、通常処理演算から生じることができない、所定の条件状態が、提供されてもよい。所定の条件状態は、その失敗条件状態として、所定の条件を指定する条件付き比較命令がその試験条件に失敗する場合、処理回路が所定の条件状態にのみ置かれることができるように、条件付き比較命令に対して排他的である。故に、条件付き比較命令の実行後、所定の条件状態が生じたかどうかを試験することによって、失敗条件として、所定の条件状態を指定する条件付き比較命令が、その試験条件に合格または失敗したかどうかを判定することが可能である。これは、例えば、特定のデータ値がデータ値の所与の範囲内にあるかどうかを試験するために、有用であり得る。
【００２３】
条件付き比較命令は、第１のオペランドおよび第２のオペランドを指定するための第１および第２のオペランドフィールドを含んでもよい。第１および第２のオペランドフィールドのうちの少なくとも１つは、第１のオペランドまたは第２のオペランドを記憶する記憶場所を指定してもよい。オペランドを記憶するための記憶場所（例えば、レジスタ）の数を指定することによって、オペランドフィールドは、命令エンコーディング内のオペランドフィールドのために利用可能なビットの数より大きいビットの数を有するオペランドを識別するために使用することができる。さらに、オペランドフィールド内の記憶場所を参照することによって、同一命令の複数の実行中で異なる変数オペランドを指定することが可能となる。
【００２４】
命令デコーダは、ゼロの値を有する第１および第２のオペランドのうちの対応する１つによって、条件付き比較演算を行うように、処理回路を制御するためのビット値の所定の組み合わせを指定するオペランドフィールドのうちの１つに応答するように構成されてもよい。例えば、すべて１のビット値（例えば、０ｂ１１１１１）は、ゼロオペランドを示すために、ビットの所定の組み合わせとして、使用することができる。故に、ビット値の所定の組み合わせは、命令デコーダによって、記憶場所指定子として、解釈されないが、代わりに、ゼロの値を識別するために使用される。これは、ゼロ値との比較が、共通であるため有用であって、したがって、命令構文内において、そのような比較を直接エンコードするための能力は、記憶場所にアクセスし、ゼロオペランドを取得する必要性を、多くの場合、回避することができることを意味する。
【００２５】
第１および第２のオペランドフィールドのうちの１つは、第１のオペランドまたは第２のオペランドとして、即値を指定してもよい。本命令形式は、変数値と固定値との間の比較のために有用であり得る。この場合、オペランドフィールドのうちの１つは、変数オペランドを記憶する記憶場所を指定するために使用することができ、他のオペランドフィールドは、固定値を表す、即値を指定するために使用することができる。
【００２６】
条件付き比較命令の試験条件が、満たされる場合、処理回路によって行われる比較演算は、種々の形式を有してもよい。例えば、比較演算は、以下の任意の１つを備えてもよい。
（ａ）第２のオペランドを第１のオペランドから減算すること
（ｂ）第１のオペランドを第２のオペランドに加算すること
（ｃ）ビット排他論理和演算を第１のオペランドおよび第２のオペランドに行うこと
（ｄ）ビット論理積演算を第１のオペランドおよび第２のオペランドに行うこと
（ｅ）第１のオペランド、第２のオペランド、および状態記憶装置の桁上げビットを加算すること
（ｆ）ビット論理和演算を第１のオペランドおよび第２のオペランドに行うこと。
比較演算はまた、第１および第２のオペランドに行われる、別の算術または論理演算を備えてもよい。
【００２７】
別の側面に照らして、本発明は、データ処理装置であって、
データを処理するための処理手段と、
プログラム命令に応答して、制御信号を生成するための命令デコーダ手段であって、制御信号は、データを処理するように、処理手段を制御するためのものである、手段と、
処理手段の現在の条件状態を記憶するための状態記憶手段であって、現在の条件状態は、データの処理の際、修正可能である、手段と、
を備え、プログラム命令は、条件付き比較命令を含み、命令デコーダ手段は、条件付き比較命令に応答して、
（ｉ）現在の条件状態が、試験条件に合格する場合、第１のオペランドおよび第２のオペランドに比較演算を行い、現在の条件状態を比較演算の際に生成された結果の条件状態に設定することと、
（ｉｉ）現在の条件状態が、試験条件に失敗する場合、現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、
を備える、条件付き比較演算を行うように、処理手段を制御するための制御信号を生成する、データ処理装置を提供する。
【００２８】
さらなる側面に照らして、本発明は、データ処理方法であって、
条件付き比較命令を含む、プログラム命令に応答して、データを処理するように、処理回路を制御するための制御信号を生成するステップと、
処理回路の現在の条件状態を記憶するステップであって、現在の条件状態は、データの処理の際、修正可能である、ステップと、
条件付き比較命令に応答して、
（ｉ）現在の条件状態が、試験条件に合格する場合、第１のオペランドおよび第２のオペランドに比較演算を行い、現在の条件状態を比較演算の際に生成された結果の条件状態に設定することと、
（ｉｉ）現在の条件状態が、試験条件に失敗する場合、現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、
を含む、条件付き比較演算を行うように、処理回路を制御するための制御信号を生成するステップと、
を含む、方法を提供する。
【００２９】
さらに別の側面に照らして、本発明は、データ処理装置による実行のためのプログラム命令のシーケンスをコンパイルする方法であって、プログラム命令のシーケンスは、２つのオペランドに無条件比較演算を行い、データ処理装置の現在の条件状態を無条件比較演算の際に生成された結果の条件状態に設定するように、データ処理装置を制御するための無条件比較命令と、（ｉ）データ処理装置の現在の条件状態が、試験条件に合格する場合、第１のオペランドおよび第２のオペランドに比較演算を行い、現在の条件状態を比較演算の際に生成された結果の条件状態に設定することと、（ｉｉ）現在の条件状態が、試験条件に失敗する場合、現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、を備える、条件付き比較演算を行うように、データ処理装置を制御するための少なくとも１つの条件付き比較命令と、を含み、
（ａ）１つ以上の論理積または論理和演算を使用して、論理的に組み合わせられたＮ個の比較演算の連鎖シーケンスを定義する、データの入力を受信するステップであって、Ｎは、１より大きい整数であって、Ｎ個の比較演算はそれぞれ、個別のオペランドが、個別の所定の基準を満たすかどうかを試験する、ステップと、
（ｂ）連鎖シーケンスの第１の比較演算に対応する無条件比較命令を生成するステップと、
（ｃ）２とＮとの間のｉの各整数値に対して、
（ｉ）連鎖シーケンスのｉ番目の比較演算が、論理積演算または論理和演算を使用して、部分的連鎖シーケンスの結果と論理的に組み合わせられるかどうかを判定するステップであって、部分的連鎖シーケンスは、連鎖シーケンスの第１から（ｉ−１）番目の比較演算を備える、ステップと、
（ｉｉ）ｉ番目の比較演算が、論理積演算を使用して、部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、ｉ番目の比較演算に対応する条件付き比較命令を生成するステップであって、条件付き比較命令は、試験条件として、（ｉ−１）番目の比較演算の所定の基準が満たされる時、合格される条件を指定し、失敗条件状態として、満たされていない、ｉ番目の比較演算の所定の基準に対応する条件状態を指定する、ステップと、
（ｉｉｉ）ｉ番目の比較演算が、論理和演算を使用して、部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、ｉ番目の比較演算に対応する条件付き比較命令を生成するステップであって、条件付き比較命令は、試験条件として、（ｉ−１）番目の比較演算の所定の基準が満たされない時、合格される条件を指定し、失敗条件状態として、満たされている、ｉ番目の比較演算の所定の基準に対応する条件状態を指定する、ステップと、
を行う、ステップと、
（ｄ）プログラム命令のシーケンスとして、ステップ（ｂ）で生成された少なくとも無条件比較命令と、ステップ（ｃ）で生成された（Ｎ−１）個の条件付き比較命令と、を出力するステップと、
を含む、方法を提供する。
【００３０】
本技法の条件付き比較命令は、１つ以上の論理積または論理和演算を使用して、論理的に組み合わせられる、Ｎ個の比較演算の連鎖シーケンスを表すために使用されてもよい。Ｎ個の比較演算はそれぞれ、個別のオペランドが、所定の基準を満たすかどうかを試験する。本技法の条件付き比較命令によって、異なる基準が、比較演算のそれぞれにおいて試験可能となる。例えば、比較演算のうちの１つは、あるオペランドが、別のオペランドより大きいかどうかを試験することができ、次の比較演算は、あるオペランドが、別のオペランドと等しいかどうかを試験してもよく、さらなる比較演算は、あるオペランドが、別のオペランドと等しくないかどうかを試験してもよい。
【００３１】
用語「基準」は、特定の比較（例えば、Ａ＞Ｂ、またはＣ＝＝Ｄ）によって試験される関係を示すために使用される一方、用語「条件」は、条件付き比較命令の比較演算が、行われるかどうかを制御する試験（例えば、現在の条件状態が、ＨＩ状態であるかどうかを確認するための試験、Ｚフラグが、前の結果がゼロであったことを示すように設定されるかどうかを確認するための試験、またはＮフラグが、前の結果が負であったことを示すように設定されるかどうかを確認するための試験）を示すことに留意されたい。
【００３２】
Ｎ個の比較演算の連鎖シーケンスを表すプログラム命令のシーケンスは、各比較演算に対して、比較命令を生成することによって、ステップ毎に構築されてもよい（Ｎは、１より大きい整数である）。各比較演算は、所定の基準（例えば、Ａ＜Ｂ）を指定し、論理積または論理和演算によって、前の比較演算の部分的連鎖シーケンスの結果にリンクされる。連鎖シーケンス内の第１の比較演算に対して、無条件比較命令が、生成される。ｉ番目の比較演算（ｉは、２とＮとの間の任意の整数である）に対して、条件付き比較命令が、生成され、ｉ番目の条件付き比較命令の試験条件および失敗条件状態は、ｉ番目の比較演算が、論理積演算または論理和演算を使用して、第１から（ｉ−１）番目の比較演算を備える、部分的連鎖シーケンスの結果と論理的に組み合わせられるかどうかに依存する。
【００３３】
ｉ番目の比較演算が、論理積演算を使用して、前の比較演算の部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、ｉ番目の条件付き比較命令は、（ｉ−１）番目の比較の所定の基準が満たされると、試験条件として、条件が合格したと指定し、失敗条件状態として、ｉ番目の比較演算の所定の基準に対応する条件状態が満たされていないと指定する。これは、（ｉ−１）番目の所定の基準が、「失敗」結果をもたらす場合、ｉ番目の条件付き比較命令が、その試験条件に失敗し、したがって、その独自の失敗条件状態を返す一方、（ｉ−１）番目の所定の基準比較演算が、「合格」結果をもたらす場合、ｉ番目の比較演算が、その試験条件に合格し、ｉ番目の所定の基準が満たされたかどうかに応じて、結果の条件状態をもたらすことを確実にする。したがって、ｉ番目および（ｉ−１）番目の比較の組み合わせは、論理積演算のために要求される挙動である、（ｉ−１）番目およびｉ番目の所定の基準の両方が、満たされる場合のみ、合格結果をもたらす。
【００３４】
一方、ｉ番目の比較演算が、論理和演算を使用して、部分的連鎖シーケンスの結果と論理的に組み合わせられる場合、条件付き比較命令は、ｉ番目の比較演算に対応して、生成され、条件付き比較命令は、試験条件として、（ｉ−１）番目の比較演算の所定の基準演算が満たされない時、合格される条件を指定し、失敗条件状態として、満たされている、ｉ番目の比較演算の所定の基準に対応する条件状態を指定する。これは、（ｉ−１）番目の所定の基準が満たされる場合、ｉ番目の条件付き比較命令が、その試験条件に失敗し、したがって、その失敗条件状態として、満たされている、ｉ番目の所定の基準に対応する「合格」条件状態をもたらすことを確実にする。一方、（ｉ−１）番目の比較が、その所定の基準を満たさない場合、ｉ番目の条件付き比較命令が、その試験条件に合格し、したがって、ｉ番目の所定の基準が満たされたかどうかに応じて、結果の条件状態をもたらす。これは、全体的結果が、（ｉ−１）番目およびｉ番目の所定の基準のうちの任意の１つが、満たされる限り、ｉ番目の所定の基準と関連付けられた「合格」条件となることを意味する。これは、論理和演算のために要求される挙動である。
【００３５】
故に、本形式の条件付き比較命令のストリングを生成することによって、比較の連鎖シーケンスは、プログラム命令のシーケンスに変換することができる。次いで、生成された命令のシーケンスが、出力される。
【００３６】
無条件比較命令および条件付き比較命令が生成される時間の順序は、重要ではないことを理解されたい。例えば、命令は、比較演算の連鎖シーケンスに対応する時間の順序で生成され得る（すなわち、カウンタｉは、２からＮにインクリメントされる）。代替として、命令は、連鎖シーケンスの逆の時間の順序（カウンタは、Ｎから２にデクリメントされる）、または任意の他の時間の順序で生成され得る。命令が生成された時間の順序に関わらず、生成された命令のプログラムの順番は、同一であって、第１の命令は、連鎖内の第１の比較演算に対応する無条件比較命令であって、第２の命令は、連鎖内の第２の比較演算に対応する条件付き比較命令等となる。
【００３７】
コンピュータ記憶媒体は、コンピュータによって実行されると、前述のように、プログラム命令のシーケンスをコンパイルする方法を行うように、コンピュータを制御する、コンピュータプログラムを記憶するために提供されてもよい。
【００３８】
別の側面に照らして、本発明は、
（ｉ）処理回路の現在の条件状態が、試験条件に合格する場合、第１のオペランドおよび第２のオペランドに比較演算を行い、現在の条件状態を比較演算の際に生成された結果の条件状態に設定することと、
（ｉｉ）現在の条件状態が、試験条件に失敗する場合、現在の条件状態を条件付き比較命令によって指定された失敗条件状態に設定することと、
を備える、条件付き比較演算を行うように、処理回路を制御するための条件付き比較命令を備える、コンピュータプログラムを記憶する、非一時的コンピュータ記憶媒体を提供する。
【００３９】
次に、本発明の実施形態が、付随の図面を参照して、単なる一例として、説明される。
【図面の簡単な説明】
【００４０】
【図１】データ処理装置を図式的に図示する。
【図２】条件コードフラグの実施形態を図式的に図示する。
【図３Ａ】それぞれ、試験条件、２つのレジスタオペランド、および即失敗条件状態値を指定するためのフィールドを備える、条件付き比較命令の例示的な構文および例示的なエンコーディングを図示する。
【図３Ｂ】それぞれ、試験条件、２つのレジスタオペランド、および即失敗条件状態値を指定するためのフィールドを備える、条件付き比較命令の例示的な構文および例示的なエンコーディングを図示する。
【図４Ａ】それぞれ、オペランドのうちの１つが、即値として指定される、条件付き比較命令の代替の例示的な構文および例示的なエンコーディングを図示する。
【図４Ｂ】それぞれ、オペランドのうちの１つが、即値として指定される、条件付き比較命令の代替の例示的な構文および例示的なエンコーディングを図示する。
【図５】条件付き比較命令を処理するための方法を図示する。
【図６Ａ】それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。
【図６Ｂ】それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。
【図６Ｃ】それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。
【図６Ｄ】それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。
【図６Ｅ】それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。
【図６Ｆ】それぞれ、異なる比較演算に対応する異なる種類の条件付き比較命令を図示する。
【図７Ａ】比較演算の連鎖シーケンスを表す、プログラム命令のシーケンスを生成するための例示的な方法を図示する。
【図７Ｂ】比較演算の連鎖シーケンスを表す、プログラム命令のシーケンスを生成するための例示的な方法を図示する。
【図８】種々の条件状態および各条件状態を表す条件フラグの組み合わせの実施形態を図示する。
【図９】仮想マシン実装を図式的に図示する。
【図１０】条件付き比較命令による排他的使用のための所定の条件状態を含む、条件状態の実施形態を示す。
【図１１】失敗条件状態として、所定の条件状態を指定する条件付き比較命令を使用して、変数Ｘをデータ値の所与の範囲に制約する実施形態を図示する。
【発明を実施するための形態】
【００４１】
図１は、データ処理装置２を図示する。装置２は、処理データを処理するための処理回路４を備える。処理回路は、種々の構成要素、例えば、レジスタバンク６、加算器８、シフタ１０、および乗算器１２を備えてもよい。加算器８、シフタ１０、および乗算器１２は、集合的に、レジスタバンク６内に記憶されたデータを処理し、処理結果をレジスタバンク６に書き込む。処理回路４は、本構成に限定されず、典型的には、簡潔さのために例証されていない多くの他の構成要素を備えることを理解される。データ処理装置２は、プログラム命令に応答してデータを処理するように、処理回路４を制御するための制御信号を生成するデコーダ１４を備える。
【００４２】
データ処理装置２は、処理回路４の少なくとも現在の条件状態を含む、状態データを記憶するための状態記憶装置１５を備える。図１の実施形態では、状態記憶装置１５は、状態レジスタであるが、記憶場所はまた、他の形式の記憶場所を備えてもよい。図１では、状態レジスタ１５は、処理回路４内に図示されているが、他の実施形態では、状態レジスタ１５は、装置２の別の部分内に位置してもよい。一実施形態では、現在の条件状態は、状態レジスタ１５内に記憶される、一式の条件コードフラグによって示される。条件コードフラグは、処理回路４によって生成される、前の処理結果の条件を示す。
【００４３】
図２に示される例示的な実施形態では、状態レジスタ１５の条件コードフラグは、前の処理結果が負の数であったかどうかを示すための負のフラグＮと、前の処理結果がゼロであったかどうかを示すためのゼロのフラグＺと、前の処理結果が生成された時、桁上げが生じたかどうかを示すための桁上げフラグＣと、前の処理結果を生成する時、桁あふれが生じたかどうかを示すための桁あふれフラグＶと、を含む。故に、条件コードフラグの値は、前の処理結果に関する情報を提供する。フラグは、負の数、ゼロ値、桁上げ、または桁あふれが生じたことを示すように設定される、そうでないことを示すようにクリアされる、またはその逆であってもよい。条件コードフラグＮ、Ｚ、Ｃ、Ｖの異なる組み合わせによって表される情報の実施形態については、図８および１０を参照されたい。
【００４４】
図３Ａは、本技法に従う、条件付き比較命令ＣＣＭＰの例示的な構文を図示する。条件付き比較命令は、試験条件、２つのオペランド、および失敗条件状態を指定するためのフィールドを有する。命令デコーダ１４は、条件付き比較命令に応答して、状態レジスタ１５内に記憶された現在の条件状態が、条件付き比較命令と関連付けられた試験条件（ｃｏｎｄ）を満たすかどうか判定するように、処理回路４を制御する。現在の条件状態が、試験条件を満たす場合、処理回路４は、２つのオペランドに比較演算を行い、処理結果に基づいて、現在の条件状態を更新する（例えば、比較演算が、負の値をもたらす場合、条件フラグＮを設定することができる）。条件付き比較命令の実行時の現在の条件状態が、試験条件を満たさない場合、比較演算は、行われず、条件付き比較命令によって指定された失敗条件状態値が、状態レジスタ１５に書き込まれ、現在の条件状態を更新する。
【００４５】
図３Ｂは、図３Ａの条件付き比較命令の例示的なエンコーディングを図示する。本実施形態では、命令は、試験条件を指定するための４ビットフィールドと、オペランドレジスタを指定するための２つの５ビットフィールドと、失敗条件状態を指定するための４ビットフィールドと、を含む。他のビット数が、所望に応じて、各フィールドのために使用されてもよいことを理解される。本実施形態では、４ビット試験条件識別子＃０ｂ００００は、ＥＱ条件を示す。命令が実行されると、条件コードが試験され、ＥＱ試験条件を満たすかどうか確認される。ＥＱ試験条件が満たされる場合、オペランドレジスタ（本実施形態では、レジスタＲ２およびＲ９）内に記憶される値が比較され、条件コードが、比較の結果に基づいて、更新される。ＥＱ試験条件が満たされない場合、失敗条件状態値（本実施形態では、＃０ｂ０００１）が、条件コードＮＺＣＶに書き込まれる。
【００４６】
図３Ａの構文では、条件付き比較命令は、レジスタ指定子Ｒｎ、Ｒｍを使用して、オペランドの両方を指定する。レジスタ指定子Ｒｎ、Ｒｍは、比較されるべきオペランドを記憶する、レジスタバンク６のレジスタを識別する。比較されるべきオペランドは、整数または浮動小数点数であってもよい。
【００４７】
図４Ａに示されるような別の例示的な構文では、オペランド＃ｏｐのうちの１つは、条件付き比較命令内の即値として、指定されてもよい。これは、変数および定数が、相互に比較されるべき時、有用であり得る。図４Ｂは、図４Ａに示される構文を有する命令の例示的なエンコーディングを示す。試験条件（例えば、ＬＴ）が満たされる場合、オペランドレジスタ（例えば、Ｒ７）内に記憶される値は、即値（例えば、＃１９）と比較され、条件コードは、比較に応じて、更新される。試験条件が満たされない場合、失敗条件状態値＃０ｂ００００が、条件コードＮＺＣＶに書き込まれる。
【００４８】
オペランドが、レジスタ指定子を使用して指定される時、命令デコーダ１４は、任意に、レジスタ内に記憶されるオペランドではなく、ゼロペランドを示すように、特定のレジスタ指定子値を解釈するように構成することができる。例えば、図３の実施形態では、レジスタ指定子Ｒｍが、すべて１のビット値０ｂ１１１１１を指定する時、これは、レジスタＲｎ内に記憶されるオペランドが、処理回路４によって、ゼロ値と比較されるべきであることを示すために使用され得る。
【００４９】
図３および４の構文の両方では、失敗条件状態は、試験条件に失敗する場合、状態レジスタ１５の条件コードフラグに書き込まれるべきビット値を表す、即値として指定される。例えば、図２に示されるようなＮＺＣＶ条件コードフラグを使用することによって、０ｂ０１００の失敗条件状態を表す即値は、０が、負、桁上げ、および桁あふれフラグＮ、Ｃ、Ｖに書き込まれるべきであって、１が、ゼロのフラグＺに書き込まれるべきであることを示すことができる。このように、条件付き比較命令は、試験条件に失敗した場合、採用されるべき条件状態を直接指定する。これによって、条件付き比較命令は、現在の条件状態を続く条件付き命令によって使用するために準備ができた適切な値に設定するために使用することを可能にするため、有用である。
【００５０】
図５は、本技法の条件付き比較命令を使用する、データ処理の方法を図示する。ステップ５０では、命令デコーダ１４は、命令のシーケンスの次の命令をデコードする。ステップ６０では、デコーダ１４は、次の命令が、条件付き比較命令であるかどうかを判定する。次の命令が、条件付き比較命令ではない場合、ステップ７０において、命令デコーダ１４は、次の命令に対応する制御信号を生成し、次の命令に対応する演算を行うように、処理回路４を制御する。次いで、処理は、ステップ８０に進み、処理されるべき命令がさらに存在するかどうか判定される。さらなる命令が処理されるべき場合、方法は、ステップ５０に戻り、次の命令がデコードされる。処理されるべき命令がこれ以上存在しない場合、方法は、終了する。
【００５１】
一方、ステップ６０において、次の命令が、条件付き比較命令である場合、命令デコーダ１４は、条件付き比較演算を行うように、処理回路４を制御するための制御信号を生成する。ステップ９０において、処理回路４は、状態レジスタ１５の条件コードフラグによって表される現在の状態が、条件付き比較命令と関連付けられた試験条件に合格するかどうかを判定する。現在の条件状態が、試験条件に合格する場合、ステップ１００において、処理回路４は、第１および第２のオペランドに比較演算を行うように制御される。次いで、ステップ１１０において、状態レジスタ１５が、現在の条件状態を、ステップ１００において、比較演算を行う際に生成された結果の条件状態に設定するように更新される。
【００５２】
一方、ステップ９０において、現在の条件状態が、試験条件に合格しなかった場合、ステップ１２０において、現在の条件状態は、条件付き比較命令によって指定される失敗条件状態に設定される。例えば、条件付き比較命令によって指定された即値は、状態レジスタ１５の条件コードフラグに書き込まれる。
【００５３】
現在の条件状態が、ステップ９０において、試験条件に合格したかどうかに関わらず、方法は、ステップ８０に進み、処理されるべきさらなる命令が存在するかどうか判定される。別の命令が処理されるべき場合、方法は、再び、ステップ５０に戻る。そうでなければ、方法は、終了する。
【００５４】
図５は、条件付き比較命令の現在の条件状態が、試験条件に合格するかどうかに関わらず、現在の条件状態を表す条件コードフラグが更新されることを示す（試験条件に失敗する場合、ｎｏ−ｏｐ命令として作用する、前の条件付き命令とは対照的に）。現在の条件状態の更新された値は、現在の条件状態が、試験条件に合格するかどうかに依存する。現在の条件状態が、試験条件に合格する場合、更新される条件状態は、第１および第２のオペランドを比較する結果に基づいて判定される一方、現在の条件状態が、試験条件に合格しなかった場合、更新される値は、条件付き比較命令によって指定された失敗条件状態となる。本種類の命令は、現在の条件状態が、試験条件に合格しなかった場合、現在の条件状態が更新されるべき失敗条件状態を指定するための能力によって、これらの命令が、異なる種類の論理関係を試験する、一連の連鎖比較演算を表すために使用可能となるため、有用である。
【００５５】
それぞれ、ステップ９０〜１２０（図５）に従って処理されるが、ステップ１００において、異なる比較演算を使用する、種々の種類の条件付き比較命令が、提供されてもよい。これらの種類の条件付き比較命令の実施形態は、図６Ａから６Ｆに示される。図６Ａから６Ｆは、第１および第２のオペランドが、レジスタ指定子を使用して識別される、形式の命令を図示するが、オペランドの１つが、即値として指定される、これらの命令のそれぞれの代替形式もまた、提供することができる。また、これらの命令の構文は、以下に説明されるように、即値＃ｉｍｍとしてではなく、所望に応じて、条件ニーモニックとして、失敗条件状態を指定するように、修正することができる。
【００５６】
図６Ａは、条件付き比較肯定命令ＣＣＭＰを図示する。条件付き比較肯定命令によって指定される試験条件を合格する場合、処理回路４は、第２のオペランドを第１のオペランドから減算し、結果の条件状態を条件フラグに書き込むように制御される一方、試験条件に失敗する場合、命令内で指定された失敗条件状態＃ｉｍｍが、条件フラグに書き込まれる。本種類の命令は、第１のオペランドが、第２のオペランド以上であるかどうかを試験するために有用であり得る。
【００５７】
図６Ｂは、条件付き比較否定命令ＣＣＭＮを図示する。命令によって指定される試験条件が、現在の条件状態によって合格される場合、第１および第２のオペランドは、ともに加算され、結果の条件状態が、条件フラグに書き込まれる一方、現在の条件状態が、試験条件に合格しない場合、失敗条件状態＃ｉｍｍは、条件フラグに書き込まれる。本種類の命令は、第１のオペランドが、第２のオペランドを−１で乗算することによって得られる値より大きいかどうかを試験するために有用であり得る（第１および第２のオペランドを加算することは、（−１＊第２のオペランド）を第１のオペランドから減算することと同等であるため）。
【００５８】
図６Ｃは、条件付き等価試験命令ＣＴＥＱを図示する。本種類の命令が、実行される時、命令によって指定される試験条件を合格する場合、処理回路４は、第１および第２のオペランドに排他的論理和演算を行い、結果の条件状態を条件フラグに書き込むように構成される一方、試験条件に失敗する場合、命令によって指定される失敗条件状態＃ｉｍｍは、条件フラグに書き込まれる。本種類の命令は、第１のオペランドが、第２のオペランドに等しいかどうかを試験するために使用することができる。
【００５９】
図６Ｄは、条件付きビット試験命令ＣＴＳＴを図示する。本種類の命令が実行される時、試験条件を合格する場合、処理回路４は、第１および第２のオペランドにビット論理積演算を行い、結果の条件状態を条件フラグに書き込む一方、試験条件に失敗する場合、失敗条件状態＃ｉｍｍが、条件フラグに書き込まれる。本種類の命令は、第２のオペランド内の「１」ビットの位置に対応する第１のオペランドのビットがすべてゼロである、またはすべてゼロではないかどうかを試験するために使用することができる。特に有用なケースは、第２のオペランドが、きっかり１つの「１」ビットを含む時、および命令が、第１のオペランドの対応するビットが「０」または「１」かどうか試験する時である。
【００６０】
図６Ｅは、桁上げを伴う条件付き加算命令ＣＡＤＣを図示する。本命令が実行される時、試験条件を合格する場合、処理回路４は、第１のオペランド、第２のオペランド、および状態レジスタ１５内の桁上げフラグＣの現在の値を加算し、本加算から生じる結果の条件状態を条件フラグに書き込むように制御される。一方、試験条件に失敗する場合、失敗条件状態＃ｉｍｍは、他の種類の条件付き比較命令に関して、条件フラグに書き込まれる。加算桁上げ演算は、マルチワード加算の第２、第３、またはさらなるワードを表すために使用することができ、桁上げビットは、マルチワード加算の前のワードが、桁上げをもたらしたかどうかを示す。
【００６１】
図６Ｆは、実行されると、第１および第２のオペランドのビット論理和を行うように（但し、試験条件に合格することを条件とする）、処理回路４を制御する、条件付きビット論理和試験命令ＣＯＲＲＴを図示する。ビット論理和から生じる結果の条件状態は、条件フラグに書き込まれる。一方、試験条件に失敗する場合、失敗条件状態＃ｉｍｍは、条件フラグに書き込まれる。そのような命令は、２つのレジスタ両方とも、ゼロ値を記憶するかどうかを試験するために使用することができる。これは、特に、倍幅データ値が、ゼロに等しいかどうか試験するために有用であり得る。例えば、倍幅１２８ビット値ＲｎＨｉ／Ｌｏは、２つの６４ビットレジスタＲｎＨｉおよびＲｎＬｏを使用して、記憶することができる。倍幅値の上位および下位部のビット論理和は、両方の部分がゼロに等しい場合のみゼロ値を有するため、ビット論理和試験命令によって、ダブル値の半分の両方とも、単一命令を使用して、ゼロに対して試験可能となる。これは、ゼロに対して倍幅値の各部分を個々に比較するより効率的であり得る。故に、形式（ＲｎＨｉ／Ｌｏ！＝０）＆＆（ＲｍＨｉ／Ｌｏ＝＝０）の式は、２つの命令を使用して、効率的に評価することができる。
ＯＲＲＴ  ＲｎＨｉ，ＲｎＬｏ；  ／／Ｚ＝１  ｉｆ  ＲｎＨｉ／Ｌｏ＝０，ａｎｄ  Ｚ＝０  ｏｔｈｅｒｗｉｓｅ）
ＣＯＲＲＴ  ＮＥ，ＲｍＨｉ，ＲｍＬｏ，＃０  ／／Ｚ＝１  ｉｆ（ＯＲＲＴ  ｓｅｔ  Ｚ  ｔｏ  ０  ＡＮＤ  ＲｍＨｉ／Ｌｏ＝０），／／Ｚ＝０  ｏｔｈｅｒｗｉｓｅ
【００６２】
任意の特定の実施形態では、命令デコーダは、これらの命令のうちの任意の１つ以上に応答して、対応する種類の条件付き比較演算を行うように、処理回路４を制御してもよいことを理解される。例えば、特定の実施形態では、デコーダ１４は、他の種類の条件付き比較命令ではなく、例えば、図６Ａおよび６Ｂに示される種類の条件付き比較命令に応答するように構成され得る。
【００６３】
一連の条件付き比較命令は、比較演算の連鎖シーケンスを表すために使用することができ、シーケンス内の各比較演算は、論理積または論理和演算（例えば、シーケンス（Ａ＜Ｂ＆＆Ｃ＝＝Ｄ）｜｜Ｅ＞＝Ｆ）を使用して、すべての前の比較演算の組み合わせられた結果と論理的に組み合わせられる。各比較演算は、特定の基準を試験する（例えば、前述の実施形態では、第１の比較演算は、Ａ＜Ｂかどうかの基準を試験し、第２の比較演算は、Ｃ＝Ｄかどうかの基準を試験し、第３の比較演算は、Ｅ＞Ｆかどうかの基準を試験する）。以前に周知の条件付き命令と異なり、本技法の条件比較命令は、連鎖比較演算が、２つ以上の種類の基準を試験する時に使用することができる。
【００６４】
図７Ａおよび７Ｂは、比較演算の特定の連鎖シーケンスを比較命令のシーケンスに変換するための方法の実施形態を示す。そのような方法は、例えば、比較演算のシーケンスを定義する入力を受信し、プログラム命令の対応するシーケンスを生成する、コンパイラによって、行うことができる。
【００６５】
図７Ａは、そのような方法の第１の実施形態を図示する。ステップ２００では、Ｎ個の比較演算の連鎖シーケンスを定義するデータが、入力される（Ｎは、１より大きい任意の整数である）。ステップ２０２では、カウント変数ｉは、Ｎに等しくなるように設定される。ステップ２０４では、連鎖シーケンスのｉ番目の比較を連鎖シーケンスの第１から（ｉ−１）番目の比較の組み合わせられた結果と組み合わせる、論理演算が、論理積または論理和演算であるかどうか判定される。例えば、シーケンス（Ａ＜Ｂ＆＆Ｃ＝＝Ｄ）｜｜Ｅ＞＝Ｆでは、ｉ＝３の時、シーケンス（Ｅ＞＝Ｆ）のｉ番目の比較は、論理和演算｜｜を介して、１番目から（ｉ−１）番目の比較（Ａ＜Ｂ＆＆Ｃ＝＝Ｄ）の組み合わせに連鎖され、ｉ＝２の時、シーケンス（Ｃ＝＝Ｄ）のｉ番目の比較は、論理積演算＆＆を介して、（ｉ−１）番目の比較（Ａ＜Ｂ）に連鎖される。
【００６６】
ステップ２０４において、ｉ番目の比較演算および第１から（ｉ−１）番目の比較演算の部分的連鎖が、論理積演算によってリンクされていると判定される場合、ステップ２０６において、条件付き比較命令が、ｉ番目の比較演算のために生成され、試験条件ｃｏｎｄは（ｉ−１）番目の比較が、その所定の基準を満たす時、合格される条件に設定され、失敗条件状態値は、満たされていない、ｉ番目の比較の基準に対応する、任意の値に設定される。
【００６７】
例えば、前述の実施形態において、ｉ＝２の時、（ｉ−１）番目の比較（Ａ＜Ｂ）が、その所定の基準を満たす時、合格される条件は、これが、Ａ＜Ｂであることを示すため、条件ＬＴである（図８参照−符号付き比較を仮定する）。故に、第２の条件付き比較命令演算のための試験条件は、ＬＴである。また、ｉ＝２の場合、ｉ番目の比較（Ｃ＝＝Ｄ）の基準は、ＣがＤと等しくない、すなわち、Ｚフラグが設定されない、図８に示されるＮＥ状態である時、満たされない。故に、ｉ番目の条件付き比較命令の失敗条件状態値は、クリアであるＺフラグをもたらす、値の任意の組み合わせに設定することができる（例えば、０ｂ００００）。
【００６８】
一方、ステップ２０４において、ｉ番目の比較演算および第１から（ｉ−１）番目の比較演算の部分的連鎖を組み合わせる論理演算が、論理和演算である場合、ステップ２０８において、条件付き比較命令が、ｉ番目の比較演算のために生成され、試験条件は、（ｉ−１）番目の比較演算が、その基準を満たさない時、合格される条件に設定され、失敗条件状態値は、満たされている、ｉ番目の比較の基準に対応する任意の値に設定される。
【００６９】
例えば、前述の例示的なシーケンスにおいて、ｉ＝３の場合、（ｉ−１）番目の比較演算（Ｃ＝＝Ｄ）が、その基準を満たさない時、合格される条件は、図８の状態ＮＥであって、したがって、第３の条件付き比較演算のための試験条件は、ＮＥに設定される。また、ｉ＝３の場合、ｉ番目の比較（Ｅ＞＝Ｆ）のための基準は、Ｅが、Ｆ以上である時（例えば、割り当てられた比較のためのＧＥ状態において−図８参照）、満たされる。故に、失敗条件状態値は、ＧＥ状態に対応する、条件フラグ値の任意の組み合わせに設定することができる（例えば、図８を参照すると、ビットＮおよびＶは、同一であって、すべての他のビットは、任意の値−例えば、０ｂ００００を有し得る）。
【００７０】
論理演算が、論理積または論理和演算であったかどうかに関わらず、ステップ２１０において、カウント変数ｉが、判定され、ステップ２１２において、新しいカウント変数ｉが、２以上であるかどうか判定される。新しいカウント変数ｉが、２以上である場合、ステップ２０４から２１２は、別の条件付き比較命令が、別の比較演算のために生成されるように、ｉの新しい値のために反復される。このように、条件付き比較命令は、連鎖シーケンスの第２からＮ番目の比較演算のそれぞれのために生成される。
【００７１】
ステップ２１２において、ｉが、２より小さい場合、方法は、ステップ２１４に進み、無条件比較命令が、連鎖シーケンスの第１の比較のために生成される。例えば、前述のシーケンスでは、次いで、無条件比較命令が、生成され、Ａ＜Ｂであるかどうか判定し、比較結果に従って、条件コードフラグを更新する。ステップ２１６では、すべての生成された命令は、比較演算の連鎖シーケンスを表す、命令のシーケンスを形成するように、生成の逆の順序で出力される。
【００７２】
図７Ｂは、比較演算に対応する命令のシーケンスを生成する方法の代替実施形態を図示する。図７Ａの対応するステップと同じ、図７Ｂのステップは、図７Ａと同一参照番号を使用して、標識されている。図７Ｂは、命令が、図７Ａにおけるように、逆の順序ではなく、連鎖シーケンス内の対応する比較演算の順序で生成されるという点において、図７Ａと異なる。連鎖シーケンスの第１の比較演算のための無条件比較命令は、図７Ｂのステップ２１４において生成される。次いで、カウント変数ｉは、ステップ２２０において、２の値に初期化される。次いで、図７Ａの対応するステップと同じ、ステップ２０４から２０８が、ｉ番目の比較演算のために行われ、ｉが、ステップ２２６において、Ｎより大きくなるまで、Ｉが、ステップ２２２において、連続的にインクリメントされる間、反復される。これは、条件付き比較命令が、連鎖内の第２からＮ番目の比較演算のために生成されることを意味する。ｉが、Ｎより大きくなると、ステップ２３０において、生成された命令が、ステップ２３０において、生成の順序で出力され、プログラム命令のシーケンスを形成する。
【００７３】
図７Ａおよび７Ｂから分かるように、第１の比較演算のための無条件比較命令および第２からΝ番目の比較演算のための条件付き比較命令が生成される順序は、条件付き比較命令が、第２からΝ番目の比較演算のそれぞれのために生成され、無条件比較命令が、第１の比較演算のために生成され、および生成される命令が、正しいプログラム順序で出力される限り、特に、重要ではない。図７Ａおよび７Ｂに示されるもの以外の生成順序もまた、可能であることは、当業者によって理解される。
【００７４】
図７Ａおよび７Ｂのステップ２１４において生成された無条件比較命令は、条件付き命令に対して、異なる構文を有する、命令であってもよい。例えば、無条件比較命令は、命令デコーダが、オペランドを比較し比較結果に従って、条件コードフラグＮＺＣＶを更新するために、処理回路４を制御するための制御信号を生成するように、２つのオペランドを指定する構文を有してもよい。無条件比較命令構文は、図３、４、または６に示される、条件付き比較命令構文の試験条件および失敗条件状態を省略してもよい。図８のＡＬ（常時、合格される）条件状態は、そのような実施形態では、省略されてもよい。
【００７５】
代替として、無条件比較命令および条件付き比較命令は、共通の構文を有してもよく、無条件比較命令は、試験条件ｃｏｎｄを、条件フラグの値に関わらず、常時、満たされる条件状態に設定することによって、図３、４、および６のうちのいずれかに示される、条件付き比較命令構文から形成される。例えば、無条件命令に対して、試験条件ｃｏｎｄは、命令が、常時、その条件コードに合格するように（この場合、失敗条件状態は、決して必要とされないため、任意の値に設定されてもよい）、図８の「常時」条件状態ＡＬと等しくなるように設定され得る。故に、同一種類の命令構文は、その命令のために指定する試験条件に応じて、無条件比較命令および条件付き比較命令の両方として、使用することができる。これは、命令エンコーディング空間の使用の効率を改善することができる。
【００７６】
図８は、それぞれ、特定の条件サフィックス（または、条件「ニーモニック」）によって指定される、特定の条件状態を表す、条件コードフラグの異なる組み合わせを示す、表を図示する。例えば、ＰＬ状態は、前の処理結果が、正またはゼロのいずれかであったことを示し、クリアである、「Ｎ」条件フラグによって指定される。故に、ＮＺＣＶビット値０ｂ０ｘｘｘ（ここでは、ｘは、０または１のいずれか）の任意の組み合わせは、Ｎ個のビットクリアを有し、したがって、ＰＬ状態を示すことができる。
【００７７】
図７Ａおよび７Ｂの方法は、以下により詳細に説明される。
【００７８】
以下の個々の比較の「連鎖」シーケンスである、「ｉｆ」試験を有すると仮定する。
ｉｆ（（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）＆＆ｃ＞ｄ）
ここでは、実施形態の目的のため、ｓ、ｔ、およびｕが、符号付き変数であって、ａ、ｂ、ｃ、およびｄが、符号なし変数であることのみ仮定する（これらは、等しく、符号なし変数であり得る）。
【００７９】
そのような「連鎖」シーケンスのためのコードシーケンスを生成するための好適なルールセットは、以下である。
１．  結果は、常時、「連鎖」内の最終の個々の比較のための好適な条件によって、反映される。
２．  連鎖「シーケンス」が、単一個々の比較のみ含む場合、その２つのオペランドに無条件比較（ＣＭＰ）命令を使用する（図７Ａおよび７Ｂのステップ２１４参照）。無条件比較命令は、比較結果に応じて、図８の条件状態のうちの１つをもたらすように定義される。
３．  そうでなければ、連鎖シーケンスは、ある付加的個々の比較と論理積または論理和演算される、より短い連鎖シーケンスから成る。
４．  連鎖シーケンスが、ある付加的比較と論理積演算される、より短い連鎖シーケンスから成る場合、（図７Ａおよび７Ｂのステップ２０６参照）より短い連鎖シーケンスのための命令シーケンスをもたらし、以下をさらに付け加える。
ＣＣＭＰｃｏｎｄ，ｏｐ１，ｏｐ２，＃ｉｍｍ
ここでは、ｃｏｎｄは、合格する時、より短い連鎖シーケンスによってもたらされる条件であって、ｏｐ１およびｏｐ２は、付加的比較のための２つのオペランドであって、ｉｍｍは、付加的比較からの所望の「失敗」結果に対応する、Ｎ、Ｚ、Ｃ、Ｖ条件フラグ値の任意のセットである。
これは、より短い連鎖シーケンスが、その「失敗」条件をもたらす場合、付加的比較が、その独自の「失敗」条件をもたらし、より短い連鎖シーケンスが、その「合格」条件をもたらす場合、付加的比較が、付加的比較において、論理積演算を行うための正しい挙動である、個々の試験の結果に応じて、その独自の「失敗」結果またはその独自の「合格」結果のいずれかをもたらすことを確実にする。
５．  連鎖シーケンスが、付加的比較と論理和演算される、より短い連鎖シーケンスから成る場合、（図７Ａおよび７Ｂのステップ２０８参照）より短い連鎖シーケンスのための命令シーケンスをもたらし、以下をさらに付け加える
ＣＣＭＰｃｏｎｄ，ｏｐ１，ｏｐ２，＃ｉｍｍ
ここでは、ｃｏｎｄは、失敗される時、より短い連鎖シーケンスによってもたらされる条件であって、ｏｐ１およびｏｐ２は、付加的比較のための２つのオペランドであって、
ｉｍｍは、付加的比較からの所望の「合格」結果に対応する、Ｎ、Ｚ、Ｃ、Ｖ条件フラグ値の任意のセットである。
より短い連鎖シーケンスが、その「合格」条件をもたらす場合、付加的比較が、その独自の「合格」条件をもたらし、より短い連鎖シーケンスが、その「失敗」条件をもたらす場合、付加的比較は、付加的比較内で論理和演算を行うための正しい挙動である、個々の試験の結果に応じて、その独自の「失敗」結果またはその独自の「合格」結果のいずれかをもたらすことを確実にする。
【００８０】
（（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）＆＆ｃ＞ｄ）のためのコードシーケンスを生成する前述の実施形態に対して、これを示す。
【００８１】
シーケンスの最終比較は、符号なし＞であって、したがって、ルール１に従って、合格する（すなわち、真である）場合、図８のＨＩ条件をもたらし、失敗する（すなわち、偽である）場合、図８のＬＳ条件をもたらすことを目的とする。故に、目的は、以下となる。
．．．コードシーケンスについては未定．．．
／／Ｎｏｗ  ｈａｖｅ  ＨＩ  ｉｆ（（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）＆＆ｃ＞ｄ）
／／ｉｓ  ＴＲＵＥ，ＬＳ  ｏｔｈｅｒｗｉｓｅ
【００８２】
連鎖シーケンス（（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）＆＆ｃ＞ｄ）は、付加的比較ｃ＞ｄと論理積演算される、より短い連鎖シーケンス（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）である。前述のルール４に従う。
＊より短い連鎖シーケンスは、その最終比較として、ａ！＝試験を有し、したがって、合格する場合、ＮＥ条件をもたらす。
＊付加的比較の所望の「失敗」結果は、ＬＳ＝（Ｃ＝０）｜｜（Ｚ＝１）である。
その条件を満たす、フラグのＮＺＣＶセットの任意の値、例えば、ＮＺＣＶ＝０ｂ００００を取り上げる。
次いで、コードシーケンスは、以下に対して、１つのステップで展開することができる。
．．．コードシーケンスについては未定．．．
／／Ｎｏｗ  ｈａｖｅ  ＮＥ  ｉｆ（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）ｉｓ  ＴＲＵＥ，ＥＱ
／／ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＮＥ，Ｒｃ，Ｒｄ，＃０ｂ００００
／／Ｎｏｗ  ｈａｖｅ  ＨＩ  ｉｆ（（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）＆＆ｃ＞ｄ）
／／ｉｓ  ＴＲＵＥ，ＬＳ  ｏｔｈｅｒｗｉｓｅ
【００８３】
連鎖シーケンス（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）は、付加的比較ａ！＝ｂと論理和演算される、より短い連鎖シーケンス（ｓ＝＝ｔ＆＆ｕ＞＝０）である。前述のルール５に従う。
＊より短い連鎖シーケンスは、その最終比較として、符号付き＞＝試験を有し、したがって、失敗する場合、ＬＴ条件をもたらす。
＊付加的比較の所望の「合格」結果は、ＮＥ＝（Ｚ＝＝０）である。その条件を満たすフラグのＮＺＣＶセットの任意の値、例えば、ＮＺＣＶ＝０ｂ００００を取り上げる。
次いで、コードシーケンスは、以下に対して、第２のステップで展開することができる。
．．．コードシーケンスについては未定．．．
／／Ｎｏｗ  ｈａｖｅ  ＧＥ  ｉｆ（ｓ＝＝ｔ＆＆ｕ＞＝０）ｉｓ  ＴＲＵＥ、ＬＴ  ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＬＴ，Ｒａ，Ｒｂ，＃０ｂ００００
／／Ｎｏｗ  ｈａｖｅ  ＮＥ  ｉｆ（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）ｉｓ  ＴＲＵＥ，ＥＱ
／／ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＮＥ，Ｒｃ，Ｒｄ，＃０ｂ００００
／／Ｎｏｗ  ｈａｖｅ  ＨＩ  ｉｆ（（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）＆＆ｃ＞ｄ）
／／ｉｓ  ＴＲＵＥ，ＬＳ  ｏｔｈｅｒｗｉｓｅ
【００８４】
連鎖シーケンス（ｓ＝＝ｔ＆＆ｕ＞＝０）は、付加的比較ｕ＞＝０と論理積演算される、より短い連鎖「シーケンス」ｓ＝＝ｔである。前述のルール４に従う。
＊より短い連鎖シーケンスは、その最終比較として、＝＝試験を有し、したがって、合格する場合、ＥＱ条件をもたらす。
＊付加的比較の所望の「失敗」結果は、ＬＴ＝（Ｎ！＝Ｖ）である。その条件を満たす、フラグのＮＺＣＶセットの任意の値、例えば、ＮＺＣＶ＝０ｂ０００１を取り上げる。
次いで、コードシーケンスは、以下に対して、第３のステップで展開することができる。
．．．コードシーケンスについては未定．．．
／／Ｎｏｗ  ｈａｖｅ  ＥＱ  ｉｆ  ｓ＝＝ｔ  ｉｓ  ＴＲＵＥ，ＮＥ  ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＥＱ，Ｒｕ，＃０，＃０ｂ０００１
／／Ｎｏｗ  ｈａｖｅ  ＧＥ  ｉｆ（ｓ＝＝ｔ＆＆ｕ＞＝０）ｉｓ  ＴＲＵＥ，ＬＴ  ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＬＴ，Ｒａ，Ｒｂ，＃０ｂ００００
／／Ｎｏｗ  ｈａｖｅ  ＮＥ  ｉｆ（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）ｉｓ  ＴＲＵＥ，ＥＱ
／／ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＮＥ，Ｒｃ，Ｒｄ，＃０ｂ００００
／／Ｎｏｗ  ｈａｖｅ  ＨＩ  ｉｆ（（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！−ｂ）＆＆ｃ＞ｄ）
／／ｉｓ  ＴＲＵＥ，ＬＳ  ｏｔｈｅｒｗｉｓｅ
【００８５】
最後に、連鎖「シーケンス」ｓ＝＝ｔは、単一比較のみであって、したがって、前述のルール２に従って、前述のように、それに対して、無条件比較命令を使用する。これは、フルコードシーケンスをもたらす。
ＣＭＰ  Ｒｓ，Ｒｔ
／／Ｎｏｗ  ｈａｖｅ  ＥＱ  ｉｆ  ｓ＝＝ｔ  ｉｓ  ＴＲＵＥ，ＮＥ  ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＥＱ，Ｒｕ，＃０、＃０ｂ０００１
／／Ｎｏｗ  ｈａｖｅ  ＧＥ  ｉｆ（ｓ＝＝ｔ＆＆ｕ＞−０）ｉｓ  ＴＲＵＥ，ＬＴ  ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＬＴ，Ｒａ，Ｒｂ，＃０ｂ００００
／／Ｎｏｗ  ｈａｖｅ  ＮＥ  ｉｆ（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）ｉｓ  ＴＲＵＥ，ＥＱ
／／ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＮＥ，Ｒｃ，Ｒｄ，＃０ｂ００００
／／Ｎｏｗ  ｈａｖｅ  ＨＩ  ｉｆ（（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）＆＆ｃ＞ｄ）
／／ｉｓ  ＴＲＵＥ，ＬＳ  ｏｔｈｅｒｗｉｓｅ
【００８６】
前述の技法は、所望の論理式を、式を評価するためのプログラム命令のシーケンスに変換するために、コンパイラによって行われてもよい。命令は、正しいプログラム順序で出力される限り、任意の特定の順序で判定または生成される必要はなく、したがって、生成方法の異なる実施形態も可能である（図７Ａおよび７Ｂ参照）。
【００８７】
前述の実施形態では、失敗条件状態は、状態レジスタ１５内の条件コードに書き込まれるべきビット値の組み合わせを指定する即値として、命令構文によって指定される。
【００８８】
しかしながら、代替として、構文は、図８に示されるように、ＨＩ、ＬＳ、ＰＬ等の条件ニーモニック（サフィックス）として、失敗条件状態を指定することができる。この命令形式では、次いで、プログラマは、失敗条件状態に所望される条件ニーモニックを指定してもよく、アセンブラは、命令をアセンブルする時、これを特定の即値に変換してもよい。故に、命令デコーダ１４の観点から、命令の視点は、他の実施形態と同一であるが、プログラマの視点から、命令構文は、異なる条件状態の意味が、条件コード値からより、ニーモニックからより明白に理解することができるため、より直感的である。
【００８９】
特定の条件ニーモニックに応答して、アセンブラは、ニーモニックによって示される条件状態を保持させるように、条件フラグに書き込むことができる、任意の失敗条件状態値を選択してもよい。同一条件に対応する複数の可能性として考えられる即値が存在する場合、アセンブラは、条件に対応する値を選択するためのルールが提供されてもよい。例えば、アセンブラは、ソースコードが、毎回、同様にアセンブルされることを確実にするために、最大または最小利用可能値を選択し得る。例えば、図８では、ＥＱ状態を満たす最大可能値は、０ｂ１１１１である（Ｚビットセットを伴う）。
【００９０】
したがって、失敗条件状態が、条件ニーモニックとして指定される実施形態では、前述の実施形態で判定される最終命令シーケンスは、以下のように現れ得る。
ＣＭＰ  Ｒｓ，Ｒｔ
／／Ｎｏｗ  ｈａｖｅ  ＥＱ  ｉｆ  ｓ＝＝ｔ  ｉｓ  ＴＲＵＥ，ＮＥ  ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＥＱ，Ｒｕ，＃０、ＬＴ
／／Ｎｏｗ  ｈａｖｅ  ＧＥ  ｉｆ（ｓ＝＝ｔ＆＆ｕ＞＝０）ｉｓ  ＴＲＵＥ，ＬＴ  ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＬＴ，Ｒａ，Ｒｂ，ＮＥ
／／Ｎｏｗ  ｈａｖｅ  ＮＥ  ｉｆ（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）ｉｓ  ＴＲＵＥ，ＥＱ
／／ｏｔｈｅｒｗｉｓｅ
ＣＣＭＰ  ＮＥ，Ｒｃ，Ｒｄ，ＬＳ
／／Ｎｏｗ  ｈａｖｅ  ＨＩ  ｉｆ（（（ｓ＝＝ｔ＆＆ｕ＞＝０）｜｜ａ！＝ｂ）＆＆ｃ＞ｄ）
／／ｉｓ  ＴＲＵＥ，ＬＳ  ｏｔｈｅｒｗｉｓｅ
【００９１】
図９は、使用され得る、仮想マシン実装を図示する。前述の実施形態は、当該技法をサポートする、具体的処理ハードウェアを動作させるための装置および方法の観点から、本発明を実装するが、また、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム５１０をサポートする、ホストオペレーティングシステム５２０を起動する、ホストプロセッサ５３０上で起動する。典型的には、大型の強力なプロセッサが、合理的速度で実装する、仮想マシン実装を提供するために要求されるが、そのようなアプローチは、互換性または再利用の理由から、別のプロセッサにネイティブなコードを起動することが所望される時等、ある状況において、正当化され得る。仮想マシンプログラム５１０は、仮想マシンプログラム５１０によってモデル化されているデバイスである、実際のハードウェアによって提供される、アプリケーションプログラムインターフェースと同一である、アプリケーションプログラム５００に、アプリケーションプログラムインターフェースを提供する。したがって、前述のメモリアクセスの制御を含む、プログラム命令は、仮想マシンプログラム５１０を使用して、仮想マシンハードウェアとのその相互作用をモデル化する、アプリケーションプログラム５００内から実行されてもよい。
【００９２】
図１０は、図８に示される条件状態に対する、任意の拡張子を示す。図１０の実施形態では、処理回路４は、条件付き比較命令による排他的使用のためのものである、所定の条件状態ＭＺを含む、いくつかの異なる条件状態のいずれかに設定することができる。処理装置は、通常処理演算の結果として、ＭＺ条件状態に置くことはできない。ＭＺ条件状態は、その失敗条件状態として、ＭＺ条件状態を指定する条件付き比較命令が、その試験条件に失敗する場合のみ、生じる。図１０の実施形態では、ＭＺ状態は、設定されている、ＮおよびＺフラグによって表され、「−ゼロ(マイナスゼロ)」結果を示す。「−ゼロ」結果は、ゼロおよび負の両方ではなく、ゼロまたは負のいずれかである、結果を生成するため、通常処理演算から生じることができない。図１０はまた、ＭＺ状態の逆数を示す、ＯＫ状態を示す。故に、ＯＫ状態は、ＮおよびＺフラグのいずれかがクリアである場合、満たされる。
【００９３】
ＭＺ状態は、命令に、先の条件付き比較命令が、その試験条件に合格または失敗したかどうかを試験させるため、有用である。失敗条件状態として、ＭＺ状態を指定する条件付き比較命令が、実行されてもよい。次いで、後続条件付き命令は、条件フラグが、ＭＺ状態またはＯＫ状態にあるかどうか試験してもよい。条件フラグが、ＭＺ状態にある場合、条件付き比較命令は、その試験条件に失敗する一方、条件フラグが、ＯＫ状態にある場合、条件付き比較命令は、その試験条件に合格する。
【００９４】
図１１は、失敗条件状態として、ＭＺ状態を指定する条件付き比較命令が、どのように、変数Ｘを所与の範囲ＢＯＴからＴＯＰ内に制約するために使用することができるかの実施形態を示す。Ｘが、許容可能範囲ＢＯＴからＴＯＰ内にある場合、Ｘは、その元の値を留保する。Ｘが、ＴＯＰより大きい場合、Ｘは、ＴＯＰに等しく設定される一方、Ｘが、ＢＯＴより小さい場合、Ｘは、ＢＯＴに等しく設定される。故に、Ｘは、その最大可能性値がＴＯＰであって、その最小可能値がＢＯＴであるように、制約される。
【００９５】
図１１は、Ｘの値における本制約を実装するための例示的な命令のシーケンスを示す。最初に、比較命令ＣＭＰ  Ｘ、ＴＯＰが実行され、ＸおよびＴＯＰの値の比較をトリガする。次いで、条件フラグは、比較の結果に基づいて、更新される。Ｘ＜ＴＯＰの場合、条件フラグは、ＬＴ条件状態に設定される一方、Ｘ≧ＴＯＰの場合、条件フラグは、ＧＥ条件状態に設定される。
【００９６】
次に、条件付き比較命令ＣＣＭＰ  ＬＴ、Ｘ、ＢＯＴ、ＭＺが実行される。ＬＴ試験条件に合格する場合、ＸおよびＢＯＴが比較され、条件フラグが、比較結果に基づいて、ＬＴおよびＧＥ条件状態のうちの１つに更新される。一方、ＬＴ試験条件に失敗する場合、条件フラグは、ＭＺ状態に置かれる。
【００９７】
次に、条件付き選択命令ＣＳＥＬ、ＭＺ、Ｘ、ＴＯＰ、Ｘが実行される。ＭＺ試験条件に合格する場合、Ｘは、ＴＯＰの値を有するように選択される一方、そうでなければ、Ｘは、その元の値を留保する。最後に、条件付き選択命令ＣＳＥＬ  ＬＴ、Ｘ、ＢＯＴ、Ｘが実行される。ＬＴ試験条件に合格する場合、Ｘは、ＢＯＴの値を有するように選択される一方、そうでなければ、Ｘは、その元の値を留保する。
【００９８】
図１１は、Ｘ＜ＢＯＴ、ＢＯＴ≦Ｘ≦ＴＯＰ、およびＴＯＰ≦Ｘである場合のＸの可能性として考えられる結果を示す。ＭＺ状態は、ＣＣＭＰ命令が、その試験条件（ＬＴ）に失敗する結果としてのみ生じ得るため、ＭＺ状態の発生は、Ｘ≧ＴＯＰを示す。ＭＺ状態が、生じなかった場合、ＣＣＭＰは、その試験条件に合格し、したがって、Ｘ＜ＴＯＰである。次いで、Ｘが、ＢＯＴ未満である、またはＢＯＴ以上であるかどうかが、ＬＴまたはＧＥ条件状態が、ＣＣＭＰ命令の実行後に生じたかどうかから判定することができる。
【００９９】
図１０および１１は、その試験条件に失敗する条件付き比較命令によってのみ設定することができる、条件状態が、ＭＺ「−ゼロ」状態であって、ＮおよびＺフラグの両方とも設定される、実施形態を示す。しかしながら、他の実施形態では、通常処理の際に生じることができない、条件フラグ値の任意の組み合わせが、ＭＺ状態の代わりに、使用されてもよい。
【０１００】
図１０の実施形態では、ＭＺ状態は、図８に示される「常時」ＡＬ状態を置換し、４ビット識別子を使用して識別することができる、合計１６個の利用可能条件状態を提供する。他の実施形態では、ＡＬ状態およびＭＺ状態の両方が、提供されてもよいことを理解される。
【０１０１】
本発明の例証的実施形態が、付随の図面を参照して、本明細書において、詳細に説明されたが、本発明は、それらの詳細な実施形態に限定されず、種々の変更および修正が、添付の請求項によって定義される、発明の範囲から逸脱することなく、当業者によって、行うことができることを理解されたい。
【符号の説明】
【０１０２】
２  データ処理装置
４  処理回路
６  レジスタバンク
８  加算器
１０  シフタ
１２  乗算器
１４  命令デコーダ
１５  状態記憶装置、状態レジスタ
５００  アプリケーションプログラム
５１０  仮想マシンプログラム
５２０  ホストオペレーティングシステム
５３０  ホストプロセッサ
【図１】
0005646737.tif 000002
【図２】
0005646737.tif 000003
【図３Ａ】
0005646737.tif 000004
【図３Ｂ】
0005646737.tif 000005
【図４Ａ】
0005646737.tif 000006
【図４Ｂ】
0005646737.tif 000007
【図５】
0005646737.tif 000008
【図６Ａ】
0005646737.tif 000009
【図６Ｂ】
0005646737.tif 000010
【図６Ｃ】
0005646737.tif 000011
【図６Ｄ】
0005646737.tif 000012
【図６Ｅ】
0005646737.tif 000013
【図６Ｆ】
0005646737.tif 000014
【図７Ａ】
0005646737.tif 000015
【図７Ｂ】
0005646737.tif 000016
【図８】
0005646737.tif 000017
【図９】
0005646737.tif 000018
【図１０】
0005646737.tif 000019
【図１１】
0005646737.tif 000020