(57)【特許請求の範囲】
【請求項１】
複数命令長をビッグエンディアンとリトルエンディアンの２つのモードでサポートする命令実行方法において、
命令記憶領域に上記２つのエンディアンのモードに関わらず、連続する短命令を常に上記領域の長命令に合わせた、先・後の組として格納し、かつ読み出し順序を該先・後の順に実行するようにしたことを特徴とするバイエンディアン複数命令長実行方法。
【請求項２】
一方のエンディアン・モードでの命令実行は、他方のエンディアン・モードでのプログラムカウンタの一部を変更して命令アドレスを得るようにしたことを特徴とする請求項１記載のバイエンディアン複数命令長実行方法。
【請求項３】
組になった短命令に対しては、先の短命令の直後に命令デコードを実行するようにしたことを特徴とする請求項１記載のバイエンディアン複数命令長実行方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、異なるエンディアンを取扱う装置であって、バイト単位でのアドレスを持つメモリ上にプログラムを格納して実行する情報処理装置に関するものである。
【０００２】
【従来の技術】
ビッグエンディアンのアドレス指定方式で動作するモードとリトルエンディアンのアドレス指定方式で動作するモードの双方をあわせもち、外部からの設定または内部の設定で動作モードを切り替えることができる情報処理装置として、たとえば、日本電気株式会社のＶＲ４１００マイクロプロセッサがある。ＶＲ４１００TM６４ビット・マイクロプロセッサ  ユーザーズ・マニュアル（資料番号  Ｕ１００５０ＪＪ１ＶＯＵＭ００（第１版））によれば、この情報処理装置で定義されている命令語はすべて３２ビット（１ワード）固定長である。
この種の情報処理装置においては、メモリに格納された命令を読み出し、命令の解読を行う場合、命令デコーダへは命令読み出しアドレスの指定に基づいて、３２ビット長の命令語を供給することになる。命令読み出しアドレス指定はワードアドレスを指定する。
【０００３】
図６にビッグエンディアン動作モード時のメモリのアドレス割付を、図７にリトルエンディアン動作モード時のメモリのアドレス割付を示す。それぞれ、図の左側にワードアドレスを、図中の各セル内にバイトアドレスを記している。図中、Ｎは正の整数を表すものとする。
従って、例えば３２ビット長の命令１〜４の４つを実行しようとして、メモリ上に記憶した場合に、図８はビッグエンディアン動作モード時にメモリ上に格納された命令列を、図９はリトルエンディアン動作モード時にメモリ上に格納された命令列を示す。図８と図９より、ビッグエンディアン動作モード時にワードアドレス指定された命令とリトルエンディアン動作モード時にワードアドレス指定された命令とは、同一のものになることが分かる。このことより、３２ビット固定長の命令のみ定義されている情報処理装置において、命令語の読み出しおよび命令デコードの回路は、ビッグエンディアン動作モード時とリトルエンディアン動作モードにおいて、完全に共通化することができる。
【０００４】
一方、複数種類の命令語長が定義されている情報処理装置として、たとえば、三菱電機株式会社のＭ３２Ｒファミリ・マイクロプロセッサがある。Ｍ３２Ｒファミリ・ソフトウェアマニュアルによれば、この情報処理装置では１６ビット長および３２ビット長の２種類の命令語長が定義されており、命令語の最上位ビットの値により命令の語長が識別される。この情報処理装置では、ビッグエンディアン動作モードのみサポートされており、リトルエンディアンでの動作モードは存在しない。
【０００５】
従来、３２ビット長命令と１６ビット長命令の双方が定義され、かつ、ビッグエンディアンとリトルエンディアンの動作モードがともにサポートされた情報処理装置は今までのところ存在しない。
この不具合を解消するため、ユーザが独自に３２ビット長命令と１６ビット長命令の双方を定義し、かつ、ビッグエンディアンとリトルエンディアンの動作モードをともにサポートする情報処理装置を構成しようと考えた場合、ビッグエンディアン・モードとリトルエンディアン・モードにおけるアドレスの表示方法が異なるため、以下による構成をとる。しかしその構成によると、命令のデコード処理速度が低下する。
【０００６】
以下、この構成と動作について詳細に説明する。
図４および図５はこの情報処理装置が定義する命令の形式を説明する図である。
図４はこの情報処理装置が実行する命令の形式であり、３２ビット長命令と１６ビット長命令からなる。各命令フォーマットにおける最上位ビットで３２ビット長あるいは１６ビット長の識別を行うようになっており、例えば、命令語の最上位ビットが２進値「１」の場合、３２ビット長命令、「０」の場合、１６ビット長命令とする。最上位ビット以下の７ビットで命令の種類を示すオペレーションコード（ＯＰ）を形成し、他のビットでオペランド等の指定を行うようになっている。
図５は、連続する２つの１６ビット長命令をワードバウンダリ上の４バイト領域に配置したものであり、１６ビット長命令は常にこのように２つの命令を一つのセットとして扱う。なお、下位２バイトに配置した１６ビット長命令の最上位ビットはソフトウェアによる制御あるいはその他のハードウェアの制御用に使用することが出来る。図５（ａ）は下位２バイトに配置した１６ビット長命令の最上位ビットが２進値「０」のケースを、図５（ｂ）は下位２バイトに配置した１６ビット長命令の最上位ビットが２進値「１」のケースを示している。
【０００７】
この情報処理装置において、プログラム上に記述された命令は出現順にメモリ上に割り付けられていくため、例えば、プログラム上で命令列が、
３２ビット長命令１
１６ビット長命令２
１６ビット長命令３
３２ビット長命令４
３２ビット長命令５
という順で記述された場合、ビッグエンディアン動作モード時にメモリ上に格納される命令列は図１０のようになり、また、リトルエンディアン動作モードにメモリ上に格納される命令列は図１１のようになる。
それぞれの動作モードにおいて、３２ビット長命令が割り付けられているメモリ上の配置は同一であるが、１６ビット長命令が割り付けられているメモリ上の配置は異なる。ビッグエンディアン動作モードにおいては、１６ビット長命令２はワード位置の上位ハーフワードに、１６ビット長命令３はワード位置の下位ハーフワードに配置されるが、リトルエンディアン動作モードにおいては、１６ビット長命令２はワード位置の下位ハーフワードに、１６ビット長命令３はワード位置の上位ハーフワードに配置される。
【０００８】
一般に、命令のアドレスは、命令語の先頭バイトアドレス、言い換えれば、命令語の中で最もアドレスの小さいバイト位置のバイトアドレスによって表されるため、ビッグエンディアン動作モードとリトルエンディアン動作モードにおける個々の命令のアドレスは図１０と図１１において全く同一となる。１６ビット長命令２の命令アドレスはビッグエンディアン動作モード、リトルエンディアン動作モードのいずれにおいても４Ｎ＋４番地であり、１６ビット長命令３の命令アドレスはいずれの動作モードにおいても４Ｎ＋６番地である。
すなわち、１６ビット長命令の場合、ビッグエンディアン動作モードとリトルエンディアン動作モードにおいて同一アドレスで指定される命令語はそれぞれメモリ上では異なる配置となる。
【０００９】
このような命令の配置を行う情報処理装置の命令デコーダ回路の例を図１２に示す。エンディアン指示手段１２は論理値０のときビッグエンディアン動作モードを指定し、論理値１のときリトルエンディアン動作モードを指定する。選択信号生成回路１３は、エンディアン指示手段１２によるエンディアン指示信号１４、メモリより読み出した命令語の命令長識別子である最上位ビット（を示す）信号１５、および命令デコーダ５が出力する命令語のハーフワード位置を指示する制御信号７に基づき、マルチプレクサ８の選択信号１６を生成する。制御信号７は、新たに命令語を命令レジスタ１にロードするとき「０」にクリアされ、最初の１６ビット命令のデコードを完了したときに「１」がセットされる。
マルチプレクサ８は選択信号生成回路１３の指示に基づき、命令レジスタ内１の上位ハーフワードまたは下位ハーフワードを選択して命令デコーダに供給する。
【００１０】
図１３に選択信号生成回路１３への入力信号と、マルチプレクサ８より選択されて命令デコーダ５へ供給される命令語位置の関係を示す。
３２ビット長命令の場合は、エンディアン指示手段１２の指示に関係なく、命令レジスタのビット０−１５が命令デコーダに供給される。すなわち、この場合には命令デコーダへの供給にあたり、マルチプレクサ８の制御信号を切り替える必要はない。一方、１６ビット長命令の場合は、エンディアンの指示に基づきマルチプレクサ８の制御信号を切り替える必要がある。まず、ビッグエンディアン動作モードの場合、命令語が命令レジスタ１にロードされ、制御信号７が「０」の値となったとき、ワードバウンダリのアドレスで指定される上位ハーフワードの１６ビット命令、すなわち命令レジスタのビット０−１５を命令デコーダに供給する。また、リトルエンディアン動作モードの場合、命令語が命令レジスタ１にロードされ、制御信号７が「０」の値となったとき、ワードバウンダリのアドレスで指定される下位ハーフワードの１６ビット命令、すなわち、命令レジスタのビット１６−３１を命令デコーダに供給する。
このように、命令デコーダへ供給する命令を選択するにあたり、命令語自身に含まれる命令長識別子を使用してマルチプレクサ回路を制御するため、命令を命令デコーダへ供給するまでの遅延時間が増大し、処理速度が低下する。
【００１１】
【発明が解決しようとする課題】
従来の２つの命令長に対応し、かつ２つのエンディアン動作モードをサポートするための装置は上記のように構成されている。即ち、異なる複数の長さの命令形式を持つ情報処理装置においては、命令語内に置かれた命令長識別子と命令語の置かれたアドレスに基づいて命令デコード処理が行われるが、ビッグエンディアンで動作するモードとリトルエンディアンで動作するモードの双方を処理する情報処理装置は、モードによってアドレスの割付方式が異なるようにしているため、命令デコード回路が複雑化し、その結果として処理速度の低下を招くという課題がある。
【００１２】
この発明は上記の課題を解決するためになされたもので、１倍と２倍の長さの命令を共に扱い、両エンディアン動作モードを処理するに際して、構成を簡潔にし、処理の高速化を図る。
【００１３】
【課題を解決するための手段】
この発明に係るバイエンディアン複数命令長実行方法は、複数命令長をビッグエンディアンとリトルエンディアンの２つのモードでサポートする命令実行方法において、
命令記憶領域にこれら２つのエンディアンのモードに関わらず、連続する短命令を常に領域の長命令に合わせた、先・後の組として格納し、かつ読み出し順序をこの先・後の順に実行するようにした。
【００１４】
また更に、一方のエンディアン・モードでの命令実行は、他方のエンディアン・モードでのプログラムカウンタの一部を変更して命令アドレスを得るようにした。
【００１５】
また更に、組になった短命令に対しては、先の短命令の直後に命令デコードを実行するようにした。
【００１６】
【発明の実施の形態】
実施の形態１．
図４は、本発明にかかる命令実行方法がサポートする命令の形式であり、この例では３２ビット長命令と１６ビット長命令からなる。各命令フォーマットにおける最上位ビットで３２ビット長あるいは１６ビット長の識別を行うようになっており、例えば、命令語の最上位ビットが２進値「１」の場合は、３２ビット長命令、「０」の場合は、１６ビット長命令とする。最上位ビット以下の７ビットで命令の種類を表すオペレーションコード（ＯＰ）を形成し、他のビットでオペランド等の指定を行うようになっている。
図５は、連続する２つの１６ビット長命令をワードバウンダリ上の４バイト領域に配置したものであり、本発明においては連続する１６ビット長命令は常にこのように２つの命令を一つのセットとして扱う。また、これら２つの１６ビット長命令はビッグエンディアンおよびリトルエンディアンの動作モードに関わりなく、上位２バイトに配置した命令を先に実行し、下位２バイトに配置した命令を後に実行するよう動作させる。
なお、下位２バイトに配置した１６ビット長命令の最上位ビットはソフトウェアによる制御あるいはその他のハードウェアの制御用に使用することが出来る。図５（ａ）は下位２バイトに配置した１６ビット長命令の最上位ビットが２進値「０」のケースを、図５（ｂ）は下位２バイトに配置した１６ビット長命令の最上位ビットが２進値「１」のケースを示している。
【００１７】
図１および図２は、メモリ上に配置された命令列と、それぞれの命令を実行する際のプログラムカウンタ値との関係を示す。これらの例においてプログラムカウンタは説明を簡略化するために下位４ビットのみ記載している。プログラムカウンタは実行している命令の位置を示すものであり、一般の情報処理装置においては実行中の命令アドレスを保持する。本発明におけるプログラムカウンタは、命令の位置情報として、命令アドレスそのものではなく、命令のワードアドレス部分と同ワード内のハーフワード位置情報を組み合わせたものとして表現される。すなわちプログラムカウンタの下位２ビットが「００」では、３２ビット長命令あるいはワード内の上位ハーフワードに格納された１６ビット長命令の実行を表し、プログラムカウンタの下位２ビットが「１０」では、ワード内の下位ハーフワードに格納された１６ビット長命令の実行を表す。したがって、ビッグエンディアン動作モードでは実行中の命令のアドレスとプログラムカウンタ値は完全に一致し、リトルエンディアン動作モードでは、１６ビット命令実行時のプログラムカウンタ値と命令アドレスで下位２ビットの値が反転する。この方法が２つのモードで常にワード内で上位ハーフを先に実行させる簡易な方法であるが、他の論理で常に上位ハーフを実行するようにしてもよい。
【００１８】
具体的には、図１のビッグエンディアンの動作モードにおいて、アドレス０−３に配置された３２ビット長命令Ａの実行時のプログラムカウンタ値は「００００」、アドレス４−５に配置された１６ビット長命令Ｂの実行時のプログラムカウンタ値は「０１００」、アドレス６−７に配置された１６ビット長命令Ｃの実行時のプログラムカウンタ値は「０１１０」である。
次に、図２のリトルエンディアンの動作モードにおいて、アドレス０−３に配置された３２ビット長命令Ａの実行時のプログラムカウンタ値は「００００」、アドレス４−５に配置された１６ビット長命令Ｃの実行時のプログラムカウンタ値は「０１１０」、アドレス６−７に配置された１６ビット長命令Ｂの実行時のプログラムカウンタ値は「０１００」である。プログラムカウンタの上位２ビットは、命令が配置されたワードアドレスを示しており、下位２ビットは同ワード内のハーフワード位置を示している。ビッグエンディアンの動作モードおよびリトルエンディアンの動作モードのいずれで動作しているかに関わらず、下位２ビットが「００」の場合、ワード内の上位ハーフワードを表し、下位２ビットが「１０」の場合、ワード内の下位ハーフワードを表す。プログラム実行における命令実行順序はプログラムカウンタの動作により規定される。通常、分岐命令などプログラム実行シーケンスを変更する命令を実行しない限り、プログラムカウンタは順次インクリメントされて、メモリ上に連続的に配置された命令列を順次実行する。一般に、プログラムカウンタ値は実行する命令のメモリアドレスを指定するが、本発明では、プログラムカウンタの下位２ビットを命令のアドレスではなく、命令のワード内ハーフワード位置を示す識別子としたことにより、ビッグエンディアン動作モードおよびリトルエンディアン動作モードでプログラムカウンタのインクリメント制御を共通とすることができる。図１および図２より、両動作モードで実行する命令のアドレスの遷移は異なるが、プログラムカウンタ値の遷移は同一であり、したがって、両モードでの命令実行順序は同一となる。
こうして、ビッグエンディアンの動作モードおよびリトルエンディアンの動作モードのいずれにおいても、命令の実行順序はＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆの順とできる。
【００１９】
図３は、本発明で用いた命令のデコード回路構成の例を示した図である。従来はこうした回路は両モードをサポートしても１命令長のみしか処理できなかったが、本実施の形態では２つの命令をサポートできる。図において、命令レジスタ１には、命令アドレスレジスタ２で指定されたメモリ３のワード位置から３２ビットデータバス４経由で読み出された３２ビットの命令語が格納される。読み出された命令語が３２ビット長の場合、命令レジスタには１命令が、１６ビット長命令の場合は２命令が格納される。命令デコーダ５は命令レジスタ１に命令語が設定されるとまず、最上位ビットを取込み、値が「１」ならば３２ビット長命令、値が「０」ならば２つの１６ビット長命令のセットと判定する。次に、命令デコーダ５は後続の７ビットで構成されるＯＰコード部を取込んで、命令の種別判定を行い、命令毎に定義された制御信号を生成する。命令長の判定と命令種別の判定は同時に行ってもよい。
【００２０】
以下、図１および図２に記載された命令列を例に具体的動作を説明し、かつ、ビッグエンディアン動作モードおよびリトルエンディアン動作モードで回路の動作が同一になることを説明する。
但し、図１および図２ではプログラムカウンタおよび命令アドレスは下位４ビットのみを記載しているため、以下の説明においてもアドレスおよびプログラムカウンタ値は４ビットのみを記載する。
【００２１】
図１に基づいてビッグエンディアン動作モードでの動作を説明する。
まず、命令アドレスレジスタ２にアドレス「００００」をセットし、メモリ３より３２ビット長命令（Ａ）を命令レジスタ１にロードする。この時、プログラムカウンタも「００００」にセットされる。命令レジスタ１のビット０−１５がマルチプレクサ８を介して命令デコーダ５に供給され、命令のデコードが行われる。この場合、３２ビット長命令のため、命令デコーダ５は命令アドレスレジスタ２に格納されているワードアドレスを制御信号６の指示によりインクリメントし、メモリ上の次のワード位置「０１００」から命令を読み出すように指示を行う。また、命令デコーダ５は３２ビット長命令（Ａ）を実行する時点で制御信号９を生成し、プログラムカウンタ１１のワードアドレス部分（この説明においては４ビット構成の上位２ビット）をインクリメントし、「０１００」とする。
【００２２】
次に、命令アドレス「０１００」から１６ビット長命令（Ｂ）および１６ビット長命令（Ｃ）がパックされた命令語を読み出し、命令レジスタ１にロードする。プログラムカウンタの下位２ビットは命令語のハーフワード位置を示すものであり、この場合「００」であるため上位ハーフワードを指定する。したがって、命令レジスタ１のビット０−１５がマルチプレクサ８を介して命令デコーダ５に供給され、１６ビット長命令（Ｂ）のデコードが行われる。この場合、最初に実行される命令が１６ビット長命令のため、命令デコーダ５は命令アドレスレジスタ２のインクリメント指示を出さず、命令レジスタ１に制御信号７を送り、マルチプレクサ８を介して次に命令レジスタ１のビット１６−３１に格納された１６ビット長命令（Ｃ）を命令デコーダ５に入力させるように指示する。また、命令デコーダ５は１６ビット長命令（Ｂ）を実行する時点で制御信号１０を生成し、プログラムカウンタ１１のハーフワード位置部分（この説明においては４ビット構成の下位２ビット）をインクリメントし、「０１１０」とする。
【００２３】
次に、命令レジスタ１のビット１６−３１がマルチプレクサ８を介して命令デコーダ５に供給され、１６ビット長命令（Ｃ）のデコードが行われる。この場合、２番目に実行される１６ビット長命令のため、命令デコーダ５は命令アドレスレジスタ２に格納されているワードアドレスを制御信号６の指示によりインクリメントし、メモリ上の次のワード位置「１０００」から命令を読み出すように指示を行う。また、命令デコーダ５は１６ビット長命令（Ｃ）を実行する時点で制御信号９を生成し、プログラムカウンタ１１のワードアドレス部分（この説明においては４ビット構成の上位２ビット）をインクリメントし、かつ、制御信号１０によってハーフワードアドレス部分（この説明においては下位２ビット）をクリアすることによって「１０００」とする。
以降、後続の１６ビット長命令（Ｄ）、１６ビット長命令（Ｅ），３２ビット長命令（Ｆ）の実行も同様に行われる。
【００２４】
次に、図２に基づいてリトルエンディアン動作モードでの動作を説明する。
まず、命令アドレスレジスタ２にアドレス「００００」をセットし、メモリ３より３２ビット長命令（Ａ）を命令レジスタ１にロードする。この時、プログラムカウンタも「００００」にセットされる。この場合、３２ビット長命令であるため、命令アドレスとプログラムカウンタ値は一致する。
命令レジスタ１のビット０−１５がマルチプレクサ８を介して命令デコーダ５に供給され、命令のデコードが行われる。この場合、３２ビット長命令のため、命令デコーダ５は命令アドレスレジスタ２に格納されているワードアドレスを制御信号６の指示によりインクリメントし、メモリ上の次のワード位置「０１００」から命令を読み出すように指示を行う。また、命令デコーダ５は３２ビット長命令（Ａ）を実行する時点で制御信号９を生成し、プログラムカウンタ１１のワードアドレス部分（この説明においては４ビット構成の上位２ビット）をインクリメントし、「０１００」とする。
【００２５】
次に、命令アドレス「０１００」から１６ビット長命令（Ｂ）および１６ビット長命令（Ｃ）がパックされた命令語を読み出し、命令レジスタ１にロードする。命令アドレス「０１００」は１６ビット長命令（Ｃ）を示しているが、プログラムカウンタの下位２ビットは命令語のハーフワード位置を示すものであり、この場合「００」であるため上位ハーフワードの１６ビット長命令（Ｂ）を実行対象として指定する。したがって、命令レジスタ１のビット０−１５がマルチプレクサ８を介して命令デコーダ５に供給され、１６ビット長命令（Ｂ）のデコードが行われる。この場合、最初に実行される命令が１６ビット長命令のため、命令デコーダ５は命令アドレスレジスタ２のインクリメント指示を出さず、命令レジスタ１に制御信号７を送り、マルチプレクサ８を介して次に命令レジスタ１のビット１６−３１に格納された１６ビット長命令（Ｃ）を命令デコーダ５に入力させるように指示する。また、命令デコーダ５は１６ビット長命令（Ｂ）を実行する時点で制御信号１０を生成し、プログラムカウンタ１１のハーフワード位置部分（この説明においては４ビット構成の下位２ビット）をインクリメントし、「０１１０」とする。
【００２６】
次に、プログラムカウンタの下位２ビットが「１０」であるため、命令アドレス「０１００」に相当する下位ハーフワードの１６ビット長命令（Ｃ）を実行対象として指定する。したがって、命令レジスタ１のビット１６−３１がマルチプレクサ８を介して命令デコーダ５に供給され、１６ビット長命令（Ｃ）のデコードが行われる。この場合、２番目に実行される１６ビット長命令のため、命令デコーダ５は命令アドレスレジスタ２に格納されているワードアドレスを制御信号６の指示によりインクリメントし、メモリ上の次のワード位置「１０００」から命令を読み出すように指示を行う。また、命令デコーダ５は１６ビット長命令（Ｃ）を実行する時点で制御信号９を生成し、プログラムカウンタ１１のワードアドレス部分（この説明においては４ビット構成の上位２ビット）をインクリメントし、かつ、制御信号１０によってハーフワードアドレス部分（この説明においては下位２ビット）をクリアすることによって「１０００」とする。
以降、後続の１６ビット長命令（Ｄ）、１６ビット長命令（Ｅ），３２ビット長命令（Ｆ）の実行も同様に行われる。
【００２７】
以上に述べたように、ビッグエンディアン動作モードでもリトルエンディアン動作モードでも命令デコード回路の動作は全く同一であり、両モードで共通の命令デコード回路を利用可能となる。
【００２８】
本発明における命令実行方法では、まず命令記憶領域への格納時に、両モードに関係なく１ワードの上位ハーフに先の命令を組として格納し、メモリから命令語を読み出して命令デコードを開始する際に、ビッグエンディアン動作モードおよびリトルエンディアン動作モードの別に関係なく、かつ、命令語内に置かれた命令長識別子の値に関係なく、命令レジスタの上位ハーフ（１６ビット）を命令デコーダに供給するため、命令デコーダに供給するビット位置判定のオーバーヘッドを解消でき、命令デコード処理の高速化が達成できる。
また、命令レジスタ内に２つの１６ビット長命令が格納されている場合では、最初の１６ビット長命令のデコード時点であらかじめ後続の１６ビット長命令を命令デコーダに供給するための指示を行うため、後続１６ビット長命令のデコード処理時間に遅れがなくなる。
なお、命令長は６４ビットと３２ビットの２つであっても同様な方法がとれることは明らかである。
【００２９】
個々の３２ビット長命令および３２ビットにパックされた２つの１６ビット長命令のセットは、ビッグエンディアン動作モードおよびリトルエンディアン動作モードで全く同一のワードバウンダリ・アドレスに配置されるため、デコード回路構成は共通化され、モードの違いを吸収するための回路のオーバーヘッドを必要としない。したがって、回路構造が簡略化されデコード処理性能が向上する。
【００３０】
【発明の効果】
以上のようにこの発明によれば、従来の１モードをサポートするデコード回路を用いて、命令記憶領域での短命令の記憶順序を２つのモードで同じとし、かつ読み出し順序もその順としたので、デコード回路が簡単で、かつ命令の実行に遅れがないという効果がある。
【図面の簡単な説明】
【図１】  この発明の実施の形態１におけるメモリ上に配置されたビッグエンディアンでの命令列とカウンタとアドレスと実行順序の例を示す図である。
【図２】  実施の形態１におけるメモリ上に配置されたリトルエンディアンでの命令列とカウンタとアドレスと実行順序の例を示す図である。
【図３】  実施の形態１における命令デコード回路の例を示す図である。
【図４】  本発明がサポートする２命令の構成を説明する図である。
【図５】  本発明がサポートする２つの短命令の構成を説明する図である。
【図６】  一般的なビッグエンディアンでのメモリ上の命令配置図である。
【図７】  一般的なリトルエンディアンでのメモリ上の命令配置図である。
【図８】  従来の固定長命令のビッグエンディアンでのメモリ上の命令配置図である。
【図９】  従来の固定長命令のリトルエンディアンでのメモリ上の命令配置図である。
【図１０】  従来の両モードサポートのビッグエンディアンにおけるメモリ上の命令配置図である。
【図１１】  従来の両モードサポートのリトルエンディアンにおけるメモリ上の命令配置図である。
【図１２】  従来の両モードサポートの命令デコード回路図である。
【図１３】  従来の命令デコード回路の命令語選択方法を説明する図である。
【符号の説明】
１  命令レジスタ、２  命令アドレスレジスタ、３  メモリ、４ 命令デコーダ、８  マルチプレクサ、１１  プログラムカウンタ。
【図１】
0003902374.tif 000002
【図２】
0003902374.tif 000003
【図３】
0003902374.tif 000004
【図４】
0003902374.tif 000005
【図５】
0003902374.tif 000006
【図６】
0003902374.tif 000007
【図７】
0003902374.tif 000008
【図８】
0003902374.tif 000009
【図９】
0003902374.tif 000010
【図１０】
0003902374.tif 000011
【図１１】
0003902374.tif 000012
【図１２】
0003902374.tif 000013
【図１３】
0003902374.tif 000014