(57)【要約】【課題】連続する複数の命令を共有化することによって、命令数を削減する。【解決手段】複数回の演算を行うための間接命令を含むプログラムをメモリ１０１から読み出し、当該間接命令を解釈する間接命令解釈手段１０４と、前記間接命令解釈手段１０４の解釈結果に基づいて、１回の演算を行うための直接命令を生成する直接命令生成手段１０５と、前記直接命令生成手段１０５によって生成された直接命令を実行する直接命令実行手段１０８と、を備えたことを特徴とする演算装置が提供される。【選択図】図１
2008217126.tif 000002
【特許請求の範囲】
【請求項１】
複数回の演算を行うための間接命令を含むプログラムをメモリから読み出し、当該間接命令を解釈する間接命令解釈手段と、
前記間接命令解釈手段の解釈結果に基づいて、１回の演算を行うための直接命令を生成する直接命令生成手段と、
前記直接命令生成手段によって生成された直接命令を実行する直接命令実行手段と、を備えたことを特徴とする演算装置。
【請求項２】
前記複数回の演算の処理内容を記憶する間接命令記憶手段をさらに備え、
前記間接命令は、前記処理内容を前記間接命令記憶手段に記憶するための第１命令と、前記処理内容に基づいて前記直接命令を生成するための第２命令と、を含み、
前記間接命令解釈手段は、前記第１命令を実行して前記処理内容を前記間接命令記憶手段に記憶し、
前記直接命令生成手段は、前記第２命令を実行して前記間接命令記憶手段に記憶された前記処理内容に基づいて前記直接命令を生成する請求項１に記載の演算装置。
【請求項３】
前記第１命令は、前記複数回の演算の間の共通処理内容を示す処理データと、当該共通処理内容の実行回数を示す回数データと、当該複数回の演算の間の差分処理内容を示す差分データと、を含み、
前記間接命令記憶手段は、前記処理データを記憶する処理データ記憶部と、前記回数データを記憶する回数データ記憶部と、前記差分データを記憶する差分データ記憶部と、を備え、
前記直接命令生成手段は、前記処理データ記憶部に記憶された前記処理データ、前記回数データ記憶部に記憶された前記回数データ、及び前記差分データ記憶部に記憶された前記差分データに基づいて前記直接命令を生成する請求項２に記載の演算装置。
【請求項４】
前記間接命令記憶手段は、前記複数回の演算の処理内容を記憶する複数のレジスタを備え、
前記レジスタは、前記処理データ記憶部と、前記回数データ記憶部と、前記差分データ記憶部と、備えた請求項３に記載の演算装置。
【請求項５】
前記第２命令は、前記複数のレジスタのうちの参照範囲を示す範囲データを含み、
前記直接命令生成手段は、前記第２命令を実行して前記範囲データに基づいて前記複数のレジスタを参照して前記直接命令を生成する請求項４に記載の演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置に関し、特に、複数の命令を置換した間接命令を含むプログラムを演算する演算装置に関する。
【背景技術】
【０００２】
一般的なプロセッサでは、命令セットは固定的であり、複数の命令の組み合わせが頻繁に出現する場合であっても、それらをまとめて一つの命令に置き換えることは出来ない。また、一般的な命令は、命令コード、レジスタ指定、即値、変位値（Ｄｉｓｐｌａｃｅｍｅｎｔ）などから構成されるが、命令コードが同じでもレジスタ指定、即値、変位値のどれかが異なる場合には異なる命令として取り扱われるため、命令を共有化して命令数を削減することはできない。
【０００３】
これに対して、特許文献１の計算機が知られている。特許文献１の計算機は、データをマシン命令とすることを指定する間接命令が検出された場合に、演算結果を示す状態フラグに基づいて記憶装置に保持された命令の実行が行われるようになっている。
【０００４】
しかし、特許文献１の計算機では、演算結果を示す状態フラグに基づいて記憶装置に保持された命令の実行が行われるので、連続する複数の命令を共有化することができないという問題点がある。
【特許文献１】特開平３−１３０８３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、連続する複数の命令を共有化することによって、命令数を削減することである。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、複数回の演算を行うための間接命令を含むプログラムをメモリから読み出し、当該間接命令を解釈する間接命令解釈手段と、前記間接命令解釈手段の解釈結果に基づいて、１回の演算を行うための直接命令を生成する直接命令生成手段と、
前記直接命令生成手段によって生成された直接命令を実行する直接命令実行手段と、を備えたことを特徴とする演算装置が提供される。
【発明の効果】
【０００７】
本発明によれば、連続する複数の命令を共有化し、命令数を削減し、ひいてはプロセッサのプログラム処理効率を向上させることができる。
【発明を実施するための最良の形態】
【０００８】
図１は、本発明の実施例に係るプロセッサの構成を示すブロック図である。メモリ１０１には、命令列(プログラム)とデータが格納されている。プログラムは直接命令と間接命令から構成されている（図４（ａ）を参照）。データは、後述する処理データ４１１、回数データ４１２、及び差分データ４１３から構成されている（図４（ｂ）を参照）。命令キャッシュ１０２は、メモリ１０１からプログラムの一部を読み込み、一時的に保持する。データキャッシュ１０３は、メモリ１０１からデータの一部を読み込み、一時的に保持する。
【０００９】
間接命令解釈部１０４は、命令キャッシュ１０２からプログラムを読み込み、直接命令である場合には直接命令実行部１０８に送り、間接命令である場合には後述する第１命令４０１を実行し、後述する第２命令４０２を直接命令生成部１０５に送る。直接命令生成部１０５は、間接命令レジスタ群１０６のデータを参照して直接命令を生成し、直接命令実行部１０８に送る。直接命令実行部１０８は、間接命令解釈部１０４又は直接命令生成部１０５から送られた直接命令を実行し、データレジスタ群１０７のデータを更新するとともに、データレジスタ群１０７のデータの一部をデータキャッシュ１０３に送り、メモリ１０１に書き込む。
【００１０】
図２は、本発明の実施例に係る間接命令レジスタ群１０６の構成を示すブロック図である。なお、図２には、１６個の間接命令レジスタ２０１〜２１６が示してあるが、間接命令レジスタの数はこれに限られるものではない。
【００１１】
各間接命令レジスタ２０１〜２１６は、それぞれ、処理データレジスタ２０１１、回数データレジスタ２０１２、及び差分データレジスタ２０１３を有している。処理データレジスタ２０１１には、後述する処理の内容を示す処理データ４１１が格納される。回数データレジスタ２０１２には、後述する処理の繰り返し回数を示す回数データ４１２が格納される。差分データレジスタ２０１３には、後述する処理データを繰り返す場合の差分を示す差分データ４１３が格納される。
【００１２】
図３は、本発明の実施例に係る間接命令解釈部１０４の構成を示すブロック図である。間接命令解釈部１０４は、後述する第１命令４０１を実行する第１命令実行手段１０４１を有している。
【００１３】
直接命令生成部１０５は、インデックスレジスタ１０５１、ループレジスタ１０５２、直接命令レジスタ１０５３、及び第２命令実行手段１０５４を有している。インデックスレジスタ１０５１には、間接命令レジスタ群１０６の間接命令レジスタ２０１〜２１６を指定するレジスタ指定データが格納される。ループレジスタ１０５２には、後述する第２命令４０２における処理の繰り返し回数が格納される。直接命令レジスタ１０５３には、後述する処理データ４１１が格納される。第２命令実行部１０５４は、インデックスレジスタ１０５１、ループレジスタ１０５２、及び直接命令レジスタ１０５３のデータを参照して直接命令を生成して直接命令実行部１０８へ送るとともに、インデックスレジスタ１０５１、ループレジスタ１０５２、及び直接命令レジスタ１０５３、並びに間接命令レジスタ群１０６のデータを更新する。
【００１４】
図４は、本発明の実施例に係る間接命令の概略を示す概略図である。図４（ａ）は、プログラムに含まれる間接命令の一例である。間接命令は、第１命令４０１と第２命令４０２から構成される。図４（ｂ）は、データレジスタ群１０７に格納されるデータの一例である。データには、処理データ４１１、回数データ４１２、及び差分データ４１３から構成される。
【００１５】
第１命令４０１は、インデックスレジスタ１０５１のデータに基づいて、データレジスタ群１０７のデータを間接命令レジスタ２０１〜２１６に格納するための「ｉ＿ｓｔｏｒｅ」という命令である。「ｉ＿ｓｔｏｒｅ１」は、２つの引数（処理（ｉｄｘ）とｒｅｇ１）を有し、ｒｅｇ１で指定されるデータレジスタ群１０７の処理データ４１１をｉｄｘで指定される間接命令レジスタ２０１〜２１６の処理データレジスタに格納するための命令である。「ｉ＿ｓｔｏｒｅ２」は、２つの引数（回数（ｉｄｘ）とｒｅｇ２）を有し、ｒｅｇ２で指定されるデータレジスタ群１０７の回数データ４１２をｉｄｘで指定される間接命令レジスタ２０１〜２１６の回数データレジスタに格納するための命令である。「ｉ＿ｓｔｏｒｅ３」は、２つの引数（差分（ｉｄｘ）とｒｅｇ３）を有し、ｒｅｇ３で指定されるデータレジスタ群１０７の格納されている差分データ４１３をｉｄｘで指定される間接命令レジスタ２０１〜２１６の差分データレジスタに格納するための命令である。
【００１６】
第２命令４０２は、範囲データ（開始インデックスと終了インデックス）に対応する間接命令レジスタ２０１〜２１６の処理データ４１１、回数データ４１２、及び差分データ４１３に基づいて直接命令を生成するための「ｉ＿ｒｕｎ」という命令である。「ｉ＿ｒｕｎ」は、２つの引数（開始インデックス（ｉｄｘａ）と終了インデックス（ｉｄｘｂ））を有し、間接命令レジスタ群１０６のｉｄｘａで指定されるレジスタからｉｄｘｂで指定されるレジスタのデータを用いて直接命令を生成するための命令である。
【００１７】
図５は、本発明の実施例に係る間接命令解釈処理の処理手順を示すフローチャートである。間接命令解釈処理は、間接命令解釈部１０４によって行われる処理である。
【００１８】
はじめに、命令キャッシュ１０２からプログラムを読み込む（Ｓ５０１）。続いて、Ｓ５０１において読み込んだプログラムが第１命令である場合には（Ｓ５０２−Ｙｅｓ）、図４（ａ）の第１命令４０１を実行する（Ｓ５０３）。続いて、データレジスタ群１０７の所定番地（ｒｅｇ１）に格納された処理データ４１１を処理データレジスタ２０１１に格納する（Ｓ５０４）。続いて、データレジスタ群１０７の所定番地（ｒｅｇ２）に格納された回数データ４１２を回数データレジスタ２０１２に格納する（Ｓ５０５）。続いて、データレジスタ群１０７の所定番地（ｒｅｇ３）に格納された差分データ４１３を差分データレジスタ２０１３に格納し、間接命令解釈処理を終了する（Ｓ５０６）。なお、Ｓ５０４〜Ｓ５０６は順不同である。
【００１９】
また、Ｓ５０１において読み込んだプログラムが第２命令４０２である場合には（Ｓ５０２−Ｎｏ、Ｓ５０７−Ｙｅｓ）、第２命令４０２を直接命令生成部１０５に送り、間接命令解釈処理を終了する（Ｓ５０８）。なお、第２命令４０２は、直接命令の合間に実行される。
【００２０】
他方、Ｓ５０１において読み込んだプログラムが直接命令である場合には（Ｓ５０２−Ｎｏ、Ｓ５０７−Ｎｏ）、直接命令を直接命令実行部１０８に送り、間接命令解釈処理を終了する（Ｓ５０９）。
【００２１】
例えば、Ｓ５０４は「処理（ｉｄｘ）＝処理データ（ｒｅｇ１）」という命令であり、Ｓ５０５は「回数（ｉｄｘ）＝回数データ（ｒｅｇ２）」という命令であり、Ｓ５０６は「差分データ（ｉｄｘ）＝差分データ（ｒｅｇ３）」という命令である。
【００２２】
図６は、本発明の実施例に係る第２命令実行処理の処理手順を示すフローチャートである。第２命令実行処理は、図５のＳ５０８が終了した後に、直接命令生成部１０５によって行われる処理である。
【００２３】
はじめに、インデックスレジスタ１０５１に範囲データの開始インデックス（ｉｄｘａ）を格納する（Ｓ６０１）。続いて、インデックスレジスタ１０５１のデータに基づいて、処理データレジスタ２０１１の処理データ４１１を直接命令レジスタ１０５３に格納する（Ｓ６０２）。続いて、ループレジスタ１０５２を初期化する（Ｓ６０３）。続いて、直接命令レジスタ１０５３の処理データ４１１を直接命令として直接命令実行部１０８に送る（Ｓ６０４）。続いて、直接命令レジスタ１０５３の処理データ４１１を差分データレジスタ２０１３の差分データ４１３で更新する（Ｓ６０５）。続いて、ループレジスタ１０５２のデータをインクリメントする（Ｓ６０６）。続いて、ループレジスタ１０５２のデータが回数データレジスタ２０１２のデータより小さい場合には（Ｓ６０７−Ｙｅｓ）、Ｓ６０４に戻る。
【００２４】
一方、ループレジスタ１０５２のデータと回数データレジスタ２０１２のデータが等しい場合には（Ｓ６０７−Ｎｏ）、インデックスレジスタ１０５１のデータをインクリメントする（Ｓ６０８）。続いて、インデックスレジスタのデータ１０５１が終了インデックス（ｉｄｘｂ）より小さい場合には（Ｓ６０９−Ｙｅｓ）、Ｓ６０２に戻る。また、インデックスレジスタ１０５１のデータと終了インデックス（ｉｄｘｂ）が等しい場合には（Ｓ６０９−Ｎｏ）、第２命令実行処理を終了する。
【００２５】
例えば、Ｓ６０１は「Ｉｎｄｅｘ＝ｉｄｘａ」という命令であり、Ｓ６０２は「Ｉｎｓｔ＝処理（Ｉｎｄｅｘ）」という命令であり、Ｓ６０３は「Ｌｏｏｐ＝０」という命令であり、Ｓ６０５は「Ｉｎｓｔ＋＝差分（Ｉｎｄｅｘ）」という命令であり、Ｓ６０６は「Ｌｏｏｐ＋＝１」という命令であり、Ｓ６０７は「ｉｆ  Ｌｏｏｐ＜回数（Ｉｎｄｅｘ）」という命令であり、Ｓ６０８は「Ｉｎｄｅｘ＋＝１」という命令であり、Ｓ６０９は「ｉｆ  Ｉｎｄｅｘ＜ｉｄｘｂ」という命令である。
【比較例】
【００２６】
図７〜１１を参照して本発明の比較例を説明する。図７は、Ｃ言語で記述されたプログラムの一例である。このプログラムは、関数ｆｏｏを定義している。関数ｆｏｏは３つの引数ａ，ｂ，ｃを取り、４つの自動変数ａａ，ｂｂ，ｃｃ，ｄｄを使用する。ａａにはａ＋１０、ｂｂにはｂ＋２０、ｃｃにはｃ＋３０が代入され、ａａ，ｂｂ，ｃｃを引数として関数ｂａｒが呼び出される。関数ｂａｒの戻り値がｄｄに代入され、ｄｄ−ａ−ｂ−ｃが関数ｆｏｏの戻り値となる。
【００２７】
図８は、従来のコンパイラによって図７のプログラムから得られた命令列の一例である。１行目は、関数ｆｏｏのラベルを定義している。２行目は、戻り番地(＄ｌｐ)とレジスタ６〜８(＄６〜＄８)のための領域をスタック上に１６バイト分確保している。３行目は、レジスタ０(＄０)に戻り番地(＄ｌｐ)を代入している。４行目は、レジスタ０のデータをスタック(＄ｓｐ+０番地)に退避している。５行目は、レジスタ６(＄６)のデータをスタック(＄ｓｐ+４番地)に退避している。６行目は、レジスタ７(＄７)のデータをスタック(＄ｓｐ+８番地)に退避している。７行目は、レジスタ８(＄８)のデータをスタック(＄ｓｐ+１２番地)に退避している。８行目は、引数ａに対応するレジスタ１(＄１)のデータをレジスタ６(＄６)に代入している。９行目は、引数ｂに対応するレジスタ２(＄２)のデータをレジスタ７(＄７)に代入している。１０行目は、引数ｃに対応するレジスタ３(＄３)のデータをレジスタ８(＄８)に代入している。１１行目は、レジスタ６(＄６)に１０を加算した結果をレジスタ１(＄１)に代入している。この処理は図７の６行目に対応している。１２行目は、レジスタ７(＄７)に２０を加算した結果をレジスタ２(＄２)に代入している。この処理は図８の７行目に対応している。１３行目は、レジスタ８(＄８)に３０を加算した結果をレジスタ３(＄３)に代入している。この処理は図７の８行目に対応している。１４行目は、関数ｂａｒを呼び出している。この処理は、図７の１０行目に対応している。１５行目は、関数ｂａｒの戻り値が格納されたレジスタ０(＄０)からレジスタ６(＄６)のデータを減算し、レジスタ０(＄０)に代入している。１６行目は、レジスタ０(＄０)からレジスタ７(＄７)のデータを減算し、レジスタ０(＄０)に代入している。１7行目は、レジスタ０(＄０)からレジスタ８(＄８)のデータを減算し、レジスタ０(＄０)に代入している。１５行目から１７行目の処理が、図７の１０行目の処理に対応している。１８行目は、スタック(＄ｓｐ+０番地)のデータをレジスタ１(＄１)に代入している。１９行目は、スタック(＄ｓｐ+４番地)のデータをレジスタ６(＄６)に代入している。２０行目は、スタック(＄ｓｐ+８番地)のデータをレジスタ７(＄７)に代入している。２１行目は、スタック(＄ｓｐ+１２番地)のデータをレジスタ８(＄８)に代入している。２２行目は、２行目で確保したスタック上の１６バイト分を開放している。２３行目は、レジスタ１(＄１)に格納された戻り番地へジャンプしている。
【００２８】
図９は、本発明の実施例に係る間接命令レジスタ群１０６を初期化するためのプログラムの一例である。１行目は、初期化データの番地をＩ＿ＲＵＮ＿ＤＡＴＡとして定義している。２行目は、以降のデータが４バイト単位(３２ビット)であることを宣言している。３行目は、３つのデータ、１，ＢＩＮ（ａｄｄ，＄ｓｐ，−１６，０），０を定義している。ここで、ＢＩＮ（ａｄｄ，＄ｓｐ，−１６，０）は、従来技術の直接命令「ａｄｄ  ＄ｓｐ，−１６」に対応する数値を表す記法とする。例えば、命令データを４バイト(３２ビット)とし、１番目のバイトが命令コードとし、２〜４番目のバイトが命令コードに対する引数とし、ａｄｄに対応する数値を０ｘ１０とし、＄ｓｐに対応する数値を０ｘ０ｆ、−１６に対応する数値を０ｘ９０、０に対応する数値を０ｘ００とすると、ＢＩＮ（ａｄｄ，＄ｓｐ，−１６，０）は、数値０ｘ１０＿０ｆ＿９０＿００を表す。４行目は、３つのデータ、１，ＢＩＮ(ｌｄｃ，＄０，＄ｌｐ，０)，０を定義している。同様に、５〜１３行目は、各行３つのデータを定義している。
【００２９】
１４行目以降は、３〜１３行目に定義したデータを用いて、間接命令レジスタ群１０６を初期化する命令列である。１４行目は、初期化命令列が配置されるメモリ番地を＿ｉｎｉｔとして定義している。１５行目は、レジスタ４(＄４)に初期化データが配置された番地Ｉ＿ＲＵＮ＿ＤＡＴＡを代入している。１６行目は、レジスタ５(＄５)に１１(初期化データの個数／３)を代入している。１７行目は、レジスタ６(＄６)に０を代入している。レジスタ６は初期化データを格納する間接命令レジスタの番号を保持している。１８行目は、３１行目の＿ｉｎｉｔ＿ｌｏｏｐまでの命令をレジスタ５(＄５)に格納されたデータの回数だけ繰り返すことを意味している。１９行目は、レジスタ６(＄６)で指定される間接命令レジスタの回数レジスタに、レジスタ４(＄４)が指し示すメモリの内容を代入している。２０行目は、次の初期化データの先頭番地を求めるためにレジスタ４(＄４)に４を加算している。２１行目は、レジスタ６(＄６)で指定される間接命令レジスタの命令レジスタに、レジスタ４(＄４)が指し示すメモリの内容を代入している。２２行目は、次の初期化データの先頭番地を求めるためにレジスタ４(＄４)に４を加算している。２３行目は、レジスタ６(＄６)で指定される間接命令レジスタの差分レジスタに、レジスタ４(＄４)が指し示すメモリの内容を代入している。２４行目は、次の初期化データの先頭番地を求めるためにレジスタ４(＄４)に４を加算している。２５行目は、レジスタ６(＄６)に１を加算している。１５〜２６行目の命令列によって、図１２に示すように間接命令レジスタ０〜１０に格納されたデータが初期化される。
【００３０】
図１０は、本発明の実施例による命令数の削減効果を示すプログラムの一例である。なお、間接命令レジスタ群１０６は初期化されているものとする。
【００３１】
２行目は、間接命令レジスタ０〜５を使用して直接命令を生成している。間接命令レジスタ０によって図８の２行目の直接命令が、間接命令レジスタ１によって図８の３行目の直接命令が、間接命令レジスタ２によって図８の４行目の直接命令が、間接命令レジスタ３によって図８の５〜７行目の直接命令が、間接命令レジスタ４によって図８の８〜１０行目の直接命令が、間接命令レジスタ５によって図８の１１〜１３行目の直接命令が、それぞれ生成される。図１０の３行目は、図８の１４行目を同一の直接命令である。図１０の４行目は、間接命令レジスタ６〜１０を使用して直接命令を生成している。間接命令レジスタ６によって図８の１５〜１７行目の直接命令を、間接命令レジスタ７によって図８の１８行目の直接命令を、間接命令レジスタ８によって図８の１９〜２１行目の直接命令を、間接命令レジスタ９によって図８の２２行目の直接命令を、間接命令レジスタ１０によって図８の２３行目の直接命令を、それぞれ生成している。図８の命令数が２２、図１０の命令数が３となっている。ここで、間接命令レジスタ０〜１０を初期化するデータが３３、初期化用命令列＿ｉｎｉｔの命令数が１１であるので、２２＜４７（＝３＋３３＋１１）となり、命令数が削減されていないことになる。しかし、間接命令レジスタ群１０６のデータを関数ｆｏｏ以外でも使用する場合には、初期化データと初期化命令列の間のオーバーヘッドは無視することが出来る。
【００３２】
図１１は、図８の２〜７行目、１８〜２３行目のスタックへのレジスタの退避とスタックからレジスタの復帰を行う命令列だけを本発明の間接命令ｉ＿ｒｕｎによって置き換えた場合のプログラムの一例である。この例では、２行目と１３行目において本発明の実施例に係る間接命令ｉ＿ｒｕｎを使用している。２行目の間接命令ｉ＿ｒｕｎによる命令削減数が５、１３行目の間接命令ｉ＿ｒｕｎによる命令削減数も５であるので、間接命令の出現回数をＮとすると、命令の削減数＝（５＋５）＊Ｎとなる。一方、間接命令レジスタ群１０６のうち０〜３と７〜１０の８個のみを使用するため必要な初期化データは２４（＝８＊３）、初期化命令列の命令数は１１である。初期化のオーバーヘッド３５（＝２４＋１１）を命令削減数が上回るためには、１０＊Ｎ＞３５、すなわち、Ｎ＞３．５となる。従って、Nが３．５以上であれば初期化のオーバーヘッドを無視出来ることがわかった。一般的なプログラムでは、少なくとも数百個程度の関数を使用するため、Ｎが３．５未満になることは非常に稀である。例えば、Ｎが１００の場合の命令削減数は、命令削減数＝１０＊１００−３５＝９６５となる。１つの命令が４バイト(３２ビット)とすると、命令削減バイト数＝９６５＊４＝３８６０バイトとなる。すなわち、３８６０バイト分のメモリ１０１の容量を削減できることになる。
【図面の簡単な説明】
【００３３】
【図１】本発明の実施例に係るプロセッサの構成を示すブロック図である。
【図２】本発明の実施例に係る間接命令レジスタ群１０６の構成を示すブロック図である。
【図３】本発明の実施例に係る間接命令解釈部１０４の構成を示すブロック図である。
【図４】本発明の実施例に係る間接命令の概略を示す概略図である。
【図５】本発明の実施例に係る間接命令解釈処理の処理手順を示すフローチャートである。
【図６】本発明の実施例に係る第２命令実行処理の処理手順を示すフローチャートである。
【図７】Ｃ言語で記述されたプログラムの一例である。
【図８】従来のコンパイラによって図７のプログラムから得られた命令列の一例である。
【図９】本発明の実施例に係る間接命令レジスタ群１０６を初期化するためのプログラムの一例である。
【図１０】本発明の実施例による命令数の削減効果を示すプログラムの一例である。
【図１１】図８の２〜７行目、１８〜２３行目のスタックへのレジスタの退避とスタックからレジスタの復帰を行う命令列だけを本発明の間接命令ｉ＿ｒｕｎによって置き換えた場合のプログラムの一例である。
【図１２】本発明の実施例に係る間接命令レジスタ０〜１０に格納されたデータが初期化された場合のデータの一例である。
【符号の説明】
【００３４】
１０１  メモリ
１０２  命令キャッシュ
１０３  データキャッシュ
１０４  間接命令解釈部
１０５  直接命令生成部
１０６  間接命令レジスタ群
１０７  データレジスタ群
１０８  直接命令実行部
【図１】
2008217126.tif 000003
【図２】
2008217126.tif 000004
【図３】
2008217126.tif 000005
【図４】
2008217126.tif 000006
【図５】
2008217126.tif 000007
【図６】
2008217126.tif 000008
【図７】
2008217126.tif 000009
【図８】
2008217126.tif 000010
【図９】
2008217126.tif 000011
【図１０】
2008217126.tif 000012
【図１１】
2008217126.tif 000013
【図１２】
2008217126.tif 000014