(57)【要約】【課題】  ＲＯＭの記憶容量の低減を図りつつ、さらに、実行処理速度の低減を防ぎながら、バッファの記憶容量を低減することができるプログラム実行装置、方法等を得る。【解決手段】  処理データとコマンドとが順に並べられた実行コードにより構成されるプログラムコードを圧縮したデータを記憶するプログラムコード格納手段２４と、処理データを一時的に記憶するバッファ記憶手段２５と、プログラムコードを圧縮したデータを、所定のデータ量毎に読み込み、コマンドを含むデータであるかどうかを判定し、処理データを第２の記憶手段に記憶させる種別判定手段２１と、種別判定手段２１がコマンドを含むデータと判定すると、処理データとコマンドとに基づいて実行コードを生成するコード伸張手段２２と、コード伸張手段２２が生成した実行コードに基づいて、実行処理を逐次行う実行手段２３とを備えた。【選択図】    図１
2006215827.tif 000002
【特許請求の範囲】
【請求項１】
実行処理に用いられる処理データと実行処理内容を表すコマンドとが順に並べられた実行コードにより構成されるプログラムコードを圧縮したデータを記憶する第１の記憶手段と、
前記処理データを一時的に記憶するための第２の記憶手段と、
前記プログラムコードを圧縮したデータを、前記第１の記憶手段から所定のデータ量毎に読み込み、前記コマンドを含むデータであるかどうかを判定し、前記コマンドを含まないデータと判定すると、そのデータ内の前記処理データを前記第２の記憶手段に記憶させる種別判定手段と、
前記種別判定手段が前記コマンドを含むデータと判定すると、前記第２の記憶手段に記憶されている前記処理データとコマンドとに基づいて前記実行コードを生成するコード伸張手段と、
該コード伸張手段が生成した実行コードに基づいて、前記プログラムコードの実行処理を逐次行う実行手段と
を備えることを特徴とするプログラム実行装置。
【請求項２】
前記処理データがスタックに積まれ、前記コマンドが前記スタックに対して作用して実行処理するためのスタック型言語で記述された前記プログラムコードに基づいて前記実行手段が実行処理を行うことを特徴とする請求項１記載のプログラム実行装置。
【請求項３】
逆ポーランド記法に基づく言語で記述された前記プログラムコードに基づく実行処理を前記実行手段が行うことを特徴とする請求項１記載のプログラム実行装置。
【請求項４】
前記所定のデータ量を１バイトとすることを特徴とする請求項１〜３のいずれかに記載のプログラム実行装置。
【請求項５】
前記所定のデータ量のうち、１ビット分が、前記判定手段が前記コマンドを含むコードデータであるかどうかを判定するためのフラグのデータであることを特徴とする請求項１〜４のいずれかに記載のプログラム実行装置。
【請求項６】
前記コマンドを含まないデータの数を表すデータを、最初に読み込まれる所定のデータ量のデータに含めておき、前記種別判定手段は、前記コマンドを含まないデータの数の分だけ読み込んだ前記所定のデータ量のデータを、前記コマンドを含まないデータと判定して、それらのデータ内の前記処理データを前記第２の記憶手段に記憶させ、その次に読み込んだ所定のデータ量のデータを前記コマンドを含むデータとすることを特徴とする請求項１〜４のいずれかに記載のプログラム実行装置。
【請求項７】
各コマンドについて、コマンドが使用される頻度に基づいて前記コマンドを含むデータの数を設定することを特徴とする請求項１〜６のいずれかに記載のプログラム実行装置。
【請求項８】
通信回線を介して送信される信号に含まれる前記プログラムコードを圧縮したデータを、前記第１の記憶手段に記憶することを特徴とする請求項１〜７のいずれかに記載のプログラム実行装置。
【請求項９】
実行処理に用いられる処理データと実行処理内容を表すコマンドとが順に並べられた実行コードにより構成されるプログラムコードを圧縮したデータを、第１の記憶手段から所定のデータ量毎に読み込む工程と、
読み込んだデータに前記コマンドが含まれているか否かを種別判定手段が判定する工程と、
前記コマンドを含まないデータと判定すると、読み込んだデータに前記処理データが含まれていれば前記処理データを第２の記憶手段に記憶させ、前記コマンドを含むデータと判定すると、コード伸張手段が前記第２の記憶手段に記憶されている前記処理データとコマンドとに基づいて前記実行コードを生成する工程と、
前記コード伸張手段が生成した実行コードに基づいて、実行手段が前記プログラムコードの実行処理を逐次行う工程と
を有することを特徴とするプログラム実行方法。
【請求項１０】
実行処理に用いられる処理データと実行処理内容を表すコマンドとが順に並べられた実行コードにより構成されるプログラムコードを圧縮したデータを、第１の記憶手段から所定のデータ量毎に読み込む工程と、
前記コマンドを含むデータであるかどうかを判定し、前記コマンドを含まないデータと判定すると、そのデータ内の前記処理データを第２の記憶手段に記憶させる工程と、
前記コマンドを含むデータと判定すると、前記第２の記憶手段に記憶されている前記処理データとコマンドとに基づいて前記実行コードを生成する工程と、
生成した実行コードに基づいて前記プログラムコードの実行処理を逐次行う工程と
をコンピュータに実行させるプログラム実行方法のプログラム。
【請求項１１】
実行処理に用いられる処理データと実行処理内容を表すコマンドとが順に並べられた実行コードにより構成されるプログラムコードを圧縮するプログラムコード圧縮処理装置において、
各前記実行コードの前記処理データと前記コマンドとを識別する識別手段と、
要素毎の前記処理データをまとめてバイナリ形式に変換し、前記コマンドを対応する数値に変換した上で、それぞれのデータを所定のデータ量毎に分け、前記コマンドが含まれたデータであるか否かを判定するためのフラグのデータを、分けたデータに対してそれぞれ付す変換手段と
を備えることを特徴とするプログラムコード圧縮処理装置。
【請求項１２】
実行処理に用いられる処理データと実行処理内容を表すコマンドとが順に並べられた実行コードを読み込み、前記実行コードの前記処理データと前記コマンドとを識別手段が識別する工程と、
変換手段が、前記処理データと前記コマンドとをそれぞれ所定のデータ量毎に分け、前記コマンドが含まれたデータであるか否かを判定するためのフラグのデータを、分けたデータに対してそれぞれ付す工程と
をプログラムコードを構成する各実行コードに対して行うことを特徴とするプログラムコード圧縮処理方法。
【請求項１３】
実行処理に用いられる処理データと実行処理内容を表すコマンドとが順に並べられた実行コードを読み込み、前記実行コードの前記処理データと前記コマンドとを識別する工程と、
前記処理データと前記コマンドとをそれぞれ所定のデータ量毎に分け、前記コマンドが含まれたデータであるか否かを判定するためのフラグのデータを、分けたデータに対してそれぞれ付す工程とを、
前記プログラムコードを構成する各実行コードについて、コンピュータに実行させることを特徴とするプログラムコード圧縮処理方法のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラムコードに基づいて実行処理を行うプログラム実行装置、方法等に関するものである。また、その装置、方法を実現するためのプログラムコード圧縮方法、装置等に関するものである。
【背景技術】
【０００２】
家電機器（エアコン、冷蔵庫、洗濯機、放電灯点灯装置等）等においては、その動作を制御するため、プログラム実行装置を組み込んでいる（以下、このような家電機器、家電機器アダプタ等を組み込み機器という）。ここで、プログラム実行装置が実行処理を行うためには、あらかじめ定められたプログラムコードと呼ばれるデータを必要とする。このプログラムコードは、例えば組み込み機器内に設けられたＲＯＭ（Read Only Memory）等の記憶手段にあらかじめ記憶されており、プログラム実行装置はＲＯＭに記憶されたプログラムコードを読み込んで（入力して）実行処理を行っている。
【０００３】
ここで、プログラムコードを圧縮処理して、記憶すべきデータ量を減らし、ＲＯＭ等の記憶手段の記憶容量をできるだけ減らすことにより、記憶手段に係るコストを低減させているプログラム実行装置がある（例えば特許文献１参照）。このようにプログラムコードのデータ量を減らすことは、今後、組み込み機器がネットワークを介して相互に接続され、例えば、プログラムコードのデータを含む信号を送受信するような場合には都合がよい。
【特許文献１】特開２００２−３１８６９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
通常、プログラムコードが圧縮されると、プログラム実行装置の実行処理速度が低減する。そこでＲＡＭ（Randam Access Memory）等で構成される、一時的な記憶手段（バッファ）に、伸張したプログラムコードを蓄えておく方法が採られている。そのため、ＲＡＭの容量を多く必要とする。
【０００５】
そこで、本発明は、圧縮したプログラムコードによりＲＯＭの記憶容量の低減を図りつつ、さらに、プログラム実行装置の実行処理速度の低減を防ぎながら、用意すべきバッファの記憶容量を低減することができるプログラム実行装置、方法等を得ることを目的とする。また、その装置、方法を実現するためのプログラムコード圧縮方法、装置等を実現することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るプログラム実行装置は、実行処理に用いられる処理データと実行処理内容を表すコマンドとが順に並べられた実行コードにより構成されるプログラムコードを圧縮したデータを記憶する第１の記憶手段と、処理データを一時的に記憶するための第２の記憶手段と、プログラムコードを圧縮したデータを、第１の記憶手段から所定のデータ量毎に読み込み、コマンドを含むデータであるかどうかを判定し、コマンドを含まないデータと判定すると、そのデータ内の処理データを第２の記憶手段に記憶させる種別判定手段と、種別判定手段がコマンドを含むデータと判定すると、第２の記憶手段に記憶されている処理データとコマンドとに基づいて実行コードを生成するコード伸張手段と、コード伸張手段が生成した実行コードに基づいて、プログラムコードの実行処理を逐次行う実行手段とを備えたものである。
【発明の効果】
【０００７】
本発明によれば、第１の記憶手段から、プログラムコードを圧縮（符号化）したデータを所定のデータ量で読み込み、コード種別判定手段がコマンドを含まないデータであると判定すれば、第２の記憶手段に処理データを一時的に記憶させ、コマンドであると判定すれば、コード伸張手段が処理データ及びコマンドに基づいて実行コードを生成し、実行手段がその実行コードに基づく実行処理を行うようにしたので、第２の記憶手段は、実行コードを生成するまで処理データを記憶させておくだけでよく、これにより第２の記憶手段に設けておくべき記憶容量を少なくさせることができる。また、第１の記憶手段からのデータ読み込みから実行コードの実行処理に至るまでのプログラム実行装置の全体の処理がシンプルであるため、生成した実行コード（プログラムコード）を保持しておかなくても速度の低減を防ぐことができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１は本発明の第１の実施の形態に係るプログラムコードの圧縮処理を表す図である。図１の上側には実行コードの一例を示している。ここではテキストデータとして記述されている。プログラムコードは１又は複数の実行コードで構成される。まず、実行コードについて説明する。本実施の形態においては、プログラムコードに用いる言語としてForth を用い、ECHONET （ECHONET はECHONET コンソーシアムの商標）の規格における実行処理を行うためのコードであるとする。ECHONET とは、家電機器同士を連携させつつ制御を行なうためのネットワーク（通信回線）の規格である。また、Forth は構文解析が簡単又は不要な逆ポーランド記法（後置記法）に基づく言語である。本実施の形態において、実行コードは、プログラム実行装置が実行すべき処理を表すコマンド（命令）のデータ（以下、コマンドという。Forth ではwordという）とコマンドに基づく実行処理を行う際に処理されるデータ（以下、処理データという）で構成されている。そして、処理データ、コマンドの順に記述される。ここで各コマンドとその処理内容については、あらかじめ定義づけられて（関連づけられて）データとして登録されている（以下、これを辞書という）。そのため、実行コード内の数字、文字列のデータについて、辞書に登録されていればコマンドであり、登録されていなければ処理データとなる。本実施の形態では、後述する記憶手段２に辞書が記憶されているものとする。
【０００９】
コマンドRGST_EPCは組み込み機器のプロパティ情報を登録を実行処理するために記述される。オブジェクトidは組み込み機器のオブジェクトに対して付されるidである。オブジェクトidを表すために２ビットを割り当てている。ECHONET プロパティは、組み込み機器の種類に応じて設定可能なプロパティ（例えば、エアコンにおける風量設定状態等）のコードである。コードの値はECHONET の規格で定められており、８ビットを割り当てている。また、ここではプロパティのデータ型として７種類を用意しており、３ビットを割り当てている。アクセスルールは書き込み（Set ）、読み出し（Get ）、通知の可否を示すもので３ビットを割り当てている。状変時アナウンス有無はプロパティの状態が変化した際に、ネットワークを介して通知するか否かを表す指標（フラグ）であり、１ビットを割り当てている。データサイズは、プロパティのデータサイズを規定するためのものであり、ECHONET の規格ではその最大値を８６４０バイトとしており、その数値を表すために１４ビットを割り当てている。
【００１０】
次にプログラムコード圧縮処理装置の構成と処理について説明する。本実施の形態におけるプログラムコード圧縮装置は、制御処理手段１、記憶手段２及び通信手段３で構成されているものとする。制御処理手段１は、処理データ・コマンド識別部１Ａ及び変換部１Ｂを有している。制御処理手段１には  データ・コマンド識別部１Ａでは、プログラムコードの各実行コードについて、記憶手段２に記憶されている辞書と照合し、辞書と合致しない文字列、数字等を処理データとし、合致した文字列（スクリプト）をコマンドとすることで、処理データとコマンドとを識別処理する。ここで、実行コードについては、例えば、オペレータが入力手段から入力した指示、データ等に基づいて制御処理手段１のデータ・コマンド識別部１Ａの前段に設けられたプログラムコード生成部（図示せず）で生成するようにしてもよいし、別の装置において生成され、通信回線（ECHONET に係るものでなくてもよい）を介して送信された信号に含まれる実行コードを処理するようにしてもよい。
【００１１】
変換部１Ｂは、処理データとコマンドとをそれぞれバイナリ形式のデータ（以下、バイナリデータという）で表し、所定のデータ量毎に分けたデータを生成する。本実施の形態においては７ビットを所定の単位とする。例えば処理データが７で割り切れない場合は、例えば残りのビットに“０”を補充する。そして、処理データを表すデータ（以下、このデータについても処理データという）については分けたそれぞれの先頭のビットに“０”を付し、コマンドを判別するためのデータ（以下、このデータについてもコマンドという）については“１”を付す。つまり、これが、処理データであるかコマンドであるかを判定するための判定用ビット（フラグ）となる。これにより、図１の下側に示すように、各実行コード（プログラムコード）は１バイト（８ビット）を単位としたデータ（バイトデータ）に分けられる。このように、各要素（項目）の文字列に分かれていた処理データをバイナリデータとしてまとめて符号化（エンコード）処理してデータ量の低減を図る。
【００１２】
一方、コマンドについては、そのコマンドと１対１で対応する数値等（コード値）をバイナリデータで表す。これにより、そのバイナリデータが表すコマンドを判別することができる。このコマンドとバイナリデータとの関係は関連づけられて記憶手段２に記憶されており、変換部１Ｂはデータ生成に際してそのデータを参照する。ここで、コマンド数が１２８以下であればコマンドを判別するためには１バイトあれば足りる。例えばコマンド数がそれ以上となる等の場合には２バイト以上になるが、その場合でも、実行処理に使用（出現）する頻度の高いコマンド（例えばプロパティ関連等）については、１バイト分のデータでも判別できるようにすれば、プログラムコード全体に係るデータ量をさらに減らすことができる。なお、本実施の形態による方法によって生成したバイトデータを、さらにランレングス法のような公知のビット列圧縮法によって圧縮するようにしてもよい。
【００１３】
以上のようにして生成した圧縮したプログラムコードのデータを、例えばネットワークを介して組み込み機器側から送信されたダウンロード要求に応じ、又はプログラムコード圧縮処理装置（制御処理手段１）側から積極的な配信により、通信手段３、有線又は無線の通信回線を介して、後述する実施の形態２の組み込み機器のプログラムコード格納手段２４に記憶する。
【００１４】
以上のように、第１の実施の形態によれば、各実行コードの処理データとコマンドとを識別し、処理データは各要素（項目）をまとめてバイナリデータとし、コマンドは対応する数値をバイナリデータとして、それぞれのデータを所定の単位（本実施の形態では７ビット）に分け、処理データを含むデータかコマンドを含むデータか判定するための判定用ビットを各データに付すようにして、１バイトのデータに分けるようにしたので、処理データとコマンドをそれぞれ圧縮できる。そして、実行処理を行う際に、読み込みを１バイト毎に行い、そのデータが処理データを含むかコマンドを含むかを簡単に判別できる。また、プログラムコードをForth 等の逆ポーランド記法に基づく言語とすることにより、実行コードが処理データ、コマンドの順に構成されているので、処理データとコマンドとの識別を容易に行うことができる。さらに、プログラムコードを分ける単位を１バイトとすることにより、実行処理を行う際に、例えばワンチップマイコン等のような処理装置でも対応することができる。そして、例えば、実行処理に使用（出現）する頻度の高いコマンドを含むバイト数を低くする等、頻度に応じた調整をすることで、より圧縮効果を高めることができる。
【００１５】
実施の形態２．
図２は本発明の実施の形態２に係るプログラム実行装置を表す図である。本実施の形態では、プログラム実行装置はコード種別判定手段２１、コード伸張手段２２、実行手段２３、プログラムコード格納手段２４及びバッファ記憶手段２５で構成されている。そして、実施の形態１で生成した圧縮したプログラムコードに基づく実行処理を行うものとする。
【００１６】
コード種別判定手段２１は、プログラムコード格納手段２４に記憶された圧縮（エンコード）されたプログラムコードを所定のデータ量で読み込む（入力する）。本実施の形態では、実施の形態１に合わせて、所定のデータ量を１バイト（８ビット）とする。そして、読み込んだデータは処理データが含まれているデータ（データバイト。コマンドを含んでいないデータ）かコマンドが含まれているデータ（コマンドバイト）かを判定する。コード種別判定手段２１は実施の形態１で説明した判定用ビット（フラグ）に基づいて判定を行うものとする。そして、処理データであると判定するとその処理データをバッファ記憶手段２５に記憶させ、コマンドであると判定するとコード伸張手段２２に処理の制御を渡す。
【００１７】
コード伸張手段２２は、コード種別判定手段２１がコマンドと判定すると、バッファ記憶手段２５に記憶された処理データ及びコマンドに基づいて実行コードを生成（伸張、デコード）する。実行コードを生成すると実行手段２３に処理の制御を渡す。
【００１８】
実行手段２３は、コード伸張手段２２が生成した実行コードに基づいて実行処理を行う。ここで、本実施の形態では、実行手段２３は実行コードを解釈（翻訳）しながら処理データに対してコマンドの実行処理を行うインタプリタであるとする。したがって、プログラムコードは、実行コード毎に逐次的に実行処理されることになる。ここで、実行手段２３は、実行コードを解釈するために、第１の実施の形態で説明した辞書を記憶手段（図示せず）に有しているものとする。実行処理を終了するとコード種別判定手段２１に処理の制御を渡す。
【００１９】
プログラムコード格納手段２４及びバッファ記憶手段２５はともに記憶手段である。ここで、本実施の形態ではプログラムコード格納手段２４を不揮発性メモリとするが、単なるＲＯＭではなく、追加、一部又は全部を変更、削除等、プログラムコードの書き換えができるような記憶手段（例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ等）であるとする。プログラムコードを書き換える場合、実施の形態１で説明したように、例えばネットワークを介したダウンロードにより、プログラムコードを含む信号を組み込み機器が有する通信手段（図示せず）が受信し、プログラムコード格納手段２４に記憶され、保持される。
【００２０】
バッファ記憶手段２５は、例えば揮発性メモリとする。バッファ記憶手段２５は、コード伸張手段２２が実行コードを生成するまでに少なくとも処理データを記憶させておくための一時的な記憶手段であり、次の処理データが入力されれば残さない。したがって、バッファ記憶手段２５が有する記憶容量は任意であるが、好ましくは、組み込み機器（プログラム実行装置）が１回に実行処理する実行コードの処理データ部分（又は実行コード）が記憶できる最大の記憶容量とする。
【００２１】
本実施の形態は、実行処理を行う圧縮されたプログラムコードのデータを１バイト毎に読み込み、そのデータに含まれているのが処理データであるかコマンドであるかの判定を行う。処理データであればバッファ記憶手段２５に記憶させ、コマンドであると判定すると、伸張手段２２がバッファ記憶手段２５に記憶した処理データとコマンドとを実行コードにする。その実行コードを実行手段２３が実行処理する。これにより、プログラム実行装置によるプログラムコード格納手段２４に格納された圧縮されたプログラムコードに基づいて、実行コード毎の実行処理が行われる。ここで、実行処理が終了した実行コード（プログラムコード）を、ＲＡＭ等のバッファ記憶手段２５に不用意に残しておかないようにし、１回の実行処理に必要な実行コードの処理データ（又は実行コード）を一時的に記憶するために必要な量を越えないようにして、バッファ記憶手段２５の記憶容量を抑える。また、コード種別判定手段２１、コード伸張手段２２及び実行手段２３について、それぞれ物理的に独立した手段で構成してもよいが、通常、プログラム実行装置はいわゆるマイコン等のコンピュータで構成されており、これらの手段は、例えばＣＰＵを中心とする制御処理装置で構成されている。そして、制御処理装置がそれぞれの手段の処理を実行することで、プログラム実行装置の実行処理を実現する。
【００２２】
図３はプログラム実行装置における実行処理を行う際の動作を表すフローチャートである。ここでは、特にプログラム実行装置のコード種別判定手段２１、コード伸張手段２２及び実行手段２３が行う処理を中心に説明する。コード種別判定手段２１は、プログラムコード格納手段２４から圧縮されたプログラムコードのデータを１バイト単位で読み込む（Ｓ１）。そして、コード種別判定手段２１は、実施の形態１で説明した判定用ビットが“０”であるか“１”であるかどうかによって、読み込んだデータがコマンドであるか又は処理データであるか（コマンドでないか）の判定を行う（Ｓ２）。処理データである（コマンドでない）と判断すると、判定用ビットを除いた上でバッファ記憶手段２５に記憶し（Ｓ３）、さらに圧縮されたプログラムコードのデータを１バイト単位で読み込む（Ｓ１）。
【００２３】
一方、読み込んだデータがコマンドであると判断すると、コード伸張手段２２に制御が渡される。コード伸張手段２２は、読み込んだデータ（バイナリデータ）に基づいて、そのデータが表すコマンドを判別し、スクリプト形式のコマンドに変換する。この判別には、実施の形態１で説明したバイナリデータとコマンドとの関係を用いる。コマンドが判別できると、コマンドが実行処理を行う処理データの要素（項目）と割り当てられたデータ量（ビット数）がわかるので、処理データのバイナリデータに基づいて、各要素（項目）の処理データに分ける。以上のような伸張処理を行って実行コードを生成する（Ｓ４）。
【００２４】
そして、コード伸張手段２２から実行手段２３に制御が渡されると、コード伸張手段２２が生成した実行コードに基づいて実行処理を行う（Ｓ５）。逆ポーランド記法に基づく言語においては、各要素（項目）はスタックに積まれ、コマンドに基づいて処理される。実行コードに基づく実行処理が終了すると、コード種別判定手段２１に制御が渡され、次の実行コードに基づく実行処理に対する処理が行われる。以上のように実行コード毎の実行処理を逐次行ってプログラムコードを実行処理し、組み込み機器が動作する。また、実行処理に基づくデータを含む信号を組み込み機器外の機器にネットワークを介して送信して動作させる。
【００２５】
以上のように実施の形態２によれば、プログラムコード格納手段２４から、圧縮されたプログラムコードのデータを所定のデータ量（本実施の形態では１バイト）で読み込み、コード種別判定手段２１が処理データを含むデータであると判定すれば、バッファ記憶手段２５に処理データを一時的に記憶させていき、コマンドを含むデータであると判定すれば、次にコード伸張手段２２が実行コードを生成し、実行手段２３がその実行コードに基づく実行処理を行うようにしたので、バッファ記憶手段２５は、実行コードを生成するまで処理データを記憶させておくだけでよく、これによりバッファ記憶手段２５として設けておくべき記憶容量を少なくさせることができる。また、圧縮されたプログラムコードのデータ読み込みから実行コードの実行処理に至るまでのプログラム実行装置の全体の処理がシンプルであるため、生成した実行コード（プログラムコード）を保持しておかなくても速度の低減を防ぐことができる。以上のように、本実施の形態のプログラム実行装置は、処理に係る記憶容量の低減、実行処理速度の維持の両面を両立できたため、動作制御のためのコスト抑制の要求が高い、家電機器に組み込む場合に特に効果を発揮する。また、通信回線を介して、圧縮されたプログラムコードのデータを含む信号を組み込み機器等に送信してプログラムコード格納手段２４のデータを書き換えられるようにしたので、プログラムコード格納手段２４のプログラムコードを最新に、より効率よく、高度な状態に保つことができる。
【００２６】
実施の形態３．
図４は本発明の実施の形態３に係る圧縮された実行コードのデータ構成を表す図である。上述の実施の形態１においては、バイナリデータにした処理データを先頭から７ビット毎に分けていき（表記されたデータ列においていわゆる左詰めにし）、処理データが７で割り切れない場合には余った残りのビットに“０”等を補充した。
【００２７】
ここで、実行コードに基づく実行処理を行う際に、スタックのようなデータ構造を採る場合、最後に積んだデータが先頭になり、そのデータから処理を行う（つまり、表記されたデータ列の右側のデータからの処理になる）。例えば、要素（項目）の個数を変化させることができる場合、その個数のデータがスタックの先頭に示される。このようなことから、同じ処理系において統一されている方がなにかと都合がよいこともある。そこで、図４（ａ）に示すように、バイナリデータをいわゆる右詰めにし、コード伸張手段２２の伸張処理においても、その先頭が（補充のデータではなく）処理データの一部となるようにした。
【００２８】
また、図４（ｂ）のように、最初に読み込まれる１バイトのデータ（コマンドを含まないデータ）内に、コマンドを含まないデータのバイト数を表すデータを含ませておくことで、コード種別判定手段２１における、コマンドを含んだデータか否かの判定を行わせることができる。図４（ｂ）では、５ビット分（０〜３１までの数値）を処理データのバイト数を表すためのデータに割り当てている。これにより、各バイトデータについて判定用ビットを設ける必要がない。そのため、特に処理データを含むデータのバイト数（ビット数）が多いほど効率のよい圧縮を行うことができる。しかも、処理データのバイト数がわかっており、処理データの次にコマンドが続くため、コマンドに対しても判定用ビットを設ける必要がない。これにより、判定用ビットを設けた場合に比べて、例えば１バイトで判別できるコマンド数が２倍に増える。そのため、コマンド数が多い場合にも有効である。
【００２９】
実施の形態４．
上述した実施の形態では、プログラムコードを逆ポーランド記法に基づく言語で記述し、実行手段２３は、その記述を解釈して実行処理を行うインタプリタとした。本発明はこれに限定するものではない。例えば、インタプリタをJavaVM（又はJVM （Java, Java Virtual Machine JVMはアメリカ合衆国およびその他の国における Sun Microsystems, Inc. の商標又は登録商標）等、スタック型言語の実行コードに基づく実行処理を行うインタプリタを処理系として構成してもよい。より汎用的な言語に適用できるようにしておくことで、さらに高度なコード生成ができる可能性がある。
【図面の簡単な説明】
【００３０】
【図１】第１の実施の形態に係るプログラムコードの圧縮処理を表す図である。
【図２】本発明の実施の形態２に係るプログラム実行装置を表す図である。
【図３】プログラム実行装置における動作を表すフローチャートである。
【図４】実施の形態３に係る圧縮された実行コードを表す図である。
【符号の説明】
【００３１】
１  制御処理手段、１Ａ  処理データ・コマンド識別部、１Ｂ  変換部、２  記憶手段、３  通信手段、２１  コード種別判定手段、２２  コード伸張手段、２３  実行手段、２４  プログラムコード格納手段、２５  バッファ記憶手段。
【図１】
2006215827.tif 000003
【図２】
2006215827.tif 000004
【図３】
2006215827.tif 000005
【図４】
2006215827.tif 000006