(57)【要約】【課題】簡単な構造を有しながら、命令データの追加や削除という修正が可能な計算機等を提供する。【解決手段】マイクロコンピュータ１００は、命令データ列が記憶されたＲＯＭ１２０と、ＩＲ１１１、特定命令アドレスＳＩＡを示すＰＣ１１２を有するＣＰＵ１１０と、追加命令データと追加アドレスとを記憶可能な命令追加レジスタ１３１等と、特定命令アドレスＳＩＡと追加アドレスとを比較する追加アドレス比較回路１４０と、命令セレクタ１５０とを備える。追加アドレス比較回路１４０で特定命令アドレスＳＩＡと追加アドレスとが不一致のとき、命令セレクタ１５０は、特定命令データＳＩＤをＩＲ１１１に出力する。一方、特定命令アドレスＳＩＡと追加アドレスとが一致したとき、ＰＣ１１２は特定命令アドレスＳＩＡの更新を停止し、命令セレクタ１５０は、追加命令データを選択してＩＲ１１１に出力する。【選択図】　図２
2004046318.tif 000002
【特許請求の範囲】
【請求項１】
命令データ列が記憶されたメモリと、
命令レジスタ、及び、
上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有する
ＣＰＵと、
外部から書き込み可能で、上記命令データ列に追加する追加命令データとこの追加命令データを追加する位置を示す追加アドレスとからなるデータ−アドレス対を少なくとも１対以上記憶可能に構成されてなる追加命令記憶手段と、
上記プログラムカウンタの示す上記特定命令アドレスと上記追加命令記憶手段に記憶された上記追加アドレスとを比較する第１比較手段と、
上記特定命令データと上記追加命令データのいずれかを選択して、上記命令レジスタに出力する選択手段と、
を備える計算機であって、
上記第１比較手段において、
上記特定命令アドレスと上記追加アドレスとが不一致であるとき、
上記選択手段は上記特定命令データを選択して上記命令レジスタに出力し、
上記特定命令アドレスと上記追加アドレスとが一致したとき、
上記プログラムカウンタは上記特定命令アドレスの更新を停止し、
上記選択手段は上記特定命令データ、及び、上記追加命令記憶手段に記憶された追加命令データであって、上記特定命令アドレスに一致する追加アドレスと上記データ−アドレス対をなす追加命令データ、のいずれか一方を先に選択して上記命令レジスタに出力し、他方をその後に選択して出力する
計算機。
【請求項２】
請求項１に記載の計算機であって、
前記特定命令アドレスに一致する追加アドレスとデータ−アドレス対をなす追加命令データが、前記命令レジスタに重複なく出力されるようにする重複出力防止手段
を備える計算機。
【請求項３】
請求項２に記載の計算機であって、
前記重複出力防止手段は、
前記追加命令記憶手段から読み出すべき追加命令データと前記データ−アドレス対をなす前記追加アドレスを指示するポインタであって、
上記追加命令記憶手段に記憶されている複数の前記追加アドレスを所定の検索順序で検索して、前記プログラムカウンタが示す前記特定命令アドレスに一致する追加アドレスのうち、最初に検索された追加アドレスを指示するポインタと、
上記ポインタが上記特定命令アドレスに一致する追加アドレスを指示していなかったときには、次回に上記所定の検索順序の先頭から順に上記追加アドレスについて上記検索をさせ、
上記ポインタが上記特定命令アドレスに一致する追加アドレスを指示しているときには、次回に上記所定の順序のうちポインタが現在指示している上記追加アドレスから見て次以降の検索順序の追加アドレスについて上記検索をさせる
検索開始位置変更手段と、を備える
計算機。
【請求項４】
請求項１〜請求項３のいずれか１項に記載の計算機であって、
前記第１比較手段は、
前記プログラムカウンタの示す前記特定命令アドレスと前記追加命令記憶手段に記憶された追加アドレスとが一致したとき、
上記プログラムカウンタにおける上記特定命令アドレスの次回の更新を停止させる
計算機。
【請求項５】
請求項１〜請求項４のいずれか１項に記載の計算機であって、
前記追加命令記憶手段は、１または複数の追加用レジスタである
計算機。
【請求項６】
請求項５に記載の計算機であって、
前記メモリに記憶された前記命令データ列のデータ量と、
前記追加用レジスタに記憶された前記追加命令データのデータ量と、
の和が、上記メモリの記憶容量よりも大きい
計算機。
【請求項７】
請求項１〜請求項６のいずれか１項に記載の計算機を、１つの集積回路チップに実現してなる集積回路装置。
【請求項８】
命令データ列が記憶されたメモリと、
命令レジスタ、及び、
上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有する
ＣＰＵと、
外部から書き込み可能で、上記命令データ列から削除する命令データの位置を示す削除アドレスを少なくとも１つ以上記憶可能に構成されてなる削除位置記憶手段と、
上記プログラムカウンタの示す上記特定命令アドレスと上記削除位置記憶手段に記憶された上記削除アドレスとを比較する第２比較手段と、を備え、
上記第２比較手段は、
上記特定命令アドレスと上記削除アドレスとが一致したとき、上記プログラムカウンタにおける上記特定命令アドレスの値を２回分更新させる
計算機。
【請求項９】
命令データ列が記憶されたメモリと、
命令レジスタ、及び、
上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有する
ＣＰＵと、
外部から書き込み可能で、上記命令データ列に追加する追加命令データとこの追加命令データを追加する位置を示す追加アドレスとからなるデータ−アドレス対を少なくとも１対以上記憶可能に構成されてなる追加命令記憶手段と、
を備える計算機における命令実行方法であって、
上記プログラムカウンタの示す上記特定命令アドレスと上記追加命令記憶手段に記憶された追加アドレスとを比較し、
上記特定命令アドレスと上記追加アドレスとが不一致であるとき、
上記特定命令データを上記命令レジスタに出力して、上記特定命令データを上記ＣＰＵで実行し、
上記特定命令アドレスと上記追加アドレスとが一致したとき、
上記プログラムカウンタにおける上記特定命令アドレスの更新を停止し、
上記特定命令データと、上記追加命令記憶手段に記憶された追加命令データであって、上記特定命令アドレスに一致する追加アドレスと上記データ−アドレス対をなす追加命令データと、のいずれか一方を先に上記命令レジスタに出力し、他方をその後に出力して、上記追加命令データ及び上記特定命令データを上記ＣＰＵで実行する
計算機における命令実行方法。
【請求項１０】
命令データ列が記憶されたメモリと、
命令レジスタ、及び、
上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有する
ＣＰＵと、
外部から書き込み可能で、上記命令データ列から削除する命令データの位置を示す削除アドレスを少なくとも１つ以上記憶可能に構成されてなる削除位置記憶手段と、
を備える計算機における命令実行方法であって、
上記プログラムカウンタの示す上記特定命令アドレスと上記削除位置記憶手段に記憶された上記削除アドレスとを比較し、
上記特定命令アドレスと上記削除アドレスとが一致したとき、
上記プログラムカウンタにおける上記特定命令アドレスの値を２回分更新し、
その後、上記プログラムカウンタの示す更新された特定命令アドレスに従って、上記メモリから上記特定命令データを上記命令レジスタに出力し、上記ＣＰＵで実行する
計算機における命令実行方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機及びその命令実行方法に関し、特に、命令を修正（追加あるいは削除）できる計算機、これを１チップに集積した集積回路装置、及び計算機におけるこのような修正（追加や削除）を含む命令実行方法に関する。
【０００２】
【従来の技術】
図９に示すように、マイクロコンピュータ１０には、ＣＰＵ１のほかマスクＲＯＭ４を内蔵するものがある。このマイクロコンピュータ１０では、マスクＲＯＭ４に格納されプログラムを成す命令データ列のうち、プログラムカウンタ３に示す特定命令アドレスで特定される特定命令データをインストラクションレジスタ２に順次読み込んでＣＰＵ１で実行し、所定の結果を得るようにされている。
【０００３】
しかし、マスクＲＯＭ４に記憶させたプログラム（命令データ列）にバグが発見された場合には、そのプログラムを修正することができず、マイクロコンピュータを廃棄せざるを得なかった。
【０００４】
これに対し、特開昭６１−２３９３３０号では、ＲＯＭ／ＲＡＭに格納されたプログラムを、ＲＡＭに記憶した修正プログラムで置き換えるマイクロプログラム修正方式が開示されている。具体的には、実行されているプログラムが修正したい箇所に達したとき、アドレス生成回路の動作を停止させ、ＲＡＭに記憶されていた修正プログラムを実行させる。修正プログラムの最後には無条件分岐命令を置き、この命令により、ＲＯＭ／ＲＡＭに格納されたプログラムの実行に戻り、アドレス生成回路の動作を再開させる。かくして、プログラムを修正して実行できたこととなる。
【０００５】
また、特開昭５８−３１４５０号では、ＲＯＭに格納されたプログラムの所望部分を、１ステップ毎に変更するプログラム変更方式が開示されている。具体的には、プログラムの進行により、命令を記憶したＲＯＭのアドレスを指示するアドレスレジスタの値と、変更プログラム・アドレスレジスタの値とが一致したとき、ＲＯＭからの命令に代えて、変更データ用レジスタの内容をマイクロプロセッサで実行させた後に、これをストップさせ、変更データ用レジスタと変更プログラム・アドレスレジスタの内容を変更し、マイクロプロセッサにおけるプログラムの実行を再開することで、繰り返し変更動作を行うことができる。かくして、プログラムを修正して実行できたこととなる。
【０００６】
【発明が解決しようとする課題】
しかしながら、上述の特開昭６１−２３９３３０号では、修正プログラム（命令データ）のほか、その最後に無条件分岐命令を置く必要があり、この無条件分岐命令を処理する時間が余分にかかる。また、複雑な構造のマイクロプログラム修正手段を要し、マイクロコンピュータのチップサイズが大きくなるなどコストアップになる。
また、上述の特開昭５８−３１４５０号では、命令の変更後にマイクロプロセッサをストップする必要があり、ストップと再開により大きなデッドサイクルが生じる。また、ＲＯＭからの命令を、変更データ用レジスタの内容に置き換えて実行させるものであり、命令の追加や削除は不可能である。
本発明はかかる問題点に鑑みてなされたものであって、簡単な構造を有しながら、命令データの追加や削除という修正が可能な計算機、これを１チップに集積した集積回路装置、及び計算機における命令実行方法を提供することを目的とする。
【０００７】
【課題を解決するための手段、作用及び効果】
その解決手段は、命令データ列が記憶されたメモリと、命令レジスタ、及び、上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有するＣＰＵと、外部から書き込み可能で、上記命令データ列に追加する追加命令データとこの追加命令データを追加する位置を示す追加アドレスとからなるデータ−アドレス対を少なくとも１対以上記憶可能に構成されてなる追加命令記憶手段と、上記プログラムカウンタの示す上記特定命令アドレスと上記追加命令記憶手段に記憶された上記追加アドレスとを比較する第１比較手段と、上記特定命令データと上記追加命令データのいずれかを選択して、上記命令レジスタに出力する選択手段と、を備える計算機であって、上記第１比較手段において、上記特定命令アドレスと上記追加アドレスとが不一致であるとき、上記選択手段は上記特定命令データを選択して上記命令レジスタに出力し、上記特定命令アドレスと上記追加アドレスとが一致したとき、上記プログラムカウンタは上記特定命令アドレスの更新を停止し、上記選択手段は上記特定命令データ、及び、上記追加命令記憶手段に記憶された追加命令データであって、上記特定命令アドレスに一致する追加アドレスと上記データ−アドレス対にをなす追加命令データ、のいずれか一方を先に選択して上記命令レジスタに出力し、他方をその後に選択して出力する計算機である。
【０００８】
本発明の計算機は、メモリに記憶された命令データ列（プログラム）の所望位置に命令データを追加するに当たり、第１比較手段において、プログラムカウンタ（以下、単にＰＣともいう）の示す特定命令アドレスと追加する位置を示す追加アドレスとが一致した場合に、プログラムカウンタにおける特定命令アドレスの更新を停止させる。これと共に、メモリに記憶され特定命令アドレスで特定される特定命令データと前後して、一致した追加アドレスとデータ−アドレス対を成して追加命令記憶手段に記憶されている追加命令データを命令レジスタに出力する。従って、ＣＰＵで実行しているプログラムを中断することなく、命令データ列の中に追加命令データを追加して実行させることができる。このため、プログラムの中断に伴うデッドサイクルが生じない。
【０００９】
ここで、メモリには、マスクＲＯＭのほか、フィールドＰＲＯＭを用いることができる。さらに、ＥＰＲＯＭ，ＥＥＰＲＯＭ，フラッシュメモリ，ＲＡＭなどを用いることもできる。特にマスクＲＯＭ、フィールドＰＲＯＭを用いるものに本発明を適用するのが好ましい。これらのＲＯＭは、一旦記憶させた命令データ列を修正できないからである。
また、追加命令記憶手段は、データ−アドレス対を成す追加命令データと追加アドレスとを互いに関連づけて記憶できればよく、例えば、レジスタやＲＡＭ，ＰＲＯＭ，ＥＰＲＯＭ，ＥＥＰＲＯＭ，フラッシュメモリなどで構成することができる。特に、追加したい命令データが少量（例えば１ワード〜数１０ワード程度）の場合には、追加命令記憶手段としてレジスタを用いるのが好ましい。アドレス線などを形成しなくても良く、簡単な構造でレジスタを構成できるからである。一方、追加する命令データが多量の場合には、追加命令記憶手段としてＲＡＭやＰＲＯＭ等を用いるのが好ましい。但し、アドレス制御などが必要になるので、アドレス線を形成する必要があるなど、計算機の回路構成が複雑になる。
【００１０】
さらに、請求項１に記載の計算機であって、前記特定命令アドレスに一致する追加アドレスとのデータ−アドレス対をなす追加命令データが、前記命令レジスタに重複なく出力されるようにする重複出力防止手段を備える計算機とすると良い。
【００１１】
前述の計算機では、特定命令アドレスと追加アドレスとが一致すると、プログラムカウンタでの特定命令アドレスの更新が停止されるため、プログラムカウンタが示す特定命令アドレスが変化しない。すると、次のサイクルでも再び、特定命令アドレスと追加アドレスとが一致することとなる。このため、同じ追加命令データが無限回追加されることとなり、適切にプログラムの実行ができないおそれがある。
そこで、本発明のように重複出力防止手段を備えることにより、既に出力された追加命令データを重複して出力することが防止されるので、適切に追加命令データを追加したプログラムを実行することができるようになる。
しかも、プログラム（命令データ列）の同じ位置に連続して複数の追加命令データを追加したいために、同じ追加アドレスを有するデータ−アドレス対が複数記憶されている場合でも、この重複出力防止手段を備えることにより、このような同じ追加アドレスを有する複数のデータ−アドレス対に属する各追加命令データを、順次重複なく命令レジスタに出力することができる。このため、１つの追加命令データを追加する場合でも、あるいは複数の追加命令データを連続して追加する場合でも、適切に命令データを追加したプログラムを実行することができる。
【００１２】
さらに、請求項２に記載の計算機であって、前記重複出力防止手段は、前記追加命令記憶手段から読み出すべき追加命令データと前記データ−アドレス対をなす前記追加アドレスを指示するポインタであって、上記追加命令記憶手段に記憶されている複数の前記追加アドレスを所定の検索順序で検索して、前記プログラムカウンタが示す前記特定命令アドレスに一致する追加アドレスのうち、最初に検索された追加アドレスを指示するポインタと、上記ポインタが上記特定命令アドレスに一致する追加アドレスを指示していなかったときには、次回に上記所定の検索順序の先頭から順に上記追加アドレスについて上記検索をさせ、上記ポインタが上記特定命令アドレスに一致する追加アドレスを指示しているときには、次回に上記所定の順序のうちポインタが現在指示している上記追加アドレスから見て次以降の検索順序の追加アドレスについて上記検索をさせる検索開始位置変更手段と、を備える計算機とすると良い。
【００１３】
本発明の計算機では、重複出力防止手段として、ポインタと検索開始位置変更手段を有している。具体的には、各追加アドレスについて、プログラムカウンタが示す特定命令アドレスと一致するものを検索し、最初に一致する追加アドレスを指示するポインタを備える。さらに、このポインタが特定命令アドレスに一致する追加アドレスを指示していないときには、次回に所定の検索順序の先頭から追加アドレスについて一致検索をする。一方、このポインタが特定命令アドレスに一致する追加アドレスを指示しているときには、このポインタが現在示している追加アドレスから見て次以降の検索順序の追加アドレスについて一致検索をする検索開始位置変更手段を有している。従って、既に出力されたことのある追加命令データが、２回以上重複して出力されることがない。
なお、追加命令データをプログラムのループ部分内に追加したい場合がある。この場合、このループ部分が実行される度に、追加命令データを追加する必要がある。これに対し、本発明の計算機では、ポインタが特定命令アドレスに一致する追加アドレスを指示していないときには、次回に所定の順序の先頭から追加アドレスについて一致検索をするため、ループ部分が実行される度に、繰り返し追加命令データを適切に追加することができる。
【００１４】
あるいは、請求項２に記載の計算機であって、前記重複出力防止手段は、記憶されている複数の前記データ−アドレス対とそれぞれ１対１に関連づけられた出力済記憶部と、前記命令レジスタに上記データ−アドレス対に属する前記追加命令データが出力されたときに、対応する上記出力済記憶部に出力済を示す出力済データを記録する出力済記録手段と、上記出力済済データが記録されている上記出力済記憶部に関連づけられた上記データ−アドレス対に属する上記追加命令データの上記命令レジスタへの出力を禁止する出力禁止手段と、を含む計算機とするのが好ましい。
【００１５】
この計算機では、各データ−アドレス対と関連づけられた出力済記憶部を備え、この出力済記録手段では、データ−アドレス対に属する追加命令データが出力されたときにこれを出力済データとして記録する。出力禁止手段は、出力済データが記録されている出力済記憶部に関連づけられたデータ−アドレス対に属する追加命令データを命令レジスタへ出力するのを禁止する。このため、既に出力されたことのある追加命令データが、２回以上重複して出力されることがない。
なお、出力済記憶部としては、出力済データが記憶できるものであればよいが、例えば、各データ−アドレス対と関連づけられたフラグビットが挙げられる。フラグビットを用いると、最小の出力済記憶部とすることができ、出力済記憶部を形成したことによるチップ面積の増加などの影響を最小限に抑えることができるので特に好ましい。
【００１６】
さらに、上記いずれか１項に記載の計算機であって、前記第１比較手段は、前記プログラムカウンタの示す前記特定命令アドレスと前記追加命令記憶手段に記憶された前記追加アドレスとが一致したとき、上記プログラムカウンタにおける上記特定命令アドレスの次回の更新を停止させる計算機とすると良い。
【００１７】
本発明の計算機では、特定命令アドレスと追加アドレスとが一致したとき、プログラムカウンタにおける特定命令アドレスの次回の更新を停止させる。従って、追加命令データを１つ追加する場合には、１回だけ更新が停止される。一方、追加命令データを連続して２つ以上（例えば３つ）追加する場合には、連続して追加する追加命令データとデータ−アドレス対を成す複数（例えば３つ）の追加アドレスがいずれも同じ値になっているから、特定命令アドレスと追加アドレスとが、追加する追加命令データの数と同じ回数（例えば３回）連続して一致することとなる。ここで、各回毎に次回の更新が停止されるので、結局連続して追加する追加命令データの数と同じ回数（例えば３回）だけＰＣが停止されることになる。
そしてその後は、更新が再開される。更新の再開後には、更新された特定命令アドレスと追加アドレスとが不一致となり、再び特定命令アドレスで特定される特定命令データが命令レジスタに出力されてＣＰＵでの処理が実行される。かくして、１または複数の追加命令データを追加してＣＰＵに実行させた後、無条件ジャンプなどを介在させずに、直ちに本来のプログラム（命令データ列）の実行に戻ることができるので、命令追加に伴う処理時間の無駄が生じない。
【００１８】
さらに、上記のいずれか１項に記載の計算機であって、前記追加命令記憶手段は、１または複数の追加用レジスタである計算機とすると良い。
【００１９】
一般に、データ等を記憶する記憶手段としてＲＡＭやＰＲＯＭなどを用いる場合には、記憶できる容量を大きくしやすいが、ＲＡＭ等を制御するに当たって、アドレス線を形成する必要があり、また、制御のため多くの回路が必要となる。従って、命令追加の機能を付加するために増加するチップ面積も大きくなりがちである。一方、レジスタは、簡易な回路構成で構成できるが、多数のレジスタを形成するのは困難である。
ところで、ＲＯＭなどのメモリに記憶された命令データ列からなるプログラムを修正する場合には、僅かな追加命令データの追加（例えば数ワード分）で済むことが多く、このためにＲＡＭ等を用いると多くの記憶領域が無駄になりやすい。
これに対し、本発明の計算機では、追加命令記憶手段として追加用レジスタを備える。このため、簡易な回路で構成できる追加用レジスタを適数個構成しておけば良く、ＲＡＭ等を用いる場合のようにアドレス線を形成する必要もなく、簡易な制御で済む。僅かな数の追加命令データの追加であれば、このような追加用レジスタを設けることで足りることが多い。また、このような機能を付加するために増加するチップ面積も小さくて済ませられる。
【００２０】
さらに、上記計算機であって、前記メモリに記憶された前記命令データ列のデータ量と、前記追加用レジスタに記憶された前記追加命令データのデータ量と、の和が、上記メモリの記憶容量よりも大きい計算機とすると良い。
【００２１】
マイクロコンピュータなどの計算機を製作する場合に、記憶させたいプログラムが計算機に形成するＲＯＭ等のメモリの記憶容量をやむを得ず越えてしまう場合がある。例えば、２５６ワードの記憶容量を持つＲＯＭを用いることを予定してプログラミングを行ったが、やむを得ずプログラムが２６０ワードのデータ量となってしまう場合がある。このような場合、通常は、ＲＯＭの記憶容量を３８４ワードや５１２ワードに増やすことになる。しかし、新たなアドレス線の追加などが必要になる上、数ワード程度（上記では４ワード）の命令データの記憶のために、１２８ワードや２５６ワードなど大きな記憶容量を持つメモリを追加形成することとなり無駄が多い。
これに対し、本発明の計算機では、メモリの記憶容量を超える分のプログラムもメモリと追加用レジスタとで記憶し実行することができるので、アドレス線の追加も不要であり、メモリの無駄もない。
【００２２】
さらに、上記いずれか１項に記載の計算機であって、外部から書き込み可能で、前記命令データ列から削除する命令データの位置を示す削除アドレスを少なくとも１つ以上記憶可能に構成されてなる削除位置記憶手段と、前記プログラムカウンタの示す前記特定命令アドレスと上記削除位置記憶手段に記憶された上記削除アドレスとを比較する第２比較手段と、を備え、上記第２比較手段は、上記特定命令アドレスと上記削除アドレスとが一致したとき、上記プログラムカウンタにおける上記特定命令アドレスの値を２回分更新させる計算機とするのが好ましい。
【００２３】
この計算機では、プログラムを成す命令データ列に追加命令データを追加することも、命令データ列から命令データを削除することもできる。従って、追加と削除を組み合わせれば、命令データの変更も可能となる。
【００２４】
さらに、上記いずれか１項に記載の計算機を、１つの集積回路チップに実現してなる集積回路装置とすると良い。
【００２５】
本発明の集積回路装置では、１チップに上述の計算機を実現してなるので、さらに安価にすることができる。
【００２６】
他の解決手段は、命令データ列が記憶されたメモリと、命令レジスタ、及び、上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有するＣＰＵと、外部から書き込み可能で、上記命令データ列から削除する命令データの位置を示す削除アドレスを少なくとも１つ以上記憶可能に構成されてなる削除位置記憶手段と、上記プログラムカウンタの示す上記特定命令アドレスと上記削除位置記憶手段に記憶された上記削除アドレスとを比較する第２比較手段と、を備え、上記第２比較手段は、上記特定命令アドレスと上記削除アドレスとが一致したとき、上記プログラムカウンタにおける上記特定命令アドレスの値を２回分更新させる計算機である。
【００２７】
ＣＰＵが有するプログラムカウンタは、クロック信号の１周期毎に、特定命令アドレスの値を更新して、次に読み込む特定命令データが記憶されている特定命令アドレスを示す。
これに対し、本発明の計算機では、第２比較手段において、プログラムカウンタの示す特定命令アドレスと削除アドレスとが一致したとき、特定命令アドレスの値を２回分更新する。つまり更新を２回行ったのと同じだけ特定命令アドレスの値を変化させる。例えば、現在、プログラムカウンタで指示している特定命令アドレスの値が３である場合、通常、次にプログラムカウンタで示す特定命令アドレスの値は＋１されて４に更新されるはずである。しかるに、記憶されていた削除アドレスが３であるために、現在の特定命令アドレス＝３と一致した場合には、第２比較手段はプログラムカウンタの特定命令アドレスを、＋１を２回分つまり＋２して５（＝３＋２）に更新する。従って、次にメモリから命令レジスタに出力されるのは、特定命令アドレス＝５で特定される記憶領域に記憶されていた特定命令データとなる。つまり、特定命令アドレス＝４で特定される記憶領域に記憶されていた特定命令データが命令レジスタに出力されることなくプログラムをなす命令データ列の実行が進行することになる。かくして、プログラムをなす命令データ列から実質的に削除アドレスで特定される命令データを削除できる。
【００２８】
さらに、上記計算機であって、前記削除位置記憶手段は、削除用レジスタである計算機とするのが好ましい。
一般に、データ等を記憶する記憶手段としてＲＡＭやＰＲＯＭなどを用いる場合には、記憶できる容量を大きくしやすいが、ＲＡＭ等を制御するに当たって、アドレス線を形成する必要があり、また、制御のため多くの回路が必要となる。従って、このような機能を付加するために増加するチップ面積も大きくなりがちである。一方、レジスタは、簡易な回路構成で構成できるが、多数のレジスタを形成するのは困難である。
ところで、ＲＯＭ等のメモリに記憶された命令データ列からなるプログラムを修正する場合には、僅かな数の命令データ（例えば数ワード分）を削除出来れば済むことが多く、このためにＲＡＭ等を用いると多くの記憶領域が無駄になりやすい。
これに対し、本発明の計算機では、削除位置記憶手段として削除用レジスタを備える。このため、簡易な回路で構成できる削除用レジスタを適数個構成しておけば良く、ＲＡＭ等を用いる場合のようにアドレス線を形成する必要もなく、簡易な制御で済む。僅かな数の命令データの削除であれば、このような削除用レジスタを設けることで足りることが多い。また、このような機能を付加するために増加するチップ面積も小さくて済ませられる。
【００２９】
さらに上記計算機を、１つの集積回路チップに実現してなる集積回路装置とするのが好ましい。
この集積回路装置では、１チップに上述の計算機を実現してなるので、さらに安価にすることができる。
【００３０】
さらに他の解決手段は、命令データ列が記憶されたメモリと、命令レジスタ、及び、上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有するＣＰＵと、外部から書き込み可能で、上記命令データ列に追加する追加命令データとこの追加命令データを追加する位置を示す追加アドレスとからなるデータ−アドレス対を少なくとも１対以上記憶可能に構成されてなる追加命令記憶手段と、を備える計算機における命令実行方法であって、上記プログラムカウンタの示す上記特定命令アドレスと上記追加命令記憶手段に記憶された上記追加アドレスとを比較し、上記特定命令アドレスと上記追加アドレスとが不一致であるとき、上記特定命令データを上記命令レジスタに出力して、上記特定命令データを上記ＣＰＵで実行し、上記特定命令アドレスと上記追加アドレスとが一致したとき、上記プログラムカウンタにおける上記特定命令アドレスの更新を停止し、上記特定命令データと、上記追加命令記憶手段に記憶された追加命令データであって、上記特定命令アドレスに一致する追加アドレスと上記データ−アドレス対をなす追加命令データと、のいずれか一方を先に上記命令レジスタに出力し、他方をその後に出力して、上記追加命令データ及び上記特定命令データを上記ＣＰＵで実行する計算機における命令実行方法である。
【００３１】
本発明の計算機における命令実行方法では、メモリに記憶された命令データ列（プログラム）の所望位置に追加命令データを追加するに当たり、プログラムカウンタの示す追加命令アドレスと追加する位置を示す追加アドレスとが一致した場合に、プログラムカウンタにおける特定命令アドレスの更新を停止させる。これと共に、メモリに記憶され特定命令アドレスで特定される特定命令データと前後して、一致した追加アドレスとデータ−アドレス対を成して追加命令記憶手段に記憶されている追加命令データを命令レジスタに出力する。従って、ＣＰＵで実行しているプログラムを中断することなく、命令データ列の中に追加命令データを追加して実行させることができる。このため、プログラムの中断に伴うデッドサイクルが生じない。
【００３２】
さらに、上記計算機における命令実行方法であって、前記プログラムカウンタの示す前記特定命令アドレスと前記追加命令記憶手段に記憶された追加アドレスとが一致したとき、上記特定命令アドレスに一致する追加アドレスと前記データ−アドレス対をなす前記追加命令データを、前記命令レジスタに重複なく出力する計算機における命令実行方法とするのが好ましい。
【００３３】
前述の計算機における命令実行方法では、プログラムカウンタの示す特定命令アドレスと追加アドレスとが一致すると、プログラムカウンタでの特定命令アドレスの更新が停止されるため、特定命令アドレスが変化しない。すると、次のサイクルでも再び、特定命令アドレスと追加アドレスとが一致することとなる。このため、同じ追加命令データが無限回追加されることとなり、適切にプログラムの実行ができないおそれがある。
そこで、本発明の計算機における命令実行方法では、特定命令アドレスと追加アドレスとが一致したとき、一致する追加アドレスとデータ−アドレス対をなす追加命令データを、命令レジスタに重複なく出力する。これにより、適切に追加命令データを追加したプログラムを実行することができるようになる。
しかも、プログラム（命令データ列）の同じ位置に連続して複数の追加命令データを追加したいために、同じ追加アドレスを有するデータ−アドレス対が複数記憶されている場合でも、同じ追加アドレスを有する複数のデータ−アドレス対に属する追加命令データを、命令レジスタに重複なく出力することで、複数の追加命令データを順次に命令レジスタに出力することができる。
このため、１つの追加命令データを追加する場合でも、あるいは複数の追加命令データを連続して追加する場合でも、適切に命令データを追加したプログラムを実行することができる。
【００３４】
さらに上記計算機における命令実行方法であって、前記計算機は、前記追加命令記憶手段から読み出すべき追加命令データと前記データ−アドレス対をなす追加アドレスを指示するポインタであって、上記追加命令記憶手段に記憶されている複数の前記追加アドレスを所定の検索順序で検索して、前記プログラムカウンタが示す前記特定命令アドレスに一致する追加アドレスのうち、最初に検索された追加アドレスを指示するポインタを備え、上記ポインタが上記特定命令アドレスに一致する追加アドレスを指示していなかったときには、次回に上記所定の検索順序の先頭から順に上記追加アドレスについて上記検索をし、上記ポインタが上記特定命令アドレスに一致する追加アドレスを指示しているときには、次回に上記所定の検索順序のうちポインタが現在指示している追加アドレスから見て次以降の検索順序の追加アドレスについて上記検索をする計算機における命令実行方法とするのが好ましい。
【００３５】
この計算機における命令実行方法では、ポインタを用い、このポインタの検出結果によって検索の開始位置を変更している。具体的には、各追加アドレスについて、プログラムカウンタが示す特定命令アドレスと一致するものを検索し、最初に一致する追加アドレスを指示するポインタを備える。さらに、このポインタが一致する追加アドレスを指示していないときには、次回に所定の検索順序の先頭から追加アドレスについて一致検索をする。一方、このポインタが一致する追加アドレスを指示しているときには、このポインタが現在指示している追加アドレスから見て次以降の検索順序の追加アドレスについて一致検索をする。従って、既に出力されたことのある追加命令データが、２回以上重複して出力されることがない。
なお、追加命令データをプログラムのループ内に追加したい場合がある。この場合、このループ部分が実行される度に、追加命令データを追加する必要がある。これに対し、この計算機の命令実行方法では、ポインタが一致する追加アドレスを指示していないときには、次回に所定の検索順序の先頭から追加アドレスについて一致検索をするため、ループ部分が実行される度に、繰り返し追加命令データを適切に追加することができる。
【００３６】
あるいは、前記計算機における命令実行方法であって、前記計算機は、記憶されている複数の前記データ−アドレス対とそれぞれ１対１に関連づけられた出力済記憶部を備え、前記命令レジスタに上記データ−アドレス対に属する前記追加命令データを出力したときに、対応する上記出力済記憶部に出力済を示す出力済データを記録し、その後、上記出力済データが記録されている上記出力済記憶部に関連づけられた上記データ−アドレス対に属する上記追加命令データの上記命令レジスタへの出力を禁止する計算機における命令実行方法とするのが好ましい。
【００３７】
この計算機における命令実行方法では、計算機は各データ−アドレス対と関連づけられた出力済記憶部を備える。そして、データ−アドレス対に属する追加命令データが出力されたときにこれを出力済データとして記録し、出力済データが記録されている出力済記憶部に関連づけられたデータ−アドレス対に属する追加命令データの命令レジスタへの出力を禁止する。このため、既に出力されたことのある追加命令データが、２回以上重複して出力されることがない。
なお、出力済記憶部としては、出力済データが記憶できるものであればよいが、例えば、各データ−アドレス対と関連づけられたフラグビットが挙げられる。フラグビットを用いると、最小の出力済記憶部とすることができ、出力済記憶部を形成したことによるチップ面積の増加などの影響を最小限に抑えることができるので特に好ましい。
【００３８】
さらに、上記いずれか１項に記載の計算機における命令実行方法であって、前記プログラムカウンタの示す前記特定命令アドレスと前記追加命令記憶手段に記憶された前記追加アドレスとが一致したとき、上記プログラムカウンタにおける上記特定命令アドレスの次回の更新を停止させる計算機における命令実行方法とするのが好ましい。
【００３９】
この計算機における命令実行方法では、特定命令アドレスと追加アドレスとが一致したとき、プログラムカウンタにおける特定命令アドレスの次回の更新を停止させる。従って、追加命令データを１つ追加する場合には、１回だけ更新が停止される。一方、追加命令データを連続して２つ以上（例えば３つ）追加する場合には、特定命令アドレスと追加アドレスとが、一致するたびに次回の更新が停止されるので、結局連続して追加する追加命令データの数と同じ回数（例えば３回）だけＰＣが停止されることになる。
そしてその後は、更新が再開される。更新の再開後には、更新された特定命令アドレスと追加アドレスとが不一致となり、再びメモリに記憶され特定命令アドレスで特定される特定命令データ列が命令レジスタに出力されてＣＰＵでの処理が実行される。かくして、１または複数の追加命令データを追加してＣＰＵに実行させた後、無条件ジャンプなどを介在させずに、直ちに本来のプログラム（命令データ列）の実行に戻ることができるので、命令追加に伴う処理時間の無駄が生じない。
【００４０】
さらに上記いずれか１項に記載の計算機における命令実行方法であって、前記追加命令記憶手段は、１または複数の追加用レジスタである
計算機における命令実行方法とするのが好ましい。
【００４１】
ＲＯＭ等のメモリに記憶された命令データ列からなるプログラムを修正する場合には、僅かな追加命令データの追加（例えば数ワード分）で済むことが多く、ＲＡＭ等を用いると多くのメモリが無駄になりやすい。
これに対し、この計算機における命令実行方法では、追加命令記憶手段として追加用レジスタを備える。このため、簡易な回路で構成できる追加用レジスタを適数個構成しておけば良く、ＲＡＭ等を用いる場合に比して簡易な制御で済む。僅かな数の追加命令データの追加であれば、このような追加用レジスタを設けることで足りることが多い。また、このような機能を付加するために増加するチップ面積も小さくて済ませられる。
【００４２】
さらに上記計算機における命令実行方法であって、前記メモリに記憶された前記命令データ列のデータ量と、前記追加用レジスタに記憶された前記追加命令データのデータ量と、の和が、上記メモリの記憶容量よりも大きい計算機における命令実行方法とするのが好ましい。
マイクロコンピュータなどの計算機を製作する場合に、記憶させたいプログラムが計算機に形成するＲＯＭ等のメモリの記憶容量をやむを得ず越えてしまう場合がある。このような場合、メモリの記憶容量を増やすと新たなアドレス線の追加などが必要になる上、数ワード程度の命令データの記憶のために、大きな記憶容量を持つメモリを形成することとなり無駄が多い。
これに対し、この計算機における命令実行方法では、メモリの記憶容量を超える分のプログラムもメモリと追加用レジスタとで記憶し実行することができるので、アドレス線の追加も不要であり、メモリの無駄もない。
【００４３】
さらに上記いずれか１項に記載の計算機における命令実行方法であって、前記計算機は、外部から書き込み可能で、前記命令データ列から削除する命令データの位置を示す削除アドレスを少なくとも１つ以上記憶可能に構成されてなる削除位置記憶手段を備え、前記プログラムカウンタの示す前記特定命令アドレスと上記削除位置記憶手段に記憶された上記削除アドレスとを比較し、上記特定命令アドレスと上記削除アドレスとが一致したとき、上記プログラムカウンタにおける上記特定命令アドレスの値を２回分更新し、その後、上記プログラムカウンタの示す更新された特定命令アドレスに従って、前記メモリから前記特定命令データを前記命令レジスタに出力し、前記ＣＰＵで実行するを備える計算機における命令実行方法とするのが好ましい。
この計算機における命令実行方法では、プログラムを成す命令データ列に追加命令データを追加することも、命令データ列から命令データを削除することもできる。従って、追加と削除を組み合わせれば、命令データの変更も可能である。
【００４４】
さらに他の解決手段は、命令データ列が記憶されたメモリと、命令レジスタ、及び、上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有するＣＰＵと、外部から書き込み可能で、上記命令データ列から削除する命令データの位置を示す削除アドレスを少なくとも１つ以上記憶可能に構成されてなる削除位置記憶手段と、を備える計算機における命令実行方法であって、上記プログラムカウンタの示す上記特定命令アドレスと上記削除位置記憶手段に記憶された上記削除アドレスとを比較し、上記特定命令アドレスと上記削除アドレスとが一致したとき、上記プログラムカウンタにおける上記特定命令アドレスの値を２回分更新し、その後、上記プログラムカウンタの示す更新された特定命令アドレスに従って、上記メモリから上記特定命令データを上記命令レジスタに出力し、上記ＣＰＵで実行する計算機における命令実行方法である。
【００４５】
ＣＰＵが有するプログラムカウンタは、クロック信号の１周期毎に、命令アドレスの値を更新して、次に読み込む命令データが記憶されている命令アドレスを示す。
これに対し、本発明の計算機における命令実行方法では、プログラムカウンタの示す特定命令アドレスと削除アドレスとが一致したとき、特定命令アドレスの値を２回分更新する。つまり更新を２回行ったのと同じだけ特定命令アドレスの値を変化させる。従って、次に出力されることが予定されていた特定命令データが出力されず、次々回に出力される予定の命令データが、１回分早い次回に命令レジスタに出力されて、プログラムをなす命令データ列の実行が進行することになる。かくして、プログラムをなす命令データ列から実質的に削除アドレスで特定される命令データを削除できる。
【００４６】
さらに、上記計算機における命令実行方法であって、前記削除位置記憶手段は、削除用レジスタである計算機における命令実行方法とするのが好ましい。
ＲＯＭ等のメモリに記憶された命令データ列からなるプログラムを修正する場合には、僅かな数の命令データ（例えば数ワード分）を削除出来れば済むことが多く、ＲＡＭ等を用いると多くの記憶領域が無駄になりやすい。
これに対し、この計算機における命令実行方法では、削除位置記憶手段として削除用レジスタを備える。このため、簡易な回路で構成できる削除用レジスタを適数個構成しておけば良く、ＲＡＭ等を用いる場合のようにアドレス線を形成する必要もなく、簡易な制御で済む。僅かな数の命令データの削除であれば、このような削除用レジスタを設けることで足りることが多い。また、このような機能を付加するために増加するチップ面積も小さくて済ませられる。
【００４７】
【発明の実施の形態】
（実施形態）
本発明の実施の形態を図１〜図６を参照して説明する。本実施形態にかかるマイクロコンピュータ１００は、図１に示すように、シリコンからなる１つの半導体基板上にＣＰＵ，ＲＯＭ等の各機能を実現した、いわゆる１チップ型のマイクロコンピュータである。前述した従来のマイクロコンピュータと同様に、このマイクロコンピュータ１００は、インストラクションレジスタ（以下、単にＩＲともいう）１１１及びプログラムカウンタ（以下、単にＰＣともいう）１１２を含むＣＰＵ１１０とマスクＲＯＭ１２０とを有している（図２参照）。このマスクＲＯＭ１２０は２５６ワードの記憶容量を持ち、各命令アドレス（図２では、０，１，２，３，…）で特定される領域にそれぞれ命令データ（図２では、ＡＡＡＡ，ＢＢＢＢ，ＣＣＣＣ，ＤＤＤＤ，…）が記憶されている。プログラムを成すこれら命令データの列うち、ＰＣ１１２が示す特定命令アドレスＳＩＡで特定される特定命令データＳＩＤをＩＲ１１１に読み込みＣＰＵ１１０で実行することで所定の結果を得るようにされている。なお、ＰＣ１１２は、分岐命令などを実行しない場合には、クロック信号の１周期毎に、通常、特定命令アドレスＳＩＡの値を１つインクリメントする。従って、通常、クロック信号の１周期毎に、特定命令アドレスＳＩＡが１ずつカウントアップされる。
【００４８】
さらにこのマイクロコンピュータ１００には、マスクＲＯＭ１２０に記憶されている命令データ列（プログラム）に命令データを追加したい場合に用いる命令追加レジスタ１３０、追加アドレス比較回路１４０、及び命令セレクタ１５０を備える。命令追加レジスタ１３０は、実際には、１６ヶの命令追加レジスタ１３１，１３２，１３３…からなる。各命令追加レジスタ１３１等は、いずれも、外部からの書込処理により、命令データを追加する位置を指定する追加アドレス（例えば「３」など）を記憶するための追加アドレス記憶部１３１Ａ，１３２Ａ…と、追加すべき命令データである追加データ（たとえば「ＸＸＸＸ」など）を記憶するための追加データ記憶部１３１Ｄ，１３２Ｄ，…とを有しており、追加アドレスと追加データとを対（データ−アドレス対）を成すようにして記憶可能になっている。
さらに、命令セレクタ１５０は、マスクＲＯＭ１２０及び命令追加レジスタ１３０とＣＰＵ１１０のＩＲ１１１との間に介在する。この命令セレクタ１５０には、ＰＣ１１２が示す特定命令アドレスＳＩＡで特定される特定命令データＳＩＤと、後述するようにして選択した命令追加レジスタ１３１等の追加データ記憶部１３１Ｄ等に記憶されている追加データ１３１Ｄ等とが入力される。
【００４９】
一方、追加アドレス比較回路１４０は、ＰＣ１１２の示す特定命令アドレスＳＩＡと、追加データ記憶部１３１Ｄ等に記憶され、後述するようにして選択した追加アドレスとを比較する。
ここで、特定命令アドレスＳＩＡと追加アドレス記憶部１３１Ａ等に記憶した追加アドレスとが一致した場合には、出力するＰＣ更新停止信号をクロック信号の１周期分だけハイレベルとすることで、このハイレベルとした期間だけ、従って、１回だけＰＣ１１２における特定命令アドレスＳＩＡの更新を停止させる。このため、ＰＣ１１２で示す特定命令アドレスＳＩＡの値が１回分だけ変化しないことになる。さらにこの場合に、ＰＣ更新停止信号より１周期分遅れて追加データセレクト信号を１周期分だけハイレベルにすることにより、この回だけ、命令セレクタ１５０は、入力されている追加データ１３１Ｄ等をＩＲ１１１に出力する。
【００５０】
さらにこのマイクロコンピュータ１００には、マスクＲＯＭ１２０に記憶されている命令データ列（プログラム）のうち一部の命令データを削除したい場合に用いる命令削除レジスタ１６０と削除アドレス比較回路１７０を備える。命令削除レジスタ１６０は、実際には、８ヶの削除追加レジスタ１６１，１６２，１６３…からなる。各命令削除レジスタ１６１等は、いずれも、外部からの書込処理により、命令データを削除する位置を指定する削除アドレス１６１Ａ，１６２Ａ…を記憶可能になっている。また、削除アドレス比較回路１７０は、ＰＣ１１２の示す特定命令アドレスＳＩＡと、削除レジスタ１６１等に記憶されている削除アドレスとを比較する。
ここで、特定命令アドレスＳＩＡと削除アドレス１６１等に記憶されている削除アドレスとが一致した場合には、出力する削除信号をクロック信号の１周期分だけハイレベルとすることで、このハイレベルとした期間だけ、従って、１回だけＰＣ１１２における特定命令アドレスＳＩＡを＋２する。つまり更新を２回行った分だけ特定命令アドレスＳＩＡの値を変化させる。
【００５１】
次いで、このマイクロコンピュータ１００を用いて、命令データを追加する場合について説明する。まず、１つの追加データ「ＸＸＸＸ」を、ＲＯＭ１２０に記憶した命令データ列のうち、３番目の「ＣＣＣＣ」と４番目の「ＤＤＤＤ」との間に追加して実行する場合について、図３を参照して説明する。
命令追加レジスタ１３１のうち、追加アドレス記憶部１３１Ａには追加アドレスとして「３」が、追加データ記憶部１３１Ｄには追加データとして「ＸＸＸＸ」が記憶されているとする。
まず、後述するＰＣ更新停止信号がローレベルにされているので、クロック信号の立ち上がりタイミングに従って、ＰＣ１１２が示す特定命令アドレスＳＩＡの値はインクリメントされ、その値が「０」，「１」，「２」というように順に変化する。すると、これに従って、マスクＲＯＭ１２０からは、クロック信号で１周期分遅れて特定命令データＳＩＡで特定される特定命令データＳＩＤが、「ＡＡＡＡ」，「ＢＢＢＢ」，「ＣＣＣＣ」というように順に出力され、命令セレクタ１５０に入力される。
特定命令アドレスＳＩＡが、「０」，「１」，「２」というように、「３」でない場合には、追加データセレクト信号もローレベルにされるので、命令セレクタ１５０からは、特定命令データＳＩＡが選択され、そのまま出力される。すると、次の周期（クロック信号の次の立ち上がりタイミング）に、ＩＲ１１１に読み込まれ、その後ＣＰＵ１１０で実行される。
【００５２】
しかし、ＰＣ１１２の示す特定命令アドレスＳＩＡが「３」（ＳＩＡ＝３）となったとき（図３において第４クロック目）には、追加アドレス比較回路１４０に入力された特定命令アドレスＳＩＡと命令追加レジスタ１３１の追加アドレス記憶部１３１Ａに記憶された追加アドレスとが一致する。すると、追加アドレス比較回路１４０は、ＰＣ更新停止信号をクロック信号の１周期分だけハイレベルにする。これにより、ＰＣ１１２におけるインクリメントが停止され、次の周期（図３において第５クロック目）における特定命令アドレスＳＩＡは「３」のままとなる。このため、ＲＯＭ１２０から読み出される特定命令データＳＩＤは、２回続けて「ＤＤＤＤ」となる。
なお、ＰＣ更新停止信号がローレベルに戻ると、ＰＣ１１２での更新が再開され、特定命令アドレスＳＩＡが、「４」，「５」，「６」というように変化する。
【００５３】
また、追加アドレス比較回路１４０は、ＰＣ更新停止信号より１周期遅れて、追加データセレクト信号を１周期分だけハイレベルにする。これにより、命令セレクタ１５０は、この期間だけ追加データ記憶部１３１Ａに記憶されている内容「ＸＸＸＸ」を選択して出力する。従って、図３に示すように、命令セレクタ出力の内容について見ると、「ＣＣＣＣ」の後に「ＸＸＸＸ」が続くことになる。次いで、クロック信号の次の立ち上がりタイミング（図３において第６クロック目）にＩＲ１１１に読み込まれて、以降ＣＰＵ１１０で実行される。
さらに、追加データセレクト信号がローレベルに戻ると、命令セレクタ１５０は、特定命令アドレスＳＩＡ＝３で特定される特定命令データＳＩＤの内容「ＤＤＤＤ」を選択して出力する。従って、図３に示すように、命令セレクタ出力の内容について見ると、「ＸＸＸＸ」の後に「ＤＤＤＤ」が続くことになる。次いで、クロック信号の次の立ち上がりタイミング（図３において第７クロック目）にＩＲ１１１に読み込まれて、以降ＣＰＵ１１０で実行される。
かくして、ＲＯＭ１２０に記憶した命令データ列のうち、３番目の「ＣＣＣＣ」と４番目の「ＤＤＤＤ」との間に「ＸＸＸＸ」を追加し、実行することができたことになる。
【００５４】
次いで、２つの追加データ「ＸＸＸＸ」と「ＹＹＹＹ」とを、ＲＯＭ１２０に記憶した命令データ列のうち、３番目の「ＣＣＣＣ」と４番目の「ＤＤＤＤ」との間に連続して追加して実行する場合について、図４を参照して説明する。
命令追加レジスタ１３１のうち、追加アドレス記憶部１３１Ａには追加アドレスとして「３」が、追加データ記憶部１３１Ｄには追加データとして「ＸＸＸＸ」が記憶されているとする。また、命令追加レジスタ１３２のうち、追加アドレス記憶部１３２Ａには追加アドレスとして「３」が、追加データ記憶部１３１Ｄには追加データとして「ＹＹＹＹ」が記憶されているとする。
当初、ＰＣ更新停止信号がローレベルにされているので、クロック信号の立ち上がりタイミングに従って、ＰＣ１１２が示す特定命令アドレスＳＩＡの値はインクリメントされ、「０」，「１」，「２」というように順に変化する。すると、これに従って、マスクＲＯＭ１２０からは１周期遅れて特定命令データＳＩＤが、「ＡＡＡＡ」，「ＢＢＢＢ」，「ＣＣＣＣ」というように順に出力され、命令セレクタ１５０に入力される。
特定命令アドレスＳＩＡが、「３」でない場合には、追加データセレクト信号もローレベルにされるので、命令セレクタ１５０からは、特定命令データＳＩＡが選択され、そのまま出力される。すると、次の周期にＩＲ１１１に読み込まれ、その後ＣＰＵ１１０で実行される。
【００５５】
しかし、ＰＣ１１２の示す特定命令アドレスＳＩＡが「３」（ＳＩＡ＝３）となったとき（図４において第４クロック目）には、特定命令アドレスＳＩＡと追加アドレス記憶部１３１Ａに記憶された追加アドレスとが一致する。そこで、追加アドレス比較回路１４０は、ＰＣ更新停止信号をクロック信号の１周期分だけハイレベルにする。すると、ＰＣ１１２におけるインクリメントが停止され、次の周期（図４において第５クロック目）における特定命令アドレスＳＩＡは「３」のままとなる。すると、図４において第５クロック目には、特定命令アドレスＳＩＡと追加アドレス記憶部１３２Ａに記憶された追加アドレスとが一致する。このため、追加アドレス比較回路１４０は、ＰＣ更新停止信号をさらに１周期分だけハイレベルにする。かくして、ＲＯＭ１２０から読み出される特定命令データＳＩＤは、３回続けて「ＤＤＤＤ」となる。
なお、その後にＰＣ更新停止信号がローレベルに戻ると、ＰＣ１１２での更新が再開され、特定命令アドレスＳＩＡが、「４」，「５」，「６」というように変化する。
【００５６】
また、追加アドレス比較回路１４０は、ＰＣ更新停止信号より１周期遅れて、追加データセレクト信号をハイレベルにする。これにより、命令セレクタ１５０は、この期間だけ追加データ記憶部１３１Ｄに記憶された追加データの内容「ＸＸＸＸ」を選択して出力する。従って、図４に示すように、命令セレクタ出力の内容について見ると、「ＣＣＣＣ」の後に「ＸＸＸＸ」が続くことになる。次いで、クロック信号の次の立ち上がりタイミング（図４において第６クロック目）にＩＲ１１１に読み込まれて、以降ＣＰＵ１１０で実行される。
さらに、上述したように、特定命令アドレスＳＩＡが追加アドレス記憶部１３１Ａに記憶された追加データと一致し、続いて追加アドレス記憶部１３２Ａに記憶された追加データと一致することにより、２回連続して一致した。このため、追加アドレス比較回路１４０は２周期分続けて追加データセレクト信号をハイレベルにする。これにより、命令セレクタ１５０は、さらに追加データ記憶部１３２Ｄに記憶された追加データの内容「ＹＹＹＹ」を選択して出力する。従って、図４に示すように、命令セレクタ出力の内容について見ると、「ＣＣＣＣ」の後に「ＸＸＸＸ」が、さらに「ＹＹＹＹ」が続くことになる。次いで、クロック信号の次の立ち上がりタイミング（図４において第７クロック目）にＩＲ１１１に読み込まれて、以降ＣＰＵ１１０で実行される。
【００５７】
さらに、追加データセレクト信号がローレベルに戻ると、命令セレクタ１５０は、特定命令アドレスＳＩＡ＝３で特定される特定命令データＳＩＤの内容「ＤＤＤＤ」を選択して出力する。従って、図４に示すように、命令セレクタ出力の内容について見ると、「ＹＹＹＹ」の後に「ＤＤＤＤ」が続くことになる。次いで、クロック信号の次の立ち上がりタイミング（図４において第８クロック目）にＩＲ１１１に読み込まれて、以降ＣＰＵ１１０で実行される。
かくして、ＲＯＭ１２０に記憶した命令データ列のうち、３番目の「ＣＣＣＣ」と４番目の「ＤＤＤＤ」との間に、「ＸＸＸＸ」、「ＹＹＹＹ」を連続して追加し、実行することができたことになる。
【００５８】
なお、上述した本実施形態における追加データの追加においては、特定命令アドレスＳＩＡと追加アドレス１３１Ａ等に記憶した追加アドレスとが一致すると、追加アドレス比較回路１４０からＰＣ更新停止信号を出力し、ＰＣ１１２における特定命令アドレスＳＩＡの更新を停止した。このため、例えば、図４に示す例では、図４において第４クロック目のみならず、第５，第６クロック目でも、特定命令アドレスＳＩＡ＝３となる。そこで、もし、第４クロック目に既に特定命令アドレスＳＩＡと一致したと判断した追加アドレス記憶部１３１Ａの内容が、第５クロック目でも重複して追加アドレス比較回路１４０に入力されれば、追加データ記憶部１３１Ｄの内容である「ＸＸＸＸ」が重複して追加される虞がある。
【００５９】
そこで、本実施形態では、下記するようにして、特定命令アドレスＳＩＡに一致する追加アドレスとデータ−アドレス対を成すすべての追加データが、命令セレクタ１５０を通じてＩＲ１１１に重複なく出力されるようにする。具体的には、ポインタ１９０及び追加アドレス選択手段１８０を用いて（図５参照）、ＰＣ１１２の更新の停止及び再開を指示すると共に、追加アドレス記憶部１３１Ａ等に記憶された追加アドレスのうち、特定命令アドレスＳＩＡに一致する追加アドレスが記憶されている追加アドレス記憶部１３１Ａ等を順次指定する。そして、指定された追加データ記憶部１３１Ｄ等に記憶されている追加データが、命令セレクタ１５０を通じてＩＲ１１１に重複なく出力されるようにする。なお、追加アドレス選択手段１８０のうちのポインタ制御手段１８８及びポインタ１９０によって、重複出力防止手段が構成されている。また、回路１８１及び回路１８６により、追加アドレス比較回路１４０におけるＰＣ更新停止信号の動作が実現されている。
【００６０】
まず、本例においては、図５（ａ）に示すように、命令追加レジスタ１３０のうち、各命令追加レジスタ１３１，１３２…の追加アドレス記憶部１３１Ａ，１３２Ａ等及び追加データ記憶部１３１Ｄ，１３２Ｄ等に追加アドレス及び追加データを記憶させてあるとする。そのうち、命令追加レジスタ１３１，１３２の追加アドレス記憶部１３１Ａ，１３２Ａには、共通した「３」の値が記憶されているとする。また、命令追加レジスタ１３１，１３２…等には、固有の番号が付されており、その番号が小さいほど、検索順位の高い（高位）の命令追加レジスタあるとする。本例では、命令追加レジスタ１３１には０が、命令追加レジスタ１３２には１が、命令追加レジスタ１３３には２…という固有番号が付されているとする。
【００６１】
そして、ポインタＰは、複数の命令追加レジスタ１３１等（追加データ記憶部１３１Ｄ等）から読み出すべき追加データとデータ−アドレス対をなす追加アドレスを指示する変数である。具体的には、ポインタＰは、各追加アドレス記憶部１３１Ｄ等に記憶されている複数の追加アドレスを、検索順位の高い命令追加レジスタに記憶されている追加アドレスから順に、つまり、図５（ａ）に矢印で示すように、命令追加レジスタの固有番号について昇順で検索する。そして、ＰＣ１１２が示す特定命令アドレスＳＩＡに一致する追加アドレスが存在した場合には、ポインタＰは、そのうち最初に検索された追加アドレスが記憶されている命令追加レジスタ（追加アドレス記憶部）を、例えばポインタＰ＝３というようにして、その固有番号で指示する。
【００６２】
また、追加アドレス選択手段１８０（図５（ｂ）参照）における各回路１８１〜１８７は、スタートからエンドまでをクロック信号の１周期以内に終了するように構成された論理回路からなる。なお、マイクロコンピュータ１００に電源が投入され、動作を開始したときのポインタＰの初期値は、Ｐ＝０とする。
クロック信号が立ち上がると、回路１８１でＰＣ１１２の更新（更新再開）を指示する。具体的には、ＰＣ更新停止信号をローレベルにする。
回路１８２では、ポインタＰの示す値（固有番号）で指示される命令追加レジスタ１３１等の追加アドレス記憶部１３１Ａ等に記憶された追加アドレスが、特定命令アドレスＳＩＡと一致しているか否かを判断する。
【００６３】
ここでＮｏ、即ち、ポインタＰで指定された追加アドレス記憶部１３１Ａ等に記憶された追加アドレスと特定命令アドレスＳＩＡとが不一致のときには、回路１８３で、ポインタＰの値を１つインクリメントする。つまり、ポインタＰで指示する命令追加レジスタ１３１等を検索順序で見て次の命令追加レジスタに切り換える。
さらに、回路１８４では、ポインタＰが上限値つまりこれ以上インクリメントできない値となったか否かを判断し、Ｎｏつまり、まだインクリメントできる場合には、回路１８２の判断に戻す。一方、Ｙｅｓつまり、ポインタＰが上限値であるときには、回路１８５において、ポインタＰ＝０として処理を終了する。この場合には、次の周期において、検索順位が先頭の命令追加レジスタ１３１から検索を行うことになる。
【００６４】
一方、回路１８２において、Ｙｅｓ、即ち、ポインタＰで指定された追加アドレス記憶部１３１Ａ等に記憶された追加アドレスと特定命令アドレスＳＩＡとが一致するときには、回路１８６でＰＣ１１２での更新の停止を指示する。具体的には、ＰＣ更新停止信号をハイレベルにする。なお、回路１８１で予めＰＣ更新停止信号をローレベルとしているが、先に説明したように、各回路１８１〜１８７は、スタートからエンドまでをクロック信号の１周期以内に終了するように構成されているため、次の周期におけるＰＣ１１２の更新停止には何等影響しない。
さらに、回路１８７では、ポインタＰ＝Ｐ＋１、つまり１つ分インクリメントして処理を終了する。この場合、次の周期には、現在ポインタＰが指示する命令追加レジスタから見て次の検索順位の命令追加レジスタから検索を行うことになる。
【００６５】
命令追加レジスタ１３１等の内容を用いながら、具体的に説明する。ポインタＰは初期値Ｐ＝０となっているとする。回路１８１でＰＣ更新停止信号をローレベルとする。Ｐ＝０であるので、回路１８２では命令追加レジスタ１３１の追加アドレス記憶部１３１Ａに記憶されている追加アドレス「３」を、現在の特定命令アドレスＳＩＡ（＝０）と比較する。両者が一致しないので、回路１８３に進み、ポインタＰをインクリメントしてＰ＝１とする。次いで回路１８４でポインタＰが上限値（例えば１５）でないと判断されると、回路１８２に戻る。
回路１８２では、Ｐ＝１であるので、命令追加レジスタ１３２の追加アドレス記憶部１３２Ａに記憶されている追加アドレス「３」を、現在の特定命令アドレスＳＩＡ（＝０）と比較する。ここでも両者が一致しないので、回路１８３に進み、ポインタＰをインクリメントする。このようにして、回路１８４でポインタＰが上限値であると判断されるまで、回路１８２，１８３，１８４の処理を繰り返す。そしてついにポインタＰ＝１５（上限値）になると、回路１８５に進み、ポインタＰはＰ＝０に戻されて終了する。かくして、この周期には、ＰＣ更新停止信号をローレベルにされたままとなり、次回には、特定命令アドレスＳＩＡの値が更新される。
【００６６】
次の周期には、ＰＣ１１２に示す特定命令アドレスＳＩＡが更新されてＳＩＡ＝１となる。この状態で再び追加アドレス選択手段１８０での処理が開始される。まず、回路１８１でＰＣ更新停止信号をローレベルとする。Ｐ＝０であるので、回路１８２で追加アドレス記憶部１３１Ａに記憶されている追加アドレス「３」を、現在の特定命令アドレスＳＩＡ（＝１）と比較する。両者が一致しないので、回路１８３に進み、ポインタＰをインクリメントしてＰ＝２とする。以下、上記と同様にして、回路１８２，１８３，１８４の間を循環し、回路１８４でポインタＰが上限値であると判断されると、回路１８５に進み、ポインタＰはＰ＝０に戻されて終了する。かくして、この周期にも、ＰＣ更新停止信号をローレベルにされたままとなり、次回にも、特定命令アドレスＳＩＡの値が更新される。
さらに次の周期には、ＰＣ１１２に示す特定命令アドレスＳＩＡが更新されてＳＩＡ＝２となるが、各追加アドレス記憶部１３１Ａ等に記憶されている追加アドレスとは一致しないので、ここでも、ポインタＰはＰ＝０に戻されて終了し、次回に特定命令アドレスＳＩＡの値が更新される。
【００６７】
しかるに、４番目の周期には、ＰＣ１１２に示す特定命令アドレスＳＩＡが更新されてＳＩＡ＝３となる。この状態で再び追加アドレス選択手段１８０での処理が開始される。まず、回路１８１でＰＣ更新停止信号をローレベルとする。Ｐ＝０であるので、回路１８２で追加アドレス記憶部１３１Ａに記憶されている追加アドレス「３」を、現在の特定命令アドレスＳＩＡ（＝３）と比較する。両者が一致したので、回路１８６に進み、ＰＣ更新停止信号をハイレベルとする。さらに回路１８７に進み、ポインタＰをインクリメントしてＰ＝１として終了する。かくして、この周期には、ＰＣ更新停止信号がハイレベルにされるので、次の周期（５番目の周期）には、ＰＣ１１２は特定命令アドレスＳＩＡの値を更新しない。つまりＳＩＡ＝１のままとなる。
なお、この周期では、ＰＣ更新停止信号を一旦ローレベルとした後にハイレベルとしたが、次の周期におけるＰＣ１１２の更新停止には何等影響しないことは既に述べた。
また、この周期において追加アドレス記憶部１３１Ａに記憶されている追加アドレス「３」が、現在の特定命令アドレスＳＩＡ（＝３）と一致したので、図５（ｂ）には示さないが、図２〜図４を参照して説明したように、１周期遅れて命令セレクタ１５０がハイレベルとなり、追加データ記憶部１３１Ｄに記憶されている追加データの内容「ＸＸＸＸ」が出力され、さらにＩＲ１１１に読み込まれ実行される。
【００６８】
次いで、５番目の周期では、ＰＣ１１２に示す特定命令アドレスＳＩＡが更新されずにＳＩＡ＝３を維持する。この状態で再び追加アドレス選択手段１８０での処理が開始され、回路１８１でＰＣ更新停止信号をローレベルとする。Ｐ＝１であるので、回路１８２では、追加アドレス記憶部１３２Ａに記憶されている追加アドレス「３」を、現在の特定命令アドレスＳＩＡ（＝３）と比較する。再び両者が一致したので、回路１８６に進み、ＰＣ更新停止信号をハイレベルとする。さらに回路１８７に進み、ポインタＰをインクリメントしてＰ＝２として終了する。かくして、この周期にも、ＰＣ更新停止信号がハイレベルにされるので、次の周期（６番目の周期）には、ＰＣ１１２は特定命令アドレスＳＩＡの値を更新しない。つまりＳＩＡ＝３のままとなる。
なお、追加アドレス記憶部１３２Ａに記憶されている追加アドレス「３」が、現在の特定命令アドレスＳＩＡ（＝３）と一致したので、追加データ記憶部１３２Ｄに記憶されている追加データの内容「ＹＹＹＹ」が追加され、実行される。
【００６９】
さらに６番目の周期には、上述のようにＳＩＡ＝３のままとなる。この状態で再び追加アドレス選択手段１８０での処理が開始される。まず、回路１８１でＰＣ更新停止信号をローレベルとする。Ｐ＝２であるので、回路１８２で追加アドレス記憶部１３３Ａに記憶されている追加アドレス「６」を、現在の特定命令アドレスＳＩＡ（＝３）と比較する。両者が一致しないので、回路１８３に進み、ポインタＰをインクリメントしてＰ＝３とする。次いで回路１８４でポインタＰが上限値でないと判断されると、回路１８２に戻る。追加アドレスの内容が「３」である追加アドレス記憶部が存在しないので、以下、回路１８２，１８３，１８４の間を循環し、回路１８４でポインタＰが上限値であると判断されると、回路１８５に進み、ポインタＰはＰ＝０に戻されて終了する。かくして、この周期には、ＰＣ更新停止信号をローレベルにされたままとなり、次回には特定命令アドレスＳＩＡの値が更新されて、ＳＩＡ＝４となる。
なお、追加アドレス記憶部１３３Ａに記憶されている追加アドレス「６」が、現在の特定命令アドレスＳＩＡ（＝３）と一致しないので、通常通り、特定命令アドレスＳＩＡ＝３で特定される特定命令データが命令セレクタ１５０で選択される。
【００７０】
このように、ポインタＰ及び追加アドレス選択手段１８０（ポインタ制御手段１８８）を用いることにより、命令データ列に追加データが重複なく順に追加できる。
なお、プログラムに繰り返し実行するループ部分があり、追加データをこのループ内に追加したい場合がある。この場合、このループ部分が実行される度に、追加データを追加する必要がある。上述したポインタＰと追加アドレス選択手段１８０を用いた場合には、ポインタＰが、特定命令アドレスＳＩＡと一致する追加アドレスを指示していないとき、つまり、命令追加レジスタ１３１等の追加アドレス記憶部１３１Ａ等に特定命令アドレスＳＩＡと一致する追加アドレスが記憶されていないときには、回路１８５においてＰ＝０とする。このため、次回には、検索順序の先頭から追加アドレスの一致検索をするから、ループ部分が実行される度に、繰り返して追加データを適切に追加することができる利点もある。
【００７１】
次いで、このマイクロコンピュータ１００を用いて、命令データを削除する場合について説明する。ＲＯＭ１２０に記憶した命令データ列のうち、命令アドレス「３」に対応する命令データ「ＤＤＤＤ」を削除して実行する場合について、図６を参照して説明する。
命令削除レジスタ１６１には削除アドレスとして「２」が記憶されているとする。また、命令セレクタ１５０は命令データの削除の場合には不要である。そこで、追加データセレクト信号はローレベルにされているとする。
まず、ＰＣ更新停止信号がローレベルにされているので、クロック信号の立ち上がりタイミングに従って、ＰＣ１１２が示す特定命令アドレスＳＩＡの値はインクリメントされ、その値が「０」，「１」というように順に変化する。すると、これに従って、マスクＲＯＭ１２０からは、クロック信号で１周期分遅れて特定命令データＳＩＡで特定される特定命令データＳＩＤが、「ＡＡＡＡ」，「ＢＢＢＢ」というように順に出力され、命令セレクタ１５０に入力される。
追加データセレクト信号がローレベルにされているので、命令セレクタ１５０に入力された特定命令データＳＩＤは、そのまま出力され、次の周期（クロック信号の次の立ち上がりタイミング）に、ＩＲ１１１に読み込まれ、その後ＣＰＵ１１０で実行される。
【００７２】
その後（図６において第３クロック目）、ＰＣ１１２の示す特定命令アドレスＳＩＡが更新されて「２」（ＳＩＡ＝２）となる。すると、ＲＯＭ１２０からは特定命令データＳＩＤ＝２で特定される特定命令データ「ＣＣＣＣ」が読み出される。さらにこのときには、削除アドレス比較回路１７０に入力された特定命令アドレスＳＩＡと命令削除レジスタ１３１に記憶された削除アドレスとが一致する。すると、削除アドレス比較回路１７０は、削除信号をクロック信号の１周期分だけハイレベルにする。これにより、ＰＣ１１２におけるインクリメントが２回分行われ、つまりＳＩＡ＝ＳＩＡ＋２＝４とされる。
【００７３】
すると、次の周期（図６において第４クロック目）における特定命令アドレスＳＩＡが「４」であるため、ＲＯＭ１２０から読み出される特定命令データＳＩＤは、「ＥＥＥＥ」となる。また、特定命令アドレスＳＩＡと命令削除レジスタ１６１に記憶された削除アドレスとが一致しないので、削除アドレス比較回路１７０は、削除信号をローレベルに戻す。これにより、ＰＣ１１２において、通常通りインクリメントが１回分だけ行われ、つまりＳＩＡ＝ＳＩＡ＋１＝５とされる。かくして、ＩＲ１１１に読み込まれる特定命令データＳＩＤは、「ＣＣＣＣ」、「ＥＥＥＥ」、「ＦＦＦＦ」…の順になり、命令アドレス「３」に対応する命令データ「ＤＤＤＤ」が削除された状態で実行される。
なお、上記例では、命令削除レジスタ１６１のみを用いた例で説明したが、図２に示したように、複数の削除命令レジスタ１６１，１６２…を備えるようにしても良いことは明らかである。
【００７４】
（変形形態１）
次いで、上記実施形態の変形形態について、図７を参照して説明する。上記実施形態では、ポインタＰと追加アドレス選択手段１８０（ポインタ制御手段１８８）とを用いることにより、同じ追加データ記憶部１３１Ｄ等に記憶されていた追加データを重複して追加するのを防止した。これに対して、本変形形態１では、命令追加レジスタ１３１等に、追加アドレス記憶部１３１Ａ等や追加データ記憶部１３１Ｄ等のほか、フラグビット１３１Ｆ等を備えており、このフラグビット１３１Ｆ等と、ポインタＰ及び追加アドレス選択手段２８０を用いる点で異なる。従って、上記した実施形態と異なる部分を中心に説明し、同様な部分については説明を簡略化あるいは省略する。
図７（ａ）に示し、上述したように命令追加レジスタ１３０は、各命令追加レジスタ１３１等に、それぞれ追加アドレス記憶部１３１Ａ等や追加データ記憶部１３１Ｄ等のほか、フラグビット１３１Ｆ等を備える。
また、実施形態と同様に、命令追加レジスタ１３１，１３２…等には、固有の番号（０，１，２…）が付されており、その番号が小さいほど、検索順位の高いの命令追加レジスタである。また、ポインタＰは、各命令追加レジスタ１３１等に記憶されている追加アドレスを、検索順位に従い、矢印で示すように固有番号について昇順で検索して、複数の命令追加レジスタ１３１等のうち、読み出すべき追加データが記憶された命令追加レジスタを指示する。また、追加アドレス選択手段２８０は、スタートからエンドまでをクロック信号の１周期以内に終了するように構成されている。
【００７５】
追加アドレス選択手段２８０について説明する（図７（ｂ）参照）。
クロック信号が立ち上がると、回路２８１でポインタＰをＰ＝０に揃える。次いで、回路２８２でＰＣ１１２の更新（更新再開）を指示する。具体的には、ＰＣ更新停止信号をローレベルにする。
回路２８３では、ポインタＰの示す値（固有番号）で指示される命令追加レジスタ１３１等のフラグビット１３１Ｆ等におけるフラグの値ＦＬＧ（Ｐ）＝０であるか否かを判断する。ここで、Ｎｏ、即ちポインタＰで指定されたフラグビット１３１Ｆ等におけるフラグの値ＦＬＧ（Ｐ）＝１のときには、回路２８５に進む。一方、ポインタＰで指定されたフラグの値ＦＬＧ（Ｐ）＝０であるときは、回路２８４に進む。
【００７６】
回路２８４では、ポインタＰの示す値（固有番号）で指示される追加アドレス記憶部１３１Ａ等に記憶された追加アドレスが、特定命令アドレスＳＩＡと一致しているか否かを判断する。
ここでＮｏ、即ち、ポインタＰで指定された追加アドレス記憶部１３１Ａ等に記憶された追加アドレスと特定命令アドレスＳＩＡとが不一致のときには、回路２８５に進む。一方、ポインタＰで指定された追加アドレス記憶部１３１Ａ等に記憶された追加アドレスと特定命令アドレスＳＩＡとが一致するときには、回路２８６に進む。
【００７７】
回路２８５では、ポインタＰの値を１つインクリメントする。つまり、ポインタＰで指示するデータ−アドレス対、従ってこれを記憶する命令追加レジスタ１３１等を検索順序で見て次の命令追加レジスタに切り換える。
さらに、回路２８６では、ポインタＰが上限値つまりこれ以上インクリメントできない値となったか否かを判断し、Ｎｏつまり、まだインクリメントできる場合には、回路２８３及び回路２８４の判断に戻す。一方、Ｙｅｓつまり、ポインタＰが上限値であるときには、処理を終了する。
【００７８】
一方、回路２８７では、ＰＣ１１２での更新の停止を指示する。具体的には、ＰＣ更新停止信号をハイレベルにする。なお、回路２８２で予めＰＣ更新停止信号をローレベルとし、その後回路２８７でＰＣ更新停止信号をハイレベルしても、次の周期におけるＰＣ１１２の更新停止には何等影響しない。
また、追加アドレス記憶部１３１Ａ等に記憶されている追加アドレスが、特定命令アドレスＳＩＡと一致したので、図２〜図４を参照して説明したように、１周期遅れて命令セレクタ１５０がハイレベルとなり、追加データ記憶部１３１Ｄ等に記憶されている追加データの内容が追加され、後に実行されることになる。
【００７９】
続いて回路２８８では、ポインタＰで指定されたフラグビット１３１Ｆ等におけるフラグの値ＦＬＧ（Ｐ）を、ＦＬＧ（Ｐ）＝１に書き換え、処理を終了する。このように、ある追加命令レジスタのフラグビットの値ＦＬＧを１に書き換えると、これ以降、ポインタＰがこの追加命令レジスタを指示しても、回路２８３において必ずＮｏと判断されるため、回路２８４，２８７，２８８を通ることが無くなる。従って、フラグビットの値を１にすることで、既に追加した追加データが記憶されている命令追加レジスタからは、重複して追加データを用いることが無くなり、命令データ列に追加データが重複なく順に追加できる。
【００８０】
（変形形態２）
上記実施形態及び変形形態１では、このマイクロコンピュータ１００を用い、マスクＲＯＭ１２０に記憶させた命令データ列の一部に追加データを追加したり、一部の命令データを削除した。しかし、マスクＲＯＭ１２０の記憶容量を僅かに超える大きさのプログラム（命令データ列）を記憶させ、実行させたい場合がある。このような場合には、図８に示すようにすることで、ＲＯＭの記憶容量を大きくするなどの設計変更を経ずに、プログラム（命令データ列）を記憶させ、実行させることができる。
【００８１】
マイクロコンピュータ１００は、記憶容量が２５６ワードのマスクＲＯＭ１２０と、命令追加レジスタ１３０として４つの命令追加レジスタ１３１〜１３４を有しているとする。本来は、マスクＲＯＭ１２０にプログラム（命令データ列）のすべてを記憶させておくべきであるが、プログラムの大きさがやむを得ず、２６０ワードになったとする。
この場合に、図８に示すように、予めマスクＲＯＭ１２０に、先頭から２５５ワード分の命令データ（「ＡＡＡＡ」〜「ＵＵＵＵ」）を記憶させると共に、命令アドレス２５５には最後の命令データ（「ＺＺＺＺ」）を記憶させておく。さらに、４つの命令追加レジスタ１３１〜１３４に、外部から、残る４ワード分（プログラムの先頭から２５６，２５７，２５８，２５９ワード目）の追加データと追加アドレスを、それぞれ命令追加レジスタ１３１〜１３４に書き込む。具体的には、ＲＯＭ１２０の最後の命令アドレスである「２５５」を共通の追加アドレスとして追加アドレス記憶部１３１Ａ〜１３４Ａに記憶させると共に、追加データ記憶部１３１Ｄ〜１３４Ｄに上述の残る４ワード分の命令データ（「ＶＶＶＶ」，「ＷＷＷＷ」，「ＸＸＸＸ」，「ＹＹＹＹ」）を記憶させる。
【００８２】
このようにすれば、プログラムが進行してＰＣ１１２が示す特定命令アドレスＳＩＡ＝２５５となった場合には、４つの命令データ「ＶＶＶＶ」，「ＷＷＷＷ」，「ＸＸＸＸ」，「ＹＹＹＹ」を順に追加し、さらにその後、ＲＯＭ１２０の最後の命令アドレス２５５に記憶されている「ＺＺＺＺ」を実行することができる。かくして、このマイクロコンピュータ１００によれば、４つの命令追加レジスタ１３１〜１３４を形成しておき、後に外部から４ワード分の追加データ及び追加アドレスを記憶させることにより、記憶容量が２５６ワードのマスクＲＯＭ１２０を用いながらも、２６０ワードの大きさのプログラムを実行することができる。
【００８３】
以上において、本発明を実施形態及び変形形態１，２に即して説明したが、本発明は上記実施形態等に限定されるものではなく、その要旨を逸脱しない範囲で、適宜変更して適用できることはいうまでもない。
例えば、前述した実施形態（図３参照）では、特定命令アドレスＳＩＡと追加アドレス１３１Ａ等とが一致した場合には、ＰＣ更新停止信号を１周期だけハイレベルとすると共に、これに１周期だけ遅れて、追加データセレクト信号を１周期だけハイレベルにした。このため、例えば、追加アドレス１３１Ａに「３」を記憶させた場合、ＲＯＭ１２０の命令アドレス＝３に記憶した命令データ「ＤＤＤＤ」よりも前に追加データ「ＸＸＸＸ」が追加された。しかし、追加データセレクト信号をＰＣ更新停止信号より２周期遅れてハイレベルにすることもできる。すると、図３に括弧で示すように、命令データ「ＤＤＤＤ」の後に追加データ「ＸＸＸＸ」を追加することができる。また、図４に括弧で示すように、命令データ「ＤＤＤＤ」の後に追加データ「ＸＸＸＸ」及び「ＹＹＹＹ」を追加することができる。
【００８４】
（付記１）
命令データ列が記憶されたメモリと、
命令レジスタ、及び、
上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有する
ＣＰＵと、
外部から書き込み可能で、上記命令データ列に追加する追加命令データとこの追加命令データを追加する位置を示す追加アドレスとからなるデータ−アドレス対を少なくとも１対以上記憶可能に構成されてなる追加命令記憶手段と、
上記プログラムカウンタの示す上記特定命令アドレスと上記追加命令記憶手段に記憶された上記追加アドレスとを比較する第１比較手段と、
上記特定命令データと上記追加命令データのいずれかを選択して、上記命令レジスタに出力する選択手段と、
を備える計算機であって、
上記第１比較手段において、
上記特定命令アドレスと上記追加アドレスとが不一致であるとき、
上記選択手段は上記特定命令データを選択して上記命令レジスタに出力し、
上記特定命令アドレスと上記追加アドレスとが一致したとき、
上記プログラムカウンタは上記特定命令アドレスの更新を停止し、
上記選択手段は上記特定命令データ、及び、上記追加命令記憶手段に記憶された追加命令データであって、上記特定命令アドレスに一致する追加アドレスと上記データ−アドレス対をなす追加命令データ、のいずれか一方を先に選択して上記命令レジスタに出力し、他方をその後に選択して出力する
計算機。
（付記２）
付記１に記載の計算機であって、
前記特定命令アドレスに一致する追加アドレスとデータ−アドレス対をなす追加命令データが、前記命令レジスタに重複なく出力されるようにする重複出力防止手段
を備える計算機。
（付記３）
付記２に記載の計算機であって、
前記重複出力防止手段は、
前記追加命令記憶手段から読み出すべき追加命令データと前記データ−アドレス対をなす前記追加アドレスを指示するポインタであって、
上記追加命令記憶手段に記憶されている複数の前記追加アドレスを所定の検索順序で検索して、前記プログラムカウンタが示す前記特定命令アドレスに一致する追加アドレスのうち、最初に検索された追加アドレスを指示するポインタと、
上記ポインタが上記特定命令アドレスに一致する追加アドレスを指示していなかったときには、次回に上記所定の検索順序の先頭から順に上記追加アドレスについて上記検索をさせ、
上記ポインタが上記特定命令アドレスに一致する追加アドレスを指示しているときには、次回に上記所定の順序のうちポインタが現在指示している上記追加アドレスから見て次以降の検索順序の追加アドレスについて上記検索をさせる
検索開始位置変更手段と、を備える
計算機。
（付記４）
付記２に記載の計算機であって、
前記重複出力防止手段は、
記憶されている複数の前記データ−アドレス対とそれぞれ１対１に関連づけられた出力済記憶部と、
前記命令レジスタに上記データ−アドレス対に属する前記追加命令データが出力されたときに、対応する上記出力済記憶部に出力済を示す出力済データを記録する出力済記録手段と、
上記出力済データが記録されている上記出力済記憶部に関連づけられた上記データ−アドレス対に属する上記追加命令データの上記命令レジスタへの出力を禁止する出力禁止手段と、を含む
計算機。
（付記５）
付記１〜付記４のいずれか１項に記載の計算機であって、
前記第１比較手段は、
前記プログラムカウンタの示す前記特定命令アドレスと前記追加命令記憶手段に記憶された前記追加アドレスとが一致したとき、
上記プログラムカウンタにおける上記特定命令アドレスの次回の更新を停止させる
計算機。
（付記６）
付記１〜付記５のいずれか１項に記載の計算機であって、
前記追加命令記憶手段は、１または複数の追加用レジスタである
計算機。
（付記７）
付記６に記載の計算機であって、
前記メモリに記憶された前記命令データ列のデータ量と、
前記追加用レジスタに記憶された前記追加命令データのデータ量と、
の和が、上記メモリの記憶容量よりも大きい
計算機。
（付記８）
付記１〜付記５のいずれか１項に記載の計算機であって、
外部から書き込み可能で、前記命令データ列から削除する命令データの位置を示す削除アドレスを少なくとも１つ以上記憶可能に構成されてなる削除位置記憶手段と、
前記プログラムカウンタの示す前記特定命令アドレスと上記削除位置記憶手段に記憶された上記削除アドレスとを比較する第２比較手段と、を備え、
上記第２比較手段は、
上記特定命令アドレスと上記削除アドレスとが一致したとき、上記プログラムカウンタにおける上記特定命令アドレスの値を２回分更新させる
計算機。
（付記９）
付記１〜付記８のいずれか１項に記載の計算機を、１つの集積回路チップに実現してなる集積回路装置。
（付記１０）
命令データ列が記憶されたメモリと、
命令レジスタ、及び、
上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有する
ＣＰＵと、
外部から書き込み可能で、上記命令データ列から削除する命令データの位置を示す削除アドレスを少なくとも１つ以上記憶可能に構成されてなる削除位置記憶手段と、
上記プログラムカウンタの示す上記特定命令アドレスと上記削除位置記憶手段に記憶された上記削除アドレスとを比較する第２比較手段と、を備え、
上記第２比較手段は、
上記特定命令アドレスと上記削除アドレスとが一致したとき、上記プログラムカウンタにおける上記特定命令アドレスの値を２回分更新させる
計算機。
（付記１１）
付記９に記載の計算機であって、
前記削除位置記憶手段は、削除用レジスタである
計算機。
（付記１２）
付記１０または付記１１に記載の計算機を、１つの集積回路チップに実現してなる集積回路装置。
（付記１３）
命令データ列が記憶されたメモリと、
命令レジスタ、及び、
上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有する
ＣＰＵと、
外部から書き込み可能で、上記命令データ列に追加する追加命令データとこの追加命令データを追加する位置を示す追加アドレスとからなるデータ−アドレス対を少なくとも１対以上記憶可能に構成されてなる追加命令記憶手段と、
を備える計算機における命令実行方法であって、
上記プログラムカウンタの示す上記特定命令アドレスと上記追加命令記憶手段に記憶された上記追加アドレスとを比較し、
上記特定命令アドレスと上記追加アドレスとが不一致であるとき、
上記特定命令データを上記命令レジスタに出力して、上記特定命令データを上記ＣＰＵで実行し、
上記特定命令アドレスと上記追加アドレスとが一致したとき、
上記プログラムカウンタにおける上記特定命令アドレスの更新を停止し、
上記特定命令データと、上記追加命令記憶手段に記憶された追加命令データであって、上記特定命令アドレスに一致する追加アドレスと上記データ−アドレス対をなす追加命令データと、のいずれか一方を先に上記命令レジスタに出力し、他方をその後に出力して、上記追加命令データ及び上記特定命令データを上記ＣＰＵで実行する
計算機における命令実行方法。
（付記１４）
付記１３に記載の計算機における命令実行方法であって、
前記プログラムカウンタの示す前記特定命令アドレスと前記追加命令記憶手段に記憶された追加アドレスとが一致したとき、
上記特定命令アドレスに一致する追加アドレスと前記データ−アドレス対をなす前記追加命令データを、前記命令レジスタに重複なく出力する
計算機における命令実行方法。
（付記１５）
付記１４に記載の計算機における命令実行方法であって、
前記計算機は、前記追加命令記憶手段から読み出すべき追加命令データと前記データ−アドレス対をなす追加アドレスを指示するポインタであって、上記追加命令記憶手段に記憶されている複数の前記追加アドレスを所定の検索順序で検索して、前記プログラムカウンタが示す前記特定命令アドレスに一致する追加アドレスのうち、最初に検索された追加アドレスを指示するポインタを備え、
上記ポインタが上記特定命令アドレスに一致する追加アドレスを指示していなかったときには、次回に上記所定の検索順序の先頭から順に上記追加アドレスについて上記検索をし、
上記ポインタが上記特定命令アドレスに一致する追加アドレスを指示しているときには、次回に上記所定の検索順序のうちポインタが現在指示している追加アドレスから見て次以降の検索順序の追加アドレスについて上記検索をする
計算機における命令実行方法。
（付記１６）
付記１４に記載の計算機における命令実行方法であって、
前記計算機は、記憶されている複数の前記データ−アドレス対とそれぞれ１対１に関連づけられた出力済記憶部を備え、
前記命令レジスタに上記データ−アドレス対に属する前記追加命令データを出力したときに、対応する上記出力済記憶部に出力済を示す出力済データを記録し、
その後、上記出力済データが記録されている上記出力済記憶部に関連づけられた上記データ−アドレス対に属する上記追加命令データの上記命令レジスタへの出力を禁止する
計算機における命令実行方法。
（付記１７）
付記１３〜付記１６のいずれか１項に記載の計算機における命令実行方法であって、
前記プログラムカウンタの示す前記特定命令アドレスと前記追加命令記憶手段に記憶された前記追加アドレスとが一致したとき、
上記プログラムカウンタにおける上記特定命令アドレスの次回の更新を停止させる
計算機における命令実行方法。
（付記１８）
付記１３〜付記１７のいずれか１項に記載の計算機における命令実行方法であって、
前記追加命令記憶手段は、１または複数の追加用レジスタである
計算機における命令実行方法。
（付記１９）
付記１８に記載の計算機における命令実行方法であって、
前記メモリに記憶された前記命令データ列のデータ量と、
前記追加用レジスタに記憶された前記追加命令データのデータ量と、
の和が、上記メモリの記憶容量よりも大きい
計算機における命令実行方法。
（付記２０）
付記１３〜付記１６のいずれか１項に記載の計算機における命令実行方法であって、
前記計算機は、外部から書き込み可能で、前記命令データ列から削除する命令データの位置を示す削除アドレスを少なくとも１つ以上記憶可能に構成されてなる削除位置記憶手段を備え、
前記プログラムカウンタの示す前記特定命令アドレスと上記削除位置記憶手段に記憶された上記削除アドレスとを比較し、
上記特定命令アドレスと上記削除アドレスとが一致したとき、
上記プログラムカウンタにおける上記特定命令アドレスの値を２回分更新し、
その後、上記プログラムカウンタの示す更新された特定命令アドレスに従って、前記メモリから前記特定命令データを前記命令レジスタに出力し、前記ＣＰＵで実行する
を備える計算機における命令実行方法。
（付記２１）
命令データ列が記憶されたメモリと、
命令レジスタ、及び、
上記メモリに記憶された命令データのうち上記命令レジスタに出力すべき特定命令データが記憶された特定命令アドレスを示すプログラムカウンタを有する
ＣＰＵと、
外部から書き込み可能で、上記命令データ列から削除する命令データの位置を示す削除アドレスを少なくとも１つ以上記憶可能に構成されてなる削除位置記憶手段と、
を備える計算機における命令実行方法であって、
上記プログラムカウンタの示す上記特定命令アドレスと上記削除位置記憶手段に記憶された上記削除アドレスとを比較し、
上記特定命令アドレスと上記削除アドレスとが一致したとき、
上記プログラムカウンタにおける上記特定命令アドレスの値を２回分更新し、
その後、上記プログラムカウンタの示す更新された特定命令アドレスに従って、上記メモリから上記特定命令データを上記命令レジスタに出力し、上記ＣＰＵで実行する
計算機における命令実行方法。
（付記２２）
付記２１に記載の計算機における命令実行方法であって、
前記削除位置記憶手段は、削除用レジスタである
計算機における命令実行方法。
【図面の簡単な説明】
【図１】実施形態にかかる、１チップ型のマイクロコンピュータを示す説明図である。
【図２】実施形態にかかるマイクロコンピュータにおけるＣＰＵとＲＯＭとの命令データの受け渡し及び命令データの追加削除を示す説明図である。
【図３】１ヶの追加命令データを追加する場合の各部の動作を示すタイミングチャートである。
【図４】２ヶの追加命令データを連続して追加する場合の各部の動作を示すタイミングチャートである。
【図５】ポインタを利用した命令追加レジスタの検索・選択を示す説明図である。
【図６】命令データを１ヶ削除する場合の各部の動作を示すタイミングチャートである。
【図７】変形形態１にかかり、フラグビットを利用した命令追加レジスタの検索・選択を示す説明図である。
【図８】変形形態２にかかり、ＲＯＭの記憶容量を超える命令データ列を記憶する場合の説明図である。
【図９】従来技術にかかるマイクロコンピュータにおけるＣＰＵとＲＯＭとの間の命令データの受け渡しを示す概念図である。
【符号の説明】
１００　マイクロコンピュータ（計算機、集積回路装置）
１１０　ＣＰＵ
１１１　インストラクションレジスタ（命令レジスタ）
１１２　プログラムカウンタ
１２０　マスクＲＯＭ（メモリ）
１３０　命令追加レジスタ（追加命令記憶手段、追加用レジスタ）
１３１，１３２，１３３，…　命令追加レジスタ（追加命令記憶手段、追加用レジスタ）
１３１Ａ，１３２Ａ，１３３Ａ，…　追加アドレス記憶部
１３１Ｄ，１３２Ｄ，１３３Ｄ，…　追加データ記憶部
１３１Ｆ，１３２Ｆ，１３３Ｆ，…　フラグビット（出力済記憶部）
１４０　追加アドレス比較回路（第１比較手段）
１５０　命令セレクタ（選択手段）
１６０　命令削除レジスタ（削除位置記憶手段）
１６１，１６２，１６３，…　命令削除レジスタ（削除位置記憶手段）
１７０　削除アドレス比較回路（第２比較手段）
１８０，２８０　追加アドレス選択手段
１８８　ポインタ制御手段（検索開始位置変更手段）
２８３　回路（出力禁止手段）
２８７　回路（出力済記録手段）
ＳＩＡ　特定命令アドレス
ＳＩＤ　特定命令データ
Ｐ　ポインタ
【図１】
2004046318.tif 000003
【図２】
2004046318.tif 000004
【図３】
2004046318.tif 000005
【図４】
2004046318.tif 000006
【図５】
2004046318.tif 000007
【図６】
2004046318.tif 000008
【図７】
2004046318.tif 000009
【図８】
2004046318.tif 000010
【図９】
2004046318.tif 000011