(57)【要約】【課題】１つの関数を複数箇所で呼び出しインライン展開する場合に、その関数を修正するにはインライン展開したすべての関数の実体に対して修正設定を行わねばならない。インライン展開される関数を多数呼び出しても、インライン展開された関数をプログラム修正できるようにする。【解決手段】プログラムを格納するＲＯＭ領域２０と、修正プログラムを格納する修正プログラム格納メモリ３０と、実行すべき命令を取得する命令取得部１１と、取得した命令を実行する命令実行部１２と、一致判定対象の機械語命令群（パターン）を登録しておく命令一致判定レジスタ４０と、実行する機械語命令と命令一致判定レジスタ４０の機械語命令とのパターン比較を行って一致したときは取得命令切り替え部６０に切り替え指示を与える実行命令監視部５０を備える。取得命令切り替え部６０は、切り替え指示があったときに命令取得先をＲＯＭ領域２０から修正プログラム格納メモリ３０に切り替える。【選択図】図１
2011113192.tif 000002
【特許請求の範囲】
【請求項１】
マイコンの動作の基本となるプログラムを格納しておくためのＲＯＭ領域と、
修正プログラムを格納しておくための修正プログラム格納メモリと、
前記ＲＯＭ領域または前記修正プログラム格納メモリから実行すべき命令を取得する命令取得部と、
前記命令取得部が取得した命令を受け取って実行する命令実行部と、
命令取得先を常時は前記ＲＯＭ領域とし、切り替え指示があったときに命令取得先を前記ＲＯＭ領域から前記修正プログラム格納メモリに切り替え、その切り替え後の命令取得先を前記命令取得部に伝える取得命令切り替え部とを備え、
さらに、
一致判定対象の機械語命令群（パターン）を登録しておくための命令一致判定レジスタと、
前記命令実行部が実行する機械語命令と前記命令一致判定レジスタの機械語命令とを監視し、パターン比較を行って、一致したときは前記取得命令切り替え部に対して前記切り替え指示を与える実行命令監視部とを備えたＲＯＭ修正機能付きマイコン。
【請求項２】
前記実行命令監視部は、前記命令一致判定レジスタに登録される前記一致判定対象の機械語命令群のそれぞれがインライン展開にかかわる機械語命令であることを示すインライン展開タグ情報を埋め込まれている場合に、前記パターン比較に際して、前記インライン展開タグ情報の有無の判定も行うように構成されている請求項１に記載のＲＯＭ修正機能付きマイコン。
【請求項３】
前記実行命令監視部は、さらに、前記命令実行部が実行する命令がインライン展開にかかわることをＣＰＵコア部に報知するための命令であるインライン展開報知命令かどうかを判定する判定命令認識部を備え、前記命令一致判定レジスタに登録される前記一致判定対象の機械語命令群に前記インライン展開報知命令が付加されている場合に、前記パターン比較に先立って前記判定命令認識部が前記インライン展開報知命令の有無の判定を行い、該当する場合に前記実行命令監視部によるパターン比較に移行するように構成されている請求項１に記載のＲＯＭ修正機能付きマイコン。
【請求項４】
関数をインライン展開するに際して、インライン展開にかかわる機械語命令であることを示すインライン展開タグ情報をインライン展開される個々の機械語命令に埋め込むように構成されたコンパイラ。
【請求項５】
関数をインライン展開するに際して、インライン展開にかかわることをＣＰＵコア部に報知するための命令であるインライン展開報知命令を、命令一致判定レジスタに登録される一致判定対象の機械語命令群の先頭に生成するように構成されたコンパイラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内蔵のＲＯＭに格納されているプログラムを半導体集積回路の製造後に修正可能なマイコン（マイクロコンピュータ）と、プログラムに修正のための情報を埋め込む機能を有するコンパイラ（機械語命令翻訳プログラム）にかかわり、特には、インライン展開される関数を多数呼び出す場合でも、それらの関数の修正を可能にするための技術に関する。
【背景技術】
【０００２】
近年のマイコンにはプログラマブルＲＯＭを実装する１チップコンピュータが使われている。製品寿命が短くなるにつれてソフトウェアの開発期間も短くなるので、１回のマスクで品質を確保することはむずかしく、何回かのプログラムの変更が必要となることが多い。しかし、再マスクするにはコストがかかることから、プログラムを容易、安価に、かつ何回も変更できるマイコンが要望されている。
【０００３】
ＲＯＭ中のプログラムを修正する従来の方法について、図７を参照して説明する。図７に示すマイクロコンピュータは、実行中の命令のアドレスを指すプログラムカウンタ（ＰＣ）１０１と、ＰＣ１０１が指すアドレスと比較される修正アドレスを記憶する修正アドレスレジスタ１０８及び修正プログラムが格納されているアドレスを記憶する修正ベクタアドレスレジスタ１０９を有する修正レジスタ部１０７と、修正プログラム１１０を記憶するＲＡＭ１１１と、修正アドレスレジスタ１０８が記憶する修正アドレスとＰＣ１０１が指すアドレスを比較する比較部１０３とを備える。
【０００４】
ＲＯＭ中のプログラムを修正する場合、比較部１０３は、ＰＣ１０１が指すアドレスと修正アドレスレジスタ１０８に格納されている修正アドレスの一致を監視する。これらアドレスが一致すると、修正プログラムが格納されているアドレスを示す修正ベクタアドレスがＰＣ１０１に設定され、修正されたプログラムはＲＡＭ１１１の修正プログラム１１０を実行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１２２７４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記の従来技術では、プログラム修正を行う場合、修正箇所のアドレスをすべて修正アドレスレジスタに設定する必要がある。しかし、多くの修正レジスタを具備することはコスト上現実的ではないため、修正箇所数が限られてしまう。
【０００７】
ところで、プログラムの高速化の手法の１つとして、関数のインライン展開という手法がある。インライン展開は、コード最適化方法の１つで、プログラム中から関数が呼び出された場合にサブルーチンを使わず、その関数の機能を持ったコードを関数呼び出し箇所に展開することである。実行速度は上がるが、プログラムは長くなり、メモリも余分に必要となる。
【０００８】
ある関数が複数箇所で呼び出され、その関数がインライン展開されている場合において、その関数のプログラムを修正しようとすると、プログラム修正がインライン展開されたすべての箇所に必要となる。インライン展開している箇所が多数存在するとプログラム修正箇所が増加し、すべてのインライン展開箇所でプログラム修正することはコスト上現実的ではない。
【０００９】
本発明は、このような事情に鑑みて創作したものであり、インライン展開される関数を多数呼び出しても、インライン展開された関数をプログラム修正することが可能なＲＯＭ修正機能付きマイコンを提供することを主たる目的としている。
【課題を解決するための手段】
【００１０】
（１）本発明は、次のような手段を講じることにより上記の課題を解決する。
【００１１】
アドレスマッチングとパターンマッチングとは様相を全く異にする。一致判定対象の機械語命令群（パターン）をマイコンが実行する一連の機械語命令とパターンマッチングすることを考える。インライン展開される関数に関して、一致判定対象の機械語命令群のパターンは、そのインライン展開箇所がどこであっても同じはずである。アドレスはインライン展開箇所に相当すると考えて差し支えないから、上記はつまり、一致判定対象の機械語命令群のパターンは、その個々の機械語命令のアドレスがいかに変化しようとも同じはずである、ということになる。具体的に説明すると、次のとおりである。
【００１２】
ここに、インライン展開される関数が例えば４つの機械語命令Ａ，Ｂ，Ｃ，Ｄから構成されているとする。この４つの機械語命令Ａ，Ｂ，Ｃ，Ｄからなる関数を例えば３か所にインライン展開するものとする。第１のインライン展開において、機械語命令ＡのアドレスをＡＤ１、機械語命令ＢのアドレスをＡＤ２、機械語命令ＣのアドレスをＡＤ３、機械語命令ＤのアドレスをＡＤ４とする。第２のインライン展開において、同じ機械語命令Ａのアドレスは例えばＡＤ２５１、機械語命令ＢのアドレスはＡＤ２５２、機械語命令ＣのアドレスはＡＤ２５３、機械語命令ＤのアドレスはＡＤ２５４となる。さらに、第３のインライン展開において、同じ機械語命令Ａのアドレスは例えばＡＤ５３７、機械語命令ＢのアドレスはＡＤ５３８、機械語命令ＣのアドレスはＡＤ５３９、機械語命令ＤのアドレスはＡＤ５４０となる。ここに挙げたアドレスはＡＤ１、ＡＤ２、ＡＤ３、ＡＤ４、ＡＤ２５１、ＡＤ２５２、ＡＤ２５３、ＡＤ２５４、ＡＤ５３７、ＡＤ５３８、ＡＤ５３９、ＡＤ５４０の１２個であるが、これら１２個のアドレスは当然すべて互いに異なるものである。これら１２個の一致判定対象の機械語命令群のアドレスを判定用のレジスタに登録しておくためには、その判定用のレジスタは本例では１２個のアドレス格納場所を必要とする。ところが、一致判定対象の機械語命令群のパターン［Ａ，Ｂ，Ｃ，Ｄ］に着目すると、このパターン［Ａ，Ｂ，Ｃ，Ｄ］は、第１のインライン展開でも第２のインライン展開でも第３のインライン展開でもすべて同じである。このパターン［Ａ，Ｂ，Ｃ，Ｄ］を登録しておくには、判定用のレジスタは本例では４個の機械語命令格納場所をもっていればよいことになる。これは、アドレス登録の場合の３分の１であり、容量を大幅に削減することが可能となる。
【００１３】
すなわち、一致判定対象の機械語命令群のパターンマッチングを行えば、インライン展開箇所から独立した状態での一致判定が行えるのである。インライン展開箇所に拘束され、しかもインライン展開箇所の数の増加に伴って登録数が増えるアドレスマッチング方式とは異なり、判定用のレジスタの格納場所を大幅に減少させることが可能である。その結果として、プログラム修正の実現化が容易に達成可能となる。
【００１４】
上記の考え方に基づいて、本発明のＲＯＭ修正機能付きマイコンでは次のように構成する。まず、前提となる構成について説明する。マイコンの動作の基本となるプログラムを格納しておくためのＲＯＭ領域（命令ＲＯＭ）に加えて、修正プログラムを格納しておくための修正プログラム格納メモリを備えている。ＣＰＵコア部における命令取得部と命令実行部とは、命令取得部がＲＯＭ領域から実行すべき命令を取得し、その取得した命令を命令実行部に転送し、命令を受け取った命令実行部はその命令を実行するという構成になっている。さらに、命令取得部が修正プログラム格納メモリから修正プログラムを取得できるようにするため、取得命令切り替え部を用意する。取得命令切り替え部は、切り替え指示を受けると、命令取得先をＲＯＭ領域から修正プログラム格納メモリへと切り替えるものとして構成されている。
【００１５】
以上の構成を前提として、さらに次の構成要素を備える。それは、一致判定対象の機械語命令群（パターン）を登録しておくための命令一致判定レジスタと、マイコンが実行する機械語命令と命令一致判定レジスタの機械語命令とを監視し、パターン比較を行って、一致したときは取得命令切り替え部に対して切り替え指示を与える実行命令監視部とである。
【００１６】
上記のように構成された本発明のＲＯＭ修正機能付きマイコンにあっては、次のような作用を発揮する。すなわち、実行命令監視部は、マイコンが実行する機械語命令を取り込むとともに、命令一致判定レジスタからそれに登録されている一致判定対象の機械語命令を読み出し、順次に比較して、一致・不一致を判定する。その判定はパターンマッチングの形態で行われる。一方が例えば［Ａ，Ｂ，Ｃ，Ｄ］で他方も［Ａ，Ｂ，Ｃ，Ｄ］であれば一致である。パターンマッチングで一致と判明すれば、実行命令監視部は切り替え指示を取得命令切り替え部に与える。切り替え指示を受けた取得命令切り替え部は、命令の取得先をＲＯＭ領域から修正プログラム格納メモリに切り替え、命令取得部は修正プログラム格納メモリから修正プログラムを読み出して、命令実行部に与える。その結果として、プログラムの修正が実行される。
【００１７】
以上を要するに、本発明によるＲＯＭ修正機能付きマイコンは、
マイコンの動作の基本となるプログラムを格納しておくためのＲＯＭ領域と、
修正プログラムを格納しておくための修正プログラム格納メモリと、
前記ＲＯＭ領域または前記修正プログラム格納メモリから実行すべき命令を取得する命令取得部と、
前記命令取得部が取得した命令を受け取って実行する命令実行部と、
命令取得先を常時は前記ＲＯＭ領域とし、切り替え指示があったときに命令取得先を前記ＲＯＭ領域から前記修正プログラム格納メモリに切り替え、その切り替え後の命令取得先を前記命令取得部に伝える取得命令切り替え部とを備え、
さらに、
一致判定対象の機械語命令群（パターン）を登録しておくための命令一致判定レジスタと、
前記命令実行部が実行する機械語命令と前記命令一致判定レジスタの機械語命令とを監視し、パターン比較を行って、一致したときは前記取得命令切り替え部に対して前記切り替え指示を与える実行命令監視部とを備えた構成とされている。
【００１８】
この構成によれば、実行命令監視部での機械語命令群のパターンマッチングが成立したときは命令取得先を自動的にＲＯＭ領域から修正プログラム格納メモリに切り替えることになるが、この処理は、パターンマッチングで実行命令監視部に送り込まれてくるマイコンが実行する機械語命令の展開箇所（アドレス）には無関係なものである。関数のインライン展開が例えば３つあって、マイコンが実行する機械語命令につき、それが第１のインライン展開箇所からのものであろうが、あるいは第２のインライン展開箇所からのものであろうが、さらには第３のインライン展開箇所からのものであろうが、その送り込み元の如何には関係なく、一致判定対象の機械語命令群と一致する機械語命令群がＣＰＵコア部から送り込まれてくる限りにおいて、上記のパターンマッチング成立による処理は遂行される。このことは、結果として、インライン展開箇所の数の多さには関係なく、常にすべてのインライン展開箇所に対するプログラム修正を実現することとなる。判定用のレジスタである命令一致判定レジスタとしては、従来技術の場合のようにすべてのインライン展開箇所での機械語命令のアドレスを登録する場合に比べて、充分に容量の小さなものでよいことになる。このことが、インライン展開関数の量的拡大にかかわらずインライン展開関数のプログラム修正を実際的に実現可能とする根拠となる。すなわち、プログラム修正箇所を特定するための機械語命令列を１パターン判定するだけで、プログラム修正機能をすべてのインライン展開された関数に共通に適用可能となる。したがって、インライン展開箇所の数の増加に伴って登録数が増えるアドレスマッチング方式とは異なり、インライン展開される関数を多数呼び出した場合でもそのプログラム修正の実現化が容易に達成可能となる。
【発明の効果】
【００１９】
本発明によれば、プログラム修正箇所を特定するための機械語命令列を１パターン判定するだけで、複数箇所にインライン展開された関数に共通にプログラム修正機能を適用することが可能となり、インライン展開箇所の数の増加に伴って登録数が増えるアドレスマッチング方式とは異なり、判定用のレジスタである命令一致判定レジスタとしてはアドレス登録方式と比べて充分に容量の小さなものでよく、ひいてはインライン展開される関数を多数呼び出した場合でもそのプログラム修正の実現化を容易に達成することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施例１におけるＲＯＭ修正機能付きマイコンの構成を示すブロック図
【図２】本発明の実施例１における実行命令監視部と命令一致判定レジスタの詳細な構成を示すブロック図
【図３】本発明の実施例１におけるコンパイラの説明図
【図４】本発明の実施例２におけるコンパイラの説明図
【図５】本発明の実施例３におけるＲＯＭ修正機能付きマイコンの構成を示すブロック図
【図６】本発明の実施例３におけるコンパイラの説明図
【図７】従来技術におけるプログラム修正装置の構成を示すブロック図
【発明を実施するための形態】
【００２１】
上記した（１）の構成の本発明のＲＯＭ修正機能付きマイコンは、次のような実施の形態においてさらに有利に展開することが可能である。
【００２２】
（２）完成したプログラムをマイコンに実装する前段階において、インライン展開された機械語命令の実行順序が他のプログラムの生成コードと一致することがないようにしなければならない。このことの確認を有利に展開するための態様を上記（１）の構成のＲＯＭ修正機能付きマイコンにおいて考える。それは、機械語命令につき、それがインライン展開にかかわる機械語命令であることを示すタグ情報を埋め込むことである。このタグ情報をインライン展開タグ情報と呼ぶことにする。このインライン展開タグ情報は、コンパイラによって埋め込まれるものとする。コンパイラが関数呼び出しにかかわってインライン展開を行う際に、個々の機械語命令にインライン展開タグ情報を埋め込む状態でインライン展開を行う。実行命令監視部では、マイコンが実行する機械語命令を監視して該当するものが命令一致判定レジスタに登録されているかを判定する際に、インライン展開タグ情報が埋め込まれているか否かも加味して判断し、インライン展開タグ情報が埋め込まれており、さらにパターン比較が一致すれば、該当すると判断するというようにインライン展開タグ情報が利用される。
【００２３】
要するに、上記（１）の構成のＲＯＭ修正機能付きマイコンにおいて、前記実行命令監視部は、前記命令一致判定レジスタに登録される前記一致判定対象の機械語命令群のそれぞれがインライン展開にかかわる機械語命令であることを示すインライン展開タグ情報を埋め込まれている場合に、前記パターン比較に際して、前記インライン展開タグ情報の有無の判定も行うように構成されているということである。
【００２４】
この構成によると、インライン展開タグ情報の認識をもってインライン展開された箇所であることが明示的になる。したがって、プログラム作成・更新の途中経過において他の箇所で偶然同じ機械語命令列が生成されることがあるとしても、その機械語命令列の各機械語命令はインライン展開タグ情報が埋め込まれたものではないので、修正すべきプログラム対象部分であると誤判定することから免れる。すなわち、プログラム修正においてインライン展開箇所を判別する上での精度を向上させることが可能となる。完成したプログラムをマイコンに実装する前段階で行わなわなければならないとされているところの、インライン展開された関数の機械語命令の実行順序が他のプログラムの生成コードと一致しないことの確認作業について、これを省略することが可能となる。
【００２５】
（３）次に、インライン展開されるすべての機械語命令にインライン展開タグ情報を埋め込むことに代わる態様を検討する。上記の（２）のようにインライン展開タグ情報をインライン展開される機械語命令の１つずつに埋め込むことは、それなりの利点があるが、コードサイズの増加をもたらす。そこで、インライン展開タグ情報の埋め込みに代わるものとして、命令の形式でマーキングすることを考える。すなわち、インライン展開にかかわる命令であることをＣＰＵコア部に報知するためのインライン展開報知命令なるものを新たに作成する。ここで、インライン展開報知命令としては、混同が起きないようにするため、マイコンが動作するための機械語命令の種類の中で未使用の機械語命令を割り当てるものとする。コンパイラはこのインライン展開報知命令をインライン展開された機械語命令群の先頭に生成するものとする。インライン展開報知命令は、インライン展開タグ情報とは異なって、インライン展開にかかわる命令一致判定レジスタに登録された一致判定対象の機械語命令群の先頭１か所にのみおけばよい。実行命令監視部は、命令実行部が実行する命令がインライン展開報知命令かどうかを判定するための判定命令認識部を備えるものとする。実行命令監視部がマイコンが実行する機械語命令を監視して該当するものが命令一致判定レジスタに登録されているものとパターン一致するかを判定する際に、それに先立って判定命令認識部はインライン展開報知命令であるか否かを判定し、インライン展開報知命令であれば機械語命令のパターン一致の判定へ移行する。
【００２６】
要するに、上記（１）の構成のＲＯＭ修正機能付きマイコンにおいて、前記実行命令監視部は、さらに、前記命令実行部が実行する命令がインライン展開にかかわることをＣＰＵコア部に報知するための命令であるインライン展開報知命令かどうかを判定する判定命令認識部を備え、前記命令一致判定レジスタに登録される前記一致判定対象の機械語命令群に前記インライン展開報知命令が付加されている場合に、前記パターン比較に先立って前記判定命令認識部が前記インライン展開報知命令の有無の判定を行い、該当する場合に前記実行命令監視部によるパターン比較に移行するように構成されているということである。
【００２７】
この構成によれば、明示的にインライン展開された関数の機械語命令のみを使用して修正箇所を判定するため、修正箇所を誤判定することはない。しかも、インライン展開されるすべての機械語命令にタグ情報を埋め込む場合に比べてコードサイズを削減することが可能となる。
【００２８】
（４）上記の（２）の構成のＲＯＭ修正機能付きマイコンに関連するコンパイラとしては、関数をインライン展開するに際して、インライン展開にかかわる機械語命令であることを示すインライン展開タグ情報をインライン展開される個々の機械語命令に埋め込むように構成されたコンパイラがある。
【００２９】
（５）上記の（３）の構成のＲＯＭ修正機能付きマイコンに関連するコンパイラとしては、関数をインライン展開するに際して、インライン展開にかかわることをＣＰＵコア部に報知するための命令であるインライン展開報知命令を、命令一致判定レジスタに登録される一致判定対象の機械語命令群の先頭に生成するように構成されたコンパイラがある。
【００３０】
以下、本発明にかかわるＲＯＭ修正機能付きマイコンの実施例を図面を用いて詳細に説明する。なお、以下で説明する実施例はあくまで一例であり、様々な改変を行うことが可能である。
【実施例１】
【００３１】
図１は本発明の実施例１におけるＲＯＭ修正機能付きマイコンの構成を示すブロック図である。図１において、１０はＣＰＵコア部であり、このＣＰＵコア部１０は、実行すべき機械語命令を取得するための命令取得部１１と、命令取得部１１が取得した機械語命令を受け取って実行する命令実行部１２とを含んでいる。２０はマイコンの動作の基本となるプログラムが格納されている命令ＲＯＭ（ＲＯＭ領域）、３０は修正プログラムが格納されている修正プログラム格納メモリ、４０はプログラム修正箇所の特定用にあらかじめ一致判定対象の機械語命令群（パターン）４１（図２参照）を登録しておくための命令一致判定レジスタ、５０は命令実行部１２により実行されている機械語命令と命令一致判定レジスタ４０の機械語命令とを監視し、パターン比較を行って、一致したときは切り替え指示を後述の機械語命令６０に与える実行命令監視部、６０は命令取得先を常時は命令ＲＯＭ２０とし、実行命令監視部５０からの切り替え指示があったときに命令取得先を命令ＲＯＭ２０から修正プログラム格納メモリ３０に切り替え、その切り替え後の命令取得先を命令取得部１１に伝える機能をもった取得命令切り替え部である。
【００３２】
図２は本発明の実施例１における実行命令監視部５０と命令一致判定レジスタ４０の詳細な構成を示すブロック図である。図２において、４１は命令一致判定レジスタ４０内に登録されている機械語命令群（パターン）、５１はＣＰＵコア部１０の命令実行部１２が実行する命令を監視し、実行される命令と命令一致判定レジスタ４０に登録された機械語命令を比較する比較器、５２は比較器５１による比較結果を受けて動作し、一致のときはカウント値をインクリメントし、不一致のときはカウント値をクリアする命令一致カウンタ、５３は一致判定の命令数を設定する命令一致数設定レジスタである。
【００３３】
図３は本発明の実施例１におけるコンパイラの説明図である。図２において、７０はインライン展開を指定されている関数が存在するソースプログラム、８０はインライン展開時に同じ命令列を生成する機能をもったコンパイラ、９０は機械語命令が展開されるプログラム領域、９１はコンパイラ８０によってプログラム領域９０にインライン展開された機械語命令群である。
【００３４】
コンパイラ８０は、ソースプログラム７０からインライン展開を指定されている関数を入力し、プログラム領域９０に同じパターンの機械語命令群９１を生成する。図示例では、ソースプログラム７０から呼び出された関数にかかわる機械語命令Ａ，Ｂ，Ｃ，Ｄからなる機械語命令群９１がプログラム領域９０に同じパターンで繰り返しインライン展開されている。
【００３５】
次に、上記のように構成されたＲＯＭ修正機能付きマイコンの動作を説明する。
【００３６】
プログラムの修正を行う場合、あらかじめ、修正プログラム格納メモリ３０に修正プログラムを格納し、命令一致判定レジスタ４０に一致判定対象の機械語命令群４１を登録しておく。
【００３７】
マイコンが動作すると、実行命令監視部５０における比較器５１が命令実行部１２より実行される機械語命令を取得し、その取得した機械語命令を命令一致判定レジスタ４０における機械語命令群４１の１つと比較し、その比較結果を命令一致カウンタ５２に送出する。命令一致カウンタ５２は、比較結果が一致のときはインクリメントされ、不一致のときはクリアされる。
【００３８】
命令一致カウンタ５２のカウント値で指示される参照位置において命令一致判定レジスタ４０から該当の機械語命令が読み出され、次の判定用に比較器５１に渡される。比較器５１は命令実行部１２の次に実行される機械語命令と命令一致判定レジスタ４０からの機械語命令の一致を判定する。この動作が、命令一致カウンタ５２で順次インクリメントされるカウント値が命令一致数設定レジスタ５３の設定値と一致するまで繰り返される。
【００３９】
命令一致カウンタ５２のカウント値が命令一致数設定レジスタ５３の設定値と一致するに至ったときは、命令実行部１２の実行にかかわる機械語命令群と命令一致判定レジスタ４０の一致判定対象の機械語命令群とのパターンマッチングが成立したことになり、実行命令監視部５０は取得命令切り替え部６０に対して切り替え指示を与える。切り替え指示を受け取った取得命令切り替え部６０は、命令ＲＯＭ２０に代えて修正プログラム格納メモリ３０から修正プログラムを呼び出す。そして取得命令切り替え部６０は、修正プログラム格納メモリ３０からの機械語命令を取得するように命令取得部１１を制御する。命令取得部１１は修正プログラム格納メモリ３０から実行命令を取り出し、命令実行部１２へ渡す。これによりプログラムの修正が行われる。
【００４０】
以上のように本実施例においては、実行命令監視部５０での機械語命令群のパターンマッチングが成立したときは、取得命令切り替え部６０と命令取得部１１の協働により命令取得先を自動的に命令ＲＯＭ２０から修正プログラム格納メモリ３０に切り替える。この命令取得先切り替えの処理は、パターンマッチングで実行命令監視部５０に送り込まれてくるマイコンが実行する機械語命令の展開箇所（アドレス）には無関係なものである。その展開箇所（アドレス）がどこであっても、命令一致判定レジスタ４０に登録されている一致判定対象の機械語命令群と一致する機械語命令群がＣＰＵコア部１０から送り込まれてくる限りにおいて、上記のパターンマッチング成立による処理は遂行される。
【００４１】
したがって、命令一致判定レジスタ４０としては、従来技術の場合のすべての機械語命令のアドレスを登録する場合に比べて、充分に容量の小さなものでよいことになる。具体的には、プログラム領域９０に同じパターン［Ａ，Ｂ，Ｃ，Ｄ］の機械語命令群９１が３つ展開されているが、一方、一致判定対象の機械語命令群としては命令一致判定レジスタ４０にパターン［Ａ，Ｂ，Ｃ，Ｄ］の機械語命令群４１を１つだけ登録しておけばよい。すなわち、プログラム修正箇所を特定するための機械語命令列を１パターン判定するだけで、プログラム修正機能をすべてのインライン展開された関数に共通に適用可能となる。したがって、インライン展開箇所の数の増加に伴って登録数が増えるアドレスマッチング方式とは異なり、インライン展開される関数を多数呼び出した場合でもそのプログラム修正の実現化を容易に達成することができる。
【実施例２】
【００４２】
本発明の実施例２はインライン展開タグ情報を用いるもので、上記の実施例１における応用例に相当する。図４は本発明の実施例２におけるコンパイラの説明図である。実施例１の図１、図２の構成は本実施例に援用される。
【００４３】
本実施例にあっては、図４に示すように、コンパイラ８０は、関数をインライン展開するに際して、インライン展開にかかわる機械語命令であることを示すインライン展開タグ情報をインライン展開される個々の機械語命令に埋め込むように構成されている。９２はコンパイラ８０によってインライン展開タグ情報が付与された状態でプログラム領域９０にインライン展開された関数の機械語命令群である。
【００４４】
インライン展開タグ情報は、実行命令監視部５０にとってインライン展開された箇所であることを明示するものである。プログラム作成・更新の途中経過において他の箇所で偶然同じ機械語命令列がコンパイラ８０によって生成されたとしても、その機械語命令列の各機械語命令にはインライン展開タグ情報が埋め込まれていないので、修正すべきプログラム対象部分であると誤判定することはなく、判別精度は高く維持される。
【００４５】
また、本実施例によらないときは、完成したプログラムをマイコンに実装する前段階で、インライン展開された関数の機械語命令の実行順序が他のプログラムの生成コードと一致しないことを確認する作業が必要となるが、本実施例ではその確認作業を省略することができる。
【実施例３】
【００４６】
本発明の実施例３はインライン展開報知命令を用いるもので、上記の実施例１における変形例に相当する。図５は本発明の実施例３におけるＲＯＭ修正機能付きマイコンの構成を示すブロック図、図６は本発明の実施例３におけるコンパイラの説明図である。図５において実施例１の図１におけるのと同じ符号は同一構成要素を指し、図６において実施例１の図３におけるのと同じ符号は同一構成要素を指している。実施例１の図２の構成は本実施例に援用される。本実施例に特有の構成は、次のとおりである。
【００４７】
コンパイラ８０は、インライン展開にかかわる命令であることをＣＰＵコア部１０に報知するための命令としてのインライン展開報知命令９３をインライン展開された機械語命令群９１それぞれの先頭に生成するように構成されている。混同を未然に回避するため、インライン展開報知命令９３については、マイコンが動作するための機械語命令の種類の中で未使用の機械語命令を割り当てる。一方、実行命令監視部５０は、命令実行部１１が実行する命令がインライン展開報知命令９３かどうかを判定するための判定命令認識部５４を有している。実行命令監視部５０がマイコンが実行する機械語命令を監視して該当するものが命令一致判定レジスタ４０に登録されているものとパターン一致するかを判定する際に、それに先立って判定命令認識部５４はインライン展開報知命令９３があるか否かを判定し、インライン展開報知命令９３があれば機械語命令のパターン一致の判定へ移行するように構成されている。その他の構成、動作については、実施例１と同様であるので、説明を省略する。
【００４８】
本実施例によれば、インライン展開報知命令９３をもって明示的にインライン展開された関数の機械語命令であることを利用し、修正箇所を判定するため、修正箇所を誤判定することはない。しかも、インライン展開されるすべての機械語命令にタグ情報を埋め込む場合に比べてコードサイズを削減できる。
【００４９】
なお、本発明は、以上の実施例に限定されることなく種々の変更が可能であり、それらも本発明の範囲に包含されるものである。
【産業上の利用可能性】
【００５０】
本発明は、ＲＯＭ修正機能付きマイコンにおいてプログラムの多くの修正に対応可能な技術として有用である。
【符号の説明】
【００５１】
１０  ＣＰＵコア部
１１  命令取得部
１２  命令実行部
２０  命令ＲＯＭ（ＲＯＭ領域）
３０  修正プログラム格納メモリ
４０  命令一致判定レジスタ
４１  機械語命令群
５０  実行命令監視部
５１  比較器
５２  命令一致カウンタ
５３  命令一致数設定レジスタ
５４  判定命令認識部
６０  取得命令切り替え部
７０  ソースプログラム
８０  コンパイラ
９０  プログラム領域
９１  インライン展開された機械語命令群
９２  インライン展開タグ情報が付与された状態でインライン展開された関数の機械語命令群
９３  インライン展開報知命令
【図１】
2011113192.tif 000003
【図２】
2011113192.tif 000004
【図３】
2011113192.tif 000005
【図４】
2011113192.tif 000006
【図５】
2011113192.tif 000007
【図６】
2011113192.tif 000008
【図７】
2011113192.tif 000009