(57)【要約】【課題】ＡＭＲプロセッサの命令コードを効果的に圧縮し、携帯装置等のメモリを節約し、機器のコストダウンを図ること。【解決手段】実行用命令データ１が与えられると、圧縮条件判断部２で、ＡＲＭ  ３２ｂｉｔ命令語セットにおける「常に実行」という条件指定（ｂｉｔｐａｔｔｅｒｎ：  １１１０、サフィクス：ＡＬ）を共通化できるか判断し、条件コード部を共通化できる場合には、条件コード圧縮部３で「常に実行」という条件コード部を圧縮する。この「条件コード圧縮」により、２命令６４ビットの語長を５６ビットに短縮することができる。圧縮された命令コード１１を解凍する場合には、圧縮条件判断部１２で圧縮条件を判断し、条件コード展開部１３で圧縮されたプログラムコードの各命令単位に、「常に実行」という条件指定部を付加しながら圧縮されたプログラムコードを展開し、実行用命令データ１４を得る。【選択図】          図１
2004259234.tif 000002
【特許請求の範囲】
【請求項１】
命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムのプログラムコードを圧縮するプログラムコード圧縮方法であって、
複数命令について、上記”常に実行”という条件コード部を共通化することにより、プログラムコードを圧縮する
ことを特徴とするプログラムコードの圧縮方法。
【請求項２】
命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムについて、上記”常に実行”という条件コード部を共通化することにより圧縮したプログラムコードを解凍する方法であって、
圧縮されたプログラムコードの各命令単位に、”常に実行”という条件指定部を付加しながら、圧縮されたプログラムコードを展開する
ことを特徴とするプログラムコードの解凍方法。
【請求項３】
命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムについて、上記”常に実行”という条件コード部を有する命令が連続する領域内で、各命令の条件コード部を共通化し、各命令の条件コード部に他の命令の一部を埋め込むことにより圧縮したプログラムコードを解凍する方法であって、
圧縮されたプログラムコードの各命令単位に、”常に実行”という条件指定部を付加しながら、圧縮されたプログラムコードを展開するとともに、各命令の条件コード部に埋め込まれた上記命令の一部をバッファに格納し、バッファに１命令を復元するに足るデータが揃った時点で、１命令を復元する
ことを特徴とするプログラムコードの解凍方法。
【請求項４】
命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムのプログラムコードを圧縮するプログラムであって、
上記プログラムは、複数命令について、上記”常に実行”という条件コード部を共通化することにより、プログラムコードを圧縮する処理をコンピュータに実行させることにより、プログラムコードを圧縮するプログラム。
【請求項５】
命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムについて、上記”常に実行”という条件コード部を共通化することにより圧縮したプログラムコードを解凍するプログラムであって、
上記プログラムは、圧縮されたプログラムコードの各命令単位に、”常に実行”という条件指定部を付加しながら、圧縮されたプログラムコードを展開する処理をコンピュータに実行させることにより、圧縮された各プログラムコードを解凍する
ことを特徴とするプログラムコードを解凍するプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＡＲＭ３２ビットアーキテクチャを使用する携帯装置において、ファームウェアの格納容量を圧縮するために適用されるプログラムコードの圧縮／解凍方法に関する。
【０００２】
【従来の技術】
携帯電話機に代表される携帯装置では、機能充実要求を満足するために、内部コントローラであるＣＰＵのプログラム（ファームウェア）容量が増大する傾向がある。ファームウェアは装置内蔵のメモリデバイスに格納されるので、プログラム容量の増大はメモリデバイス増加要因となり、製造コストを引き上げる原因となる。
携帯装置においては、コストや消費電力といった点で有利なＡＲＭ系のＲＩＳＣ  ＣＰＵが使用されることが多い。ＲＩＳＣ  ＣＰＵでは命令セットを単純化し、内部構造を簡素化することで前述のメリットを得ているが、逆に命令セットに冗長性が多く、プログラム容量が増える傾向がある。
ファームウェアを携帯装置のメモリ容量内に格納するために、プログラム上の無駄を省く工夫をしたり、あるいはＣＰＵに用意された縮小命令セット（例えばＡＲＭプロセッサのｔｈｕｍｂ命令）を利用してプログラムしたり、という手段によりプログラム容量を減らす努力が行われるが、この場合は従来のプログラムを再プログラムしなければならず、開発期間が増大するという大きな問題がある。
【０００３】
ＲＩＳＣ  ＣＰＵプログラムコードの格納容量を減らす方法として、図１９に示すようにオリジナルプログラムコード１を圧縮してメモリ２に格納しておき、プログラム実行時に必要な部分をテンポラリメモリ３に解凍して実行する、という手法がある（例えば特許文献１参照）。
この方式によれば、実行時に必要なワークＲＡＭエリア３の確保が必要になるが、プログラムコードに手を入れずにサイズを減らすことができる。
また、プログラムコードの圧縮方法としては、可変長符号化による圧縮がよく用いられる。例えばＣＰＵ命令語セットでの命令使用頻度の統計を取り、よく使われる命令語ほど語長の短い符号を割り当てることにより、全体でのビット数を圧縮する。すなわち、図２０に示すように、符号化テーブルを作成し、命令データを符号化する。
解凍時には図２１に示すように、上記符号化テーブルを逆引きすることで、元の命令語を復元する（例えば、特許文献２参照）。
他の方法として、よく使う複数の命令を組み合わせたＣＩＳＣ的な新命令セットを構築しておき、マイクロプログラムのように随時展開して実行するというものがある。
すなわち、図２２に示すように、複合命令対応表等を参照して実行命令を新命令に置き換え圧縮済命令データを生成する。解凍時には、図２３に示すように、新命令テーブルを参照して、実行用命令データを生成する。
この方法は、圧縮済み１命令で複数のＲＩＳＣ命令を実行できるので、プログラムサイズを小さくすることが可能になる。
【０００４】
【特許文献１】
特開２００１−２２２２０３号公報
【特許文献２】
特開２００１−２２２４２６号公報
【０００５】
【発明が解決しようとする課題】
上記図２０に示した方法で圧縮した命令データを解凍する場合、図２１に示すように（１）  圧縮データから元データを参照する部分を符号パターンテーブルを参照して選択し、該当する部分を符号長さテーブルを参照してビット単位で切り出し、（２）  実行用命令を、符号←→命令対応表を参照して解凍する、という手順になる。
この方法の場合、ビット単位での解凍処理のためＣＰＵパワーが要求され、さらに符号化テーブルを格納するメモリ・リソースも要求される。
また、前記図２２に示したＣＩＳＣ的新命令セットによる複合命令化による方法の場合は、図２３に示すように、（１）  圧縮データの１命令を新命令テーブルで参照し、命令語調テーブルと複合命令対応表の該当する複数の命令に解凍する、という手順になる。
この方法の場合、新命令セットに対応した命令対応テーブル群が必要となり、メモリリソースが要求される。
以上のように、従来の方法は、ＣＰＵパワーやメモリ・リソースが要求され、ＣＰＵパワーやメモリの小さい携帯装置では、これらの従来の手法の利用が困難であった。
本発明は上述した事情に鑑みなされたものであって、本発明の目的は、ＡＭＲプロセッサの命令コードを効果的に圧縮し、携帯装置のメモリを節約し、機器のコストダウンを図ることができるプログラムコードの圧縮／解凍方法および装置を提供することである。
【０００６】
【課題を解決するための手段】
本発明においては、ＡＲＭ３２ｂｉｔ  ｃｏｄｅ  ｓｅｔの条件コードの冗長性に対応した圧縮を行うことで、携帯装置における高速解凍を可能とする。
ＡＲＭ  ３２ｂｉｔ命令語セットにおいては、図２４に示すように最上位４ビットが命令実行条件指定部に固定されており、図２５の表に示すように、通常よく使用される単純転送や演算命令においては「常に実行」という条件指定（ｂｉｔｐａｔｔｅｒｎ：  １１１０、サフィクス：ＡＬ）になっている。
そこで、例えば連続して「常に実行」条件が現れる部分で条件ビットを省略するという「条件コード圧縮」により、２命令６４ビットの語長を５６ビットに短縮することができる。
すなわち、命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムのプログラムコードを以下のようにして、圧縮／解凍する。
（１）複数命令について、図１（ａ）に示すように、実行用命令データの圧縮条件を判断し、上記”常に実行”という条件コード部を共通化することにより、プログラムコードを圧縮して、圧縮ずみ命令データを得る。
（２）図１（ｂ）に示すように、上記（１）で圧縮した命令データについて、圧縮条件を判断し、圧縮されたプログラムコードの各命令単位に、”常に実行”という条件指定部を付加しながら、条件コードを展開し、実行用命令データを得る。
上記（１）（２）のようにして圧縮／解凍することにより、格別のＣＰＵパワーやメモリリソースを要求されることなく、効率的に条件コードの圧縮／解凍を行うことができる。
（３）上記（１）で圧縮した命令データについて、圧縮条件を判断し、圧縮されたプログラムコードの各命令単位に、”常に実行”という条件指定部を付加しながら、条件コードを展開する。また、その際、各命令の条件コード部に埋め込まれた上記命令の一部をバッファに格納し、バッファに１命令を復元するに足るデータが揃った時点で、１命令を復元する。
上記のようにバッファを利用して、命令を復元することにより、分散して配置された「条件コード」の命令にも対応することができる。
【０００７】
【発明の実施の形態】
図１，図２は本発明の実施例のＡＭＲ３２ビットコード圧縮／解凍原理を説明する図である。
図１（ａ）において、実行用命令データ１が与えられると、圧縮条件判断部２で、上記「常に実行」という条件コード部を共通化できるかを判断する。そして、「常に実行」という条件コード部を共通化できる場合には、条件コード圧縮部３で「常に実行」という条件コード部を圧縮し、圧縮済の命令データ４を得る。
すなわち、図２（ａ）に示すように連続して「常に実行」という条件指定（ｂｉｔｐａｔｔｅｒｎ：１１１０、図中では”Ｅ”）が現れる場合に、条件指定（ｂｉｔｐａｔｔｅｒｎ：１１１０）を共通化し圧縮する。
上記のように圧縮された命令データ１１を解凍する場合には、図１（ｂ）に示すように、圧縮条件判断部１２で圧縮条件を判断し、条件コード展開部１３で圧縮されたプログラムコードの各命令単位に、「常に実行」という条件指定部を付加しながら圧縮されたプログラムコードを展開し、実行用命令データ１４を得る。すなわち、図２（ｂ）に示すように、条件指定（ｂｉｔｐａｔｔｅｒｎ：１１１０）を各命令コードに付加して、元の命令を復元する。以下、上記「常に実行」という条件コード（ｂｉｔｐａｔｔｅｒｎ：１１１０）を「ＡＬ」コードという。
【０００８】
図３、図４は、本発明の実施例のＡＭＲ３２ビットコードの圧縮／解凍処理の実現例を説明するフローチャートである。
図３は圧縮処理を示し、まず、ソースポインタｐを初期化し（ステップＳ１）、オリジナルプログラムコードを１命令（４バイト）づつ読み込み、条件コードｂｉｔｐａｔｔｅｒｎ：１１１０となる命令の連続数ｎをカウントする。（ステップＳ２）。
ｎ＞＝２であるかを調べ（ステップＳ３）、ｎが２未満の場合には、圧縮対象にならないので、１命令をそのままコピー出力する（ステップＳ４）。そして、ソースポインタｐを１命令進め（ステップＳ５）、ソース終了でなければ、ステップＳ１０からステップＳ２に戻る。
ｎが２以上のときは圧縮対象とし、ｍ＝ｎ￥２（ｎ￥２は２で除したときの整数部）により圧縮ペア数ｍを算出する。ここでｍの最大数を１６と制限しておく（ステップＳ６）。
次いで、圧縮マークとして１バイトのヘッダ”０ｘＦ０＋ｍ−１”を出力する。ペア数ｍが１〜１６の場合、ヘッダは”０ｘＦ０”〜”０ｘＦＦ”となる。次に、ｍ個のペアに対して前記図２（ａ）で示した変換を行い結果を出力する（ステップＳ８）。なお、”０ｘ”は１６進を表し、以下では”０ｘ”を省略して表記する。
また、ソースポインタｐをｍ＊２命令進め（ステップＳ９）、終了でなければ、ステップＳ１０からステップＳ２に戻る（ステップＳ９，Ｓ１０）。
以上の作業をオリジナルプログラムコードが終了するまで行う。
【０００９】
図４は解凍処理を示し、まず、圧縮データポインタｐを初期化し、圧縮済みプログラムコードを１バイト（この１バイトデータをｄとする）読み込む（ステップＳ１，Ｓ２）。
これが圧縮マーク（ｂｉｔｐａｔｔｅｒｎ：１１１１ｘｘｘｘ）と一致するかを調べ（ステップＳ３）、一致しない場合には、圧縮なしとして１命令（４バイト）をコピーし、データポインタｐを１命令進め（ステップＳ４、Ｓ５）、データ終了でなければ、ステップＳ９からステップＳ２に戻る。
上記読み込んだ１バイトデータｄが圧縮マークだった場合、”ｄ”と”０Ｆ”のアンド演算を行って、圧縮マークの下位４ビットからｍ’（＝ｍ−１）を求め、圧縮ペア数ｍ’＋１（＝ｍ）を求める（ステップＳ６）。
次いで、求めた圧縮ペア数ｍ（＝ｍ’＋１）について、前記図２（ｂ）に示したルールで条件コードを補ってｍ×２個の命令コードを復元する（ステップＳ８）。
【００１０】
具体的には、１バイトデータｄを読み込み、４ビット固定シフトを行い、上位４ビットをｂｉｔｐａｔｔｅｒｎ：１１１０（＝”Ｅ”）にマスクして最初の命令の１バイト目を復元して出力し、残り３バイトをそのままコピー出力する。図２（ｂ）の例では、この処理により、”Ｅ１２３４５６７”が復元される。
また固定シフトを行わずにｄの上位４ビットをｂｉｔｐａｔｔｅｒｎ：１１１０（＝”Ｅ”）にマスクして第２命令の１バイト目を復元して出力し、残り３バイトをそのままコピー出力する。図２（ｂ）の例では、この処理により、”Ｅ８９ＡＢＣＤＥ”が復元される。
次いで、データポインタｐをｍ’＋１（＝ｍ）命令進め（ステップＳ８）、データ終了でなければステップＳ９からステップＳ２に戻る。
以上の作業を必要な命令コード数の解凍が完了するまで繰り返す。
上記のように、本実施例の解凍処理は条件コード圧縮部分１バイトの処理を除いてバイト単位でのコピーである。また条件コード復元処理は４ビット固定のシフト１回で２命令が処理できる。可変長符号化の解凍処理に比べ、処理がバイト単位、あるいは固定長シフトだけで構成できるので、解凍時のＣＰＵ負荷を大幅に小さくでき、また解凍用テーブルを持たずに処理が行える。
【００１１】
ところで、上記の実施例では、全てのプログラムデータがＡＲＭ命令で構成されることを前提にしているが、プログラム中にデータエリアを混在するような構成だった場合、命令コードとしてあり得ないデータ（条件コード部の位置にｂｉｔｐａｔｔｅｒｎ：１１１１があるもの）が出現する可能性がある。
この場合、上記の実施例で用いている圧縮マーク（１１１１ｘｘｘｘ）と干渉するため、正常に解凍処理が行えない。
これに対応するために、圧縮時に算出する圧縮ペア数ｍの最大数を１５と制限し、ペア数ｍ＝１６に相当する圧縮マーク（”ＦＦ”）をエスケープマークとして使用する。
そして、圧縮時に条件コード部がｂｉｔｐａｔｔｅｒｎ：１１１１となるデータを検出した場合、エスケープマークとともに４バイト分のデータをそのまま出力する。
解凍時にエスケープマークを検出した場合、続く４バイトデータをそのままコピーする。これにより、非命令データとの干渉を避けることができる。
【００１２】
上記実施例では、常に命令ペアが隣接していなければならず、分散して配置された「条件コード＝ＡＬ」の命令に対応できない。また、例えば、「ＡＬ」コードを持つ３つの命令を圧縮しても、１．５バイトしか減らず、この半端な０．５バイトが余ってしまう。
以下に説明する実施例は、次に展開すべき命令の断片（例えば上記０．５バイト）をバッファに保持することで、分散して配置された「条件コード＝ＡＬ」の命令に対応できるようにしたものである。
図５は上記バッファを用いた圧縮／解凍処理の概念を説明する図である。
圧縮に際しては、まず予め圧縮対象となる命令領域を検索し、命令領域と対応する形で、圧縮可能であるか否かのマークを付けておく。
そして、命令コード１，命令コード２が圧縮可能の場合には、図５（ａ）に示すように、命令コード１の最初の４ビット（＝”Ｅ”）を命令コード２の１バイト目の後半４ビット（＝”８”）と置き換え、命令コード１の２バイト〜４バイト目、命令コード２の２バイト〜４バイト目を圧縮コードとして出力する。
解凍時には、図５（ｂ）に示すように、圧縮入力コードの１バイト目の前半４ビット（＝”８”）をバッファに格納し、１バイト目の前半４ビットを”Ｅ”に置き換えて、命令コード１を出力する。
ついで、次の圧縮入力コードについて、”Ｅ”と上記バッファに格納された４ビット（＝”８”）から命令コード２の１バイト目を生成し、圧縮入力コードの１バイト〜３バイトから命令コード２の２〜４バイト目を生成する。
【００１３】
上記図５では、４ビットのバッファを用いる場合について説明したが、以下の実施例で説明するように、バッファの大きさは読み出し幅に応じた適切な大きさのバッファを用いる。
図６は上記バッファを用いた圧縮処理のフローチャートである。
まず、圧縮対象領域をマークアップする（ステップＳ１）。すなわち、上記したように、圧縮対象となる命令領域を予め検索しておき、命令領域と対応する形で圧縮可能可否のマークをつけておく。なお、圧縮可能である条件は（１）  条件コード「ＡＬ」であり、（２）  ２命令以上連続し、（３）  命令数の総計が半端にならない、ことである。
ついで、元データ・格納領域・バッファ等の初期化を行い（ステップＳ２）、圧縮ループを開始する。
圧縮しようとする命令が圧縮対象であるかどうか、ステップＳ１で作成したマークを参照して判断し（ステップＳ３）、圧縮対象でない命令は、そのまま加工せず出力する（ステップＳ４）。そして、入力終了でなければ、ステップＳ３に戻る。
また、圧縮対象である場合には、バッファが空であるかを調べる（ステップＳ５）。バッファが空であれば、命令中に分散埋め込みすべき命令データをバッファに積む（ステップＳ６）
そして、現在の命令が圧縮対象領域の先頭であるかを調べ（ステップＳ７）、先頭であれば、領域の連続数を求め、圧縮マークをつけて出力する。なお、このとき、複数バイト同時アクセス解凍用データを作成する場合（後述する）は、アクセスバイト数に応じてバッファからデータを充填する（ステップＳ８）。
次に、元データから１命令を読み込み、後述する図８（ａ）、図１１、図１５の形式で条件コード「ＡＬ」をバッファ内データで置換し（ステップＳ９）、作成した圧縮データを出力する（ステップＳ１０）。
入力が終了でなければ、ステップＳ１１からステップＳ３に戻り、上記処理を入力データが終了するまで繰り返す。
【００１４】
図７は上記のようにして作成した圧縮データを解凍する処理を示すフローチャートである。
入力ポインタ・出力ポインタ・バッファ等の初期化を行い（ステップＳ１）、解凍ループを開始する。
まず、圧縮データの形式に合わせた、１ワードのデータを入力し（ステップＳ２）、圧縮マークがあるかを調べる（ステップＳ３）。
入力データが圧縮マークを含んでいない場合には、非圧縮命令として１命令分をそのまま出力する（ステップＳ４）。
また、圧縮マークを含んでいる場合には、入力したデータから圧縮前データ領域連続数を求める（ステップＳ５）。ここで、入力したデータ中にバッファ用データが含まれる場合は、バッファにこのデータを積む。
そして、バッファの充填が完了したか、すなわち、バッファに１命令解凍可能な量のデータが積まれたかを調べ（ステップＳ６）、バッファの充填が完了したら、後述する図８（ｂ）、図１２、図１６の形式に添ってバッファ内データに条件コード「ＡＬ」を補い、解凍データを得る（ステップＳ７）。
バッファの充填が完了していなければ、入力データから１命令解凍に要するデータを読み込み、後述する図８（ｂ）、図１２、図１６の形式に添って条件コード「ＡＬ」を補うとともに、バッファにデータを積み、解凍データを得る（ステップＳ８）。ついで、上記ステップＳ７またはステップＳ８で得られた解凍データを出力する（ステップＳ９）。
そして、領域が終了したかを調べ（ステップＳ１０）、領域が終了していなければ、上記ステップＳ６〜ステップＳ９の処理を領域が終了するまで繰り返す。
ついて、入力が終了したかを調べ、終了していなければ、上記ステップＳ２〜ステップＳ１０の処理を、圧縮データが終了するまで続ける。
【００１５】
ここで、対象となる装置のＣＰＵバス構成などによっては、メモリやＩＯアクセスが１６ビット幅や３２ビット幅になっていることがある。
したがって、上記圧縮／解凍処理においては、ＣＰＵバス構成に応じて、ＣＰＵからアクセスするデータの幅を選定することが望ましく、ＣＰＵからアクセスするデータの幅が８ビットではなく１６または３２ビット幅であるほうが高速であることが多い。
以下、１ワードが８ビットの場合、１６ビットの場合、３２ビットの場合のそれぞれについて、圧縮／解凍アルゴリズムの詳細について説明する。
【００１６】
図８は、８ビット幅読み出しに適した圧縮例／解凍例を示す図である。
同図（ａ）は圧縮例を示しており、同図に示すように４命令を圧縮する場合には、まず、出力１として、１バイトのヘッダ”Ｆ４”を出力し、次に、２命令目の第１バイト目の後半４ビット”（＝”０”）と、１命令目の第１バイト目の後半４ビット（＝”１”）を出力２として出力する。以下、１命令目の２〜４バイト目を出力３〜出力５として出力し、さらに、２命令目の２〜４バイト目を出力６〜出力８として出力する。
３命令目、４命令目については、上記と同様、４命令目の第１バイト目の後半４ビット”（＝”０”）と、３命令目の第１バイト目の後半４ビット（＝”１”）を出力９として出力し、以下、上記と同様に、３命令目、４命令目の２〜４バイト目を出力１０〜出力１５として出力する。
【００１７】
図８（ｂ）は解凍例を示しており、図８（ａ）のように圧縮したデータを解凍する場合には、同図に示すように、入力２の前半４ビットをバッファに格納し、入力２の前半４ビットを”Ｅ”に置き換えて、入力２〜入力５から解凍済の第１番目の命令を得て、出力１として出力する。
また、入力６〜入力８をバッファ１に積み、バッファ１が充填されたら頭に”Ｅ”を付けて、解凍済の第２番目の命令を得て、出力２として出力する。
入力９〜入力１５についても、上記と同様に、入力９の前半４ビットをバッファ２に格納し、入力９の前半４ビットを”Ｅ”に置き換えて、入力９〜入力１２から解凍済の第３番目の命令を得て、出力３として出力する。次に、入力１３〜入力１５をバッファ２に積み、バッファ２が充填されたら頭に”Ｅ”を付けて、解凍済の第４番目の命令を得て、出力４として出力する。
【００１８】
図９は８ビット幅読み出しに適した圧縮アルゴリズムを示すフローチャートである。この場合、分散埋め込みすべき命令の位置は現在の次の命令である（図９のステップＳ１７）また、圧縮マークのサイズが１バイトであるので、処理ワードに追加バッファデータを含めない。よって、バッファデータの有無をフラグとして扱い（図９のステップＳ１２）、図８（ａ）の形式で４バイトのデータ（図９のステップＳ１９）と、３バイトのデータ（図９のステップＳ１４）を交互に生成する。
図９において、まず、ソースポインタｐ、ＡＬマーク領域ａを初期化する（ステップＳ１）。次に「ＡＬ」コード連続数ｎをカウントし、ｎ＞＝２であるかを調べる（ステップＳ２，Ｓ３）。ｎ＞＝２であれば、連続する領域にＡＬマークを設定し、ステップＳ５に行く。また、ｎ＞＝２でなければ、ステップＳ５に行き、ステップＳ５で、ソースポンイタｐからソース終了かを判断し、ソース終了でなければ、ステップＳ２に戻り、ソース終了まで上記処理を繰り返す。
ソース終了となると、ソースポインタｐ、バッファフラグｂを初期化し、圧縮ループを開始する（ステップＳ６）。
まず、ＡＬマークが有るかを調べ（ステップＳ７）、ＡＬマークがなければ、圧縮対象ではないので、圧縮対象でない命令は、そのまま加工せず出力する（ステップＳ８，Ｓ９）。そして、入力終了でなければ、ステップＳ７に戻る。
また、圧縮対象である場合には、圧縮領域の先頭であるかを調べ（ステップＳ１０）、領域先頭であれば、圧縮マークを書き出す（ステップＳ１１）。
ついで、バッファが空であるかを調べる（ステップＳ１２）。バッファが空であれば、１命令を読み出し（ステップＳ１６）、次マーク位置から１命令を読み出して、図８（ａ）に示したように、ＡＬコードを置換する（ステップＳ１７，Ｓ１８）。そして、４バイト書き出し、バッファフラグｂを立て（ステップＳ２０）、ステップＳ２１に行き、ソース終了かを判断する。ソース終了でなければ、ステップＳ７に戻る。
また、バッファフラグｂが立っており、バッファが空でなければ、１命令を読み出して、３バイト書き出し（ステップＳ１３，Ｓ１４）、バッファフラグｂをクリアして（ステップＳ１５）、ステップＳ２１に行く。ステップＳ２１でソース終了かを判断し、ソース終了でなければ、ステップＳ７に戻り、上記処理を入力データが終了するまで繰り返す。
【００１９】
図１０は８ビット幅読み出しに適した解凍アルゴリズムを示すフローチャートである。
図１０において、バッファ等の初期化を行い（ステップＳ１）、解凍ループを開始する。まず、１バイトのデータを入力し（ステップＳ２）、圧縮マークがあるかを調べる（ステップＳ３）。
入力データが圧縮マークを含んでいない場合には、非圧縮命令として＋３バイト入力してそのままデータ出力する（ステップＳ４）。
また、圧縮マークを含んでいる場合には、入力したデータから圧縮前データ領域連続数を求める（ステップＳ５）。
そして、バッファの充填が完了しているかを調べ（ステップＳ６）、バッファ充填が完了してれば、前記図８（ｂ）に示したように、バッファのデータを読み出して、条件コード「ＡＬ」を補い、解凍データを出力し（ステップＳ７，Ｓ８）、ステップＳ１０に行く。バッファの充填が完了していなければ、１バイト入力し、バッファに格納し（ステップＳ１０）、ステップ１０に行く。
ステップＳ１０で領域が終了したかを調べ、領域が終了していなければステップＳ６に戻り、領域が終了するまで上記処理を繰り返す。
領域が終了したらステップＳ１１で入力が終了したかを調べ、入力が終了していなければステップＳ２に戻り、入力が終了するまで上記処理を繰り返す。
【００２０】
図１１図、１２は１６ビット幅読み出しに適した圧縮例／解凍例を示す図である。
同１１は圧縮例を示しており、同図に示すように６命令を圧縮する場合には、まず、１バイトのヘッダ”Ｆ６”を生成し、入力２（２命令目）の１バイト目の後半４ビット（＝”０”）と、２バイト目の前半４ビット（＝”１”）を、上記ヘッダ”Ｆ６”と合わせて、出力１（＝”Ｆ６０１”）を生成して出力する。
次に、入力１（１命令目）の条件コード（＝”Ｅ”）を、入力２（２命令目）の２バイト目の後半４ビット（＝”２”）に置き換え、入力１の前半２バイトを出力２（＝”２１２３”）として出力するとともに、入力１の後半２バイトを出力３（＝”４５６７”）として出力する。また、入力２（２命令目）の後半の２バイトを出力４（＝”３４５６”）として出力する。
次いで、入力３（３命令目）の条件コード（＝”Ｅ”）を、入力６（６命令目）の１バイト目の後半４ビット（＝”０”）と置き換え、入力３の前半２バイトを出力５（＝”０１２３”）として出力するとともに、入力３の後半２バイトを出力６（＝”４５６７”）として出力する。
同様に、入力４（４命令目）の条件コード（＝”Ｅ”）を、入力６（６命令目）の２バイト目の前半４ビット（＝”１”）と置き換え、入力４の前半２バイトを出力７（＝”１８９Ａ”）として出力するとともに、入力４の後半２バイトを出力８（＝”ＢＣＤＥ”）として出力する。
さらに、入力５（４命令目）の条件コード（＝”Ｅ”）を、入力６（６命令目）の２バイト目の後半４ビット（＝”２”）と置き換え、入力５の前半２バイトを出力９（＝”２１２３”）として出力するとともに、入力５の後半２バイトを出力１０（＝”４５６７”）として出力する。
そして、最後に、入力６の後半の２バイトを出力１１（＝”３４５６”）として出力する。
【００２１】
図１２は解凍例を示しており、前記図１１に示したように圧縮したデータを解凍する場合には、同図に示すように、入力１の後半１バイト（＝”０１”）と、入力２の１バイト目の前半４ビット（＝”２”）をッファ１に格納し、入力２の前半４ビットを条件コード（＝”Ｅ”）に置き換えて、入力２，入力３から解凍済の第１番目の命令を得て、出力１として出力する。
次に、入力４（＝”３４５６”）をバッファ１に格納し、バッファ１の内容の先頭に条件コード（＝”Ｅ”）を付加して、解凍済の第２番目の命令を得て、出力２として出力する。
次いで、入力５の１バイト目の前半４ビット（＝”０”）をバッファ２に格納し、入力５の１バイト目の前半４ビットを条件コード（＝”Ｅ”）に置き換えて、入力５、入力６から解凍済の３番目の命令を得て、出力３として出力する。
同様に、入力７の１バイト目の前半４ビット（＝”１”）をバッファ２に格納し、入力７の１バイト目の前半４ビットを条件コード（＝”Ｅ”）に置き換えて、入力７、入力８から解凍済の４番目の命令を得て、出力４として出力する。
また、入力９の１バイト目の前半４ビット（＝”２”）をバッファ２に格納し、入力９の１バイト目の前半４ビットを条件コード（＝”Ｅ”）に置き換えて、入力９、入力１０から解凍済の５番目の命令を得て、出力５として出力する。
最後に、バッファ２の内容の先頭に条件コード（＝”Ｅ”）を付加して、解凍済の６番目の命令を得て、出力６として出力する。
【００２２】
図１３は１６ビット幅読み出しに適した圧縮アルゴリズムを示すフローチャートである。この場合、図１１に示したように分散埋め込みすべき命令の位置は現在の次の命令、または３つ先の命令である。また、圧縮マークに８ビットの追加バッファデータが含まれる。
図１３において、まず、ソースポインタｐ、ＡＬマークａを初期化する（ステップＳ１）。次に「ＡＬ」コード連続数ｎをカウントし、ｎ＞＝２であるかを調べる（ステップＳ２，Ｓ３）。ｎ＞＝２であれば、連続する領域にＡＬマークを設定し、ステップＳ５に行く。また、ｎ＞＝２でなければ、ステップＳ５に行き、ステップＳ５で、ソースポンイタｐからソース終了かを判断し、ソース終了でなければ、ステップＳ２に戻り、ソース終了まで上記処理を繰り返す。
ソース終了となると、ソースポインタｐ、バッファフラグｂを初期化し、圧縮ループを開始する（ステップＳ６）。
まず、ＡＬマークが有るかを調べ（ステップＳ７）、ＡＬマークがなければ、圧縮対象ではないので、圧縮対象でない命令は、そのまま加工せず出力する（ステップＳ８，Ｓ９）。そして、入力終了でなければ、ステップＳ７に戻る。
また、圧縮対象である場合には、圧縮領域の先頭であるかを調べ（ステップＳ１０）、領域先頭であれば、圧縮マークを書き出す（ステップＳ１１）。
ついで、バッファｂが空であるかを調べる（ステップＳ１２）。バッファが空であれば、次マーク位置から１命令を読み出し（ステップＳ２１）、ＡＬコードを置換する（ステップＳ２２）。そして、１バイト書き出し、バッファに２０ビットを積み込み（ステップＳ２３、Ｓ２４）、ステップＳ２５に行き、ソース終了かを判断する。ソース終了でなければ、ステップＳ７に戻る。
また、バッファが空でなければ、バッファに１６ビットが積み込まれているかを調べ（ステップＳ１３）、１６ビット積み込まれていれば、１命令を読み出し、１６ｂｉｔをバッファから引き出し（ステップＳ１９）、２バイト書き出す（ステップＳ２０）。ステップＳ２５に行き、ソース終了かを判断する。ソース終了でなければ、ステップＳ７に戻る。
さらに、バッファに積み込まれているのが１６ビットでなければ、１命令を読み出し（ステップＳ１４）、バッファから４ビット引き出し、ＡＬコードを置換して（ステップＳ１５，Ｓ１６）、４バイトを書き出す。ステップＳ２５に行き、ソース終了かを判断する。ソース終了でなければ、ステップＳ７に戻る。
上記処理をソース終了まで繰り返す。
【００２３】
図１４は１６ビット幅読み出しに適した解凍アルゴリズムを示すフローチャートである。
図１４において、バッファ等の初期化を行い（ステップＳ１）、解凍ループを開始する。まず、２バイトのデータを入力し（ステップＳ２）、圧縮マークがあるかを調べる（ステップＳ３）。
入力データが圧縮マークを含んでいない場合には、非圧縮命令として＋２バイト入力してそのままデータ出力する（ステップＳ４）。
また、圧縮マークを含んでいる場合には、入力したデータから圧縮前データ領域連続数を求め、バッファに１バイトを充填する（ステップＳ５）。
そして、バッファに２バイトの充填が完了しているかを調べ（ステップＳ６）、バッファに２バイトの充填が完了してれば、バッファのデータを読み出して、、２バイト入力し、ＡＬコードを補い解凍データを出力し（ステップＳ８）、ステップＳ１１に行く。
バッファの２バイト充填が完了していなければ、４バイト入力し、ＡＬコードを補い、バッファに１／２バイト充填し、解凍データを出力し（ステップＳ１０）、ステップ１１に行く。
ステップＳ１０で領域が終了したかを調べ、領域が終了していなければステップＳ６に戻り、領域が終了するまで上記処理を繰り返す。
領域が終了したらステップＳ１１で入力が終了したかを調べ、入力が終了していなければステップＳ２に戻り、入力が終了するまで上記処理を繰り返す。
【００２４】
図１５は３２ビット幅読み出しに適した圧縮例を示す図である。
同図に示すように１０命令を圧縮する場合には、まず、１バイトのヘッダ”ＦＡ”を生成し、入力２（２命令目）の１バイト目の後半４ビット（＝”０”）と、２，３バイト目（＝”１２３４”）、４バイト目の前半４ビット（＝”５）を、上記ヘッダ”ＦＡ”と合わせて、出力１（＝”ＦＡ０１２３４５”）を生成して出力する。次に、入力１（１命令目）の条件コード（＝”Ｅ”）を、上記入力２の４バイト目の後半４ビット（＝”６”）と置き換え、出力２（＝”６８９ＡＢＣＤＥ”）を生成して出力する。
次いで、入力３（３命令目）の条件コード（＝”Ｅ”）を、入力１０（１０命令目）の１バイト目の後半４ビット（＝”０”）と置き換え、出力３（＝”０１２３４５６７”）を生成して出力する。
また、入力４（４命令目）の条件コード（＝”Ｅ”）を、入力１０（１０命令目）の２バイト目の前半４ビット（＝”１”）と置き換え、出力４（＝”１８９ＡＢＣＤＥ”）を生成して出力する。
以下同様に、入力５〜９の条件コード（＝”Ｅ”）を、入力１０（１０命令目）の２バイト目の後半４ビット（＝”２”）、３バイト目、４バイト目の前半、後半の４ビットと置き換え、出力４〜出力９を得て出力する。
【００２５】
図１６は３２ビット幅読み出しに適した解凍例を示す図である。
図１４のように圧縮したデータを解凍する場合には、同図に示すように、入力１のヘッダ（＝”ＦＡ”）を除いた部分をバッファ１に格納した後、入力２の１バイト目の前半４ビットをバッファ１に格納して、条件コード（＝”Ｅ”）に置き換え、出力１（＝”Ｅ８９ＡＢＣＤＥ”）として出力する。
次に、バッファ１に格納されたデータの先頭に条件コード（＝”Ｅ”）を付加して、出力２（＝”Ｅ０１２３４５６”）として出力する。
次いで、入力３の１バイト目の前半４ビットをバッファ２に格納して条件コード（＝”Ｅ”）に置き換え、出力３（＝”Ｅ１２３４５６７”）として出力する。以下同様に、入力４〜９の１バイト目の前半４ビットをそれぞれバッファ２に格納して条件コード（＝”Ｅ”）に置き換え、出力３〜９として出力する。
最後に、バッファ２に格納されたデータの先頭に条件コード（＝”Ｅ”）を付加して、出力１０（＝”Ｅ０１２３４５６”）として出力する。
【００２６】
図１７は３２ビット幅読み出しに適した圧縮アルゴリズムを示すフローチャートである。この場合、図１５に示すように分散埋め込みすべき命令の位置は現在の次の命令、または７つ先の命令である。また、圧縮マークに２４ビットの追加バッファデータが含まれる。
図１７において、まず、ソースポインタｐ、ＡＬマーク領域ａを初期化する（ステップＳ１）。次に「ＡＬ」コード連続数ｎをカウントし、ｎ＞＝２であるかを調べる（ステップＳ２，Ｓ３）。ｎ＞＝２であれば、連続する領域にＡＬマークａを設定し、ステップＳ５に行く。また、ｎ＞＝２でなければ、ステップＳ５に行き、ステップＳ５で、ソースポンイタｐからソース終了かを判断し、ソース終了でなければ、ステップＳ２に戻り、ソース終了まで上記処理を繰り返す。
ソース終了となると、ソースポインタｐ、バッファフラグｂを初期化し、圧縮ループを開始する（ステップＳ６）。
まず、ＡＬマークが有るかを調べ（ステップＳ７）、ＡＬマークがなければ、圧縮対象ではないので、圧縮対象でない命令は、そのまま加工せず出力する（ステップＳ８，Ｓ９）。そして、入力終了でなければ、ステップＳ７に戻る。
また、圧縮対象である場合には、圧縮領域の先頭であるかを調べ（ステップＳ１０）、領域先頭であれば、圧縮マークを書き出す（ステップＳ１１）。
ついで、バッファｂが空であるかを調べる（ステップＳ１２）。バッファが空であれば、次マーク位置から１命令を読み出し（ステップＳ２１）、ＡＬコードを置換する（ステップＳ２２）。そして、１バイト書き出し、バッファに２０ビットを積み込み（ステップＳ２３、Ｓ２４）、ステップＳ２５に行き、ソース終了かを判断する。ソース終了でなければ、ステップＳ７に戻る。
また、バッファが空でなければ、バッファに４ビットが積み込まれているかを調べ（ステップＳ１３）、４ビット積み込まれていれば、１命令を読み出し、４ｂｉｔをバッファから引き出し（ステップＳ１８，Ｓ１９）、４バイト書き出す（ステップＳ２０）。ステップＳ２５に行き、ソース終了かを判断する。ソース終了でなければ、ステップＳ７に戻る。
さらに、バッファに積み込まれているのが４ビットでなければ、１命令を読み出し（ステップＳ１４）、バッファから４ビット引き出し、ＡＬコードを置換して（ステップＳ１５，Ｓ１６）、４バイトを書き出す。ステップＳ２５に行き、ソース終了かを判断する。ソース終了でなければ、ステップＳ７に戻る。
上記処理をソース終了まで繰り返す。
【００２７】
図１８は３２ビット幅読み出しに適した解凍アルゴリズムを示すフローチャートである。
図１８において、バッファ等の初期化を行い（ステップＳ１）、解凍ループを開始する。まず、４バイトのデータを入力し（ステップＳ２）、圧縮マークがあるかを調べる（ステップＳ３）。
入力データが圧縮マークを含んでいない場合には、そのままデータ出力する（ステップＳ４）。
また、圧縮マークを含んでいる場合には、入力したデータから圧縮前データ領域連続数を求め、バッファに３バイトを充填する（ステップＳ５）。
そして、バッファに（３＋１／２）バイトの充填が完了しているかを調べ（ステップＳ６）、バッファに（３＋１／２）バイトの充填が完了してれば、バッファのデータを読み出して、ＡＬコードを補い解凍データを出力し（ステップＳ７，Ｓ８）、ステップＳ１１に行く。
バッファの（３＋１／２）バイト充填が完了していなければ、４バイト入力し、バッファに１／２バイト充填し、ＡＬコードを補って解凍データを出力し（ステップＳ９）、ステップ１１に行く。
ステップＳ１１で領域が終了したかを調べ、領域が終了していなければステップＳ６に戻り、領域が終了するまで上記処理を繰り返す。
領域が終了したらステップＳ１１で入力が終了したかを調べ、入力が終了していなければステップＳ２に戻り、入力が終了するまで上記処理を繰り返す。
【００２８】
（付記１）  命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムのプログラムコードを圧縮するプログラムコード圧縮方法であって、
複数命令について、上記”常に実行”という条件コード部を共通化することにより、プログラムコードを圧縮する
ことを特徴とするプログラムコードの圧縮方法。
（付記２）  上記”常に実行”という条件コード部を有する命令が連続する領域内で、各命令の条件コード部を削除して、各命令を詰めて記述することにより各命令の条件コードを共通化する
ことを特徴とする付記１のプログラムコードの圧縮方法。
（付記３）  上記”常に実行”という条件コード部を有する命令が連続する領域内で、各命令の条件コード部に他の命令の一部を埋め込むことにより各命令の条件コード部を共通化する
ことを特徴とする付記１のプログラムコードの圧縮方法。
（付記４）  条件コード部の削除の有無を示すマークとして、上記命令セットで未使用の条件コードビットパターンを用い、
プログラムコードを圧縮するに際し、上記条件コード部の削除の有無を示すマークを、上記”常に実行”という条件コード部を有する命令が連続する領域の先頭に付加する
ことを特徴とする付記１，２または付記３のプログラムコードの圧縮方法。
（付記５）  条件コード部の削除の有無を示すマークと、条件コード部を共通化した命令数を組み合わせる
ことを特徴とする付記４のプログラムコード圧縮方法。
（付記６）  命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムについて、上記”常に実行”という条件コード部を共通化することにより圧縮したプログラムコードを解凍する方法であって、
圧縮されたプログラムコードの各命令単位に、”常に実行”という条件指定部を付加しながら、圧縮されたプログラムコードを展開する
ことを特徴とするプログラムコードの解凍方法。
（付記７）  命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムについて、上記”常に実行”という条件コード部を有する命令が連続する領域内で、各命令の条件コード部を共通化し、各命令の条件コード部に他の命令の一部を埋め込むことにより圧縮したプログラムコードを解凍する方法であって、
圧縮されたプログラムコードの各命令単位に、”常に実行”という条件指定部を付加しながら、圧縮されたプログラムコードを展開するとともに、各命令の条件コード部に埋め込まれた上記命令の一部をバッファに格納し、バッファに１命令を復元するに足るデータが揃った時点で、１命令を復元する
ことを特徴とするプログラムコードの解凍方法。
（付記８）  命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムのプログラムコードを圧縮するプログラムであって、
上記プログラムは、複数命令について、上記”常に実行”という条件コード部を共通化することにより、プログラムコードを圧縮する処理をコンピュータに実行させることにより、プログラムコードを圧縮するプログラム。
（付記９）  命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムについて、上記”常に実行”という条件コード部を有する命令が連続する領域内で、各命令の条件コード部を共通化し、各命令の条件コード部に他の命令の一部を埋め込むことにより圧縮したプログラムコードを解凍するプログラムであって、
上記プログラムは、圧縮されたプログラムコードの各命令単位に、”常に実行”という条件指定部を付加しながら、圧縮されたプログラムコードを展開するとともに、各命令の条件コード部に埋め込まれた上記命令の一部をバッファに格納する処理と、バッファに１命令を復元するに足るデータが揃った時点で、１命令を復元する処理をコンピュータに実行させる
ことを特徴とするプログラムコードを解凍するプログラム。
（付記１０）  命令実行条件指定部が固定されており、”常に実行”という条件コード部が現れる命令語セットで記述されるプログラムのプログラムコードを圧縮するプログラムコード圧縮装置であって、
上記”常に実行”という条件コード部を有する命令が連続する領域を調べ、該命令の連続数をカウントする手段と、
上記連続数が２以上のとき、条件コード部を削除したことを示すマークと、上記命令の連続数を組み合わせた圧縮マークを生成する手段と、
上記”常に実行”という条件コード部を有する命令が連続する領域内で、各命令の条件コード部を削除して、各命令を詰めることにより各命令の条件指定部を共通化する手段とを備えた
ことを特徴とするプログラムコード圧縮装置。
（付記１１）  命令実行条件指定部が固定されており、”常に実行”という条件コードが現れる命令語セットで記述されるプログラムについて、上記条件コード部を削除して、各命令を詰め、条件コード部を削除したことを示すマークと、上記命令の連続数を組み合わせた圧縮マークを付加することにより圧縮したプログラムコードを解凍する解凍装置であって、
上記圧縮したプログラムコードから、条件コード部を削除したことを示すマークの有無を判定する手段と、
上記マークが検出されたとき、圧縮されたプログラムコードの各命令単位に、”常に実行”という条件指定部を付加する処理を上記命令の連続数に応じた回数繰り返して、プログラムコードを展開する手段を備えた
ことを特徴とする圧縮プログラムコードの解凍装置。
【００２９】
【発明の効果】
以上説明したように、本発明においては、”常に実行”という条件コード部を共通化することにより、プログラムコードを圧縮し、また、圧縮されたプログラムコードの各命令単位に、”常に実行”という条件指定部を付加しながら、条件コードを展開して解凍を行っているので、従来に比べて、ＣＰＵ負荷を大幅に小さくすることができ、またメモリリソースを要求されることなく、効果的に圧縮／解凍を行うことができる。このため、携帯機器等に適用することにより、メモリを節約でき、機器のコストダウンを図ることができる。
【図面の簡単な説明】
【図１】本発明の実施例の条件コード圧縮／解凍処理を示す図である。
【図２】ＡＭＲ３２ビットコード圧縮／解凍原理を説明する図である。
【図３】本発明の実施例のＡＭＲ３２ビットコードの圧縮処理の実現例を示すフローチャートである。
【図４】本発明の実施例のＡＭＲ３２ビットコードの解凍処理の実現例を示すフローチャートである。
【図５】バッファを用いるに適した圧縮／解凍処理の概念を説明する図である。
【図６】バッファを用いた本発明の実施例の圧縮処理のフローチャートである。
【図７】バッファを用いた本発明の実施例の解凍処理のフローチャートである。
【図８】８ビット幅読み出しに適した圧縮例／解凍例を示す図である。
【図９】８ビット幅読み出しに適した圧縮処理を示すフローチャートである。
【図１０】８ビット幅読み出しに適した解凍処理を示すフローチャートである。
【図１１】１６ビット幅読み出しに適した圧縮例を示す図である。
【図１２】１６ビット幅読み出しに適した解凍例を示す図である。
【図１３】１６ビット幅読み出しに適した圧縮処理を示すフローチャートである。
【図１４】１６ビット幅読み出しに適した解凍処理を示すフローチャートである。
【図１５】３２ビット幅読み出しに適した圧縮例を示す図である。
【図１６】３２ビット幅読み出しに適した解凍例を示す図である。
【図１７】３２ビット幅読み出しに適した圧縮処理を示すフローチャートである。
【図１８】３２ビット幅読み出しに適した解凍処理を示すフローチャートである。
【図１９】プログラムコード圧縮の概念図である。
【図２０】可変長符号化圧縮の圧縮処理を示す図である。
【図２１】可変長符号化圧縮の解凍処理を示す図である。
【図２２】複合命令化による圧縮処理を示す図である。
【図２３】複合命令化による圧縮の解凍処理を示す図である。
【図２４】ＡＭＲ３２ビット命令フォーマットを示す図である。
【図２５】ＡＲＭ条件コードの一覧を示す図である。
【符号の説明】
１    実行用命令データ
２    圧縮条件判断部
３    条件コード圧縮部
４    圧縮済命令データ
１１  圧縮された命令コード
１２  圧縮条件判断部
１３  条件コード展開部
１４  実行用命令データ
【図１】
2004259234.tif 000003
【図２】
2004259234.tif 000004
【図３】
2004259234.tif 000005
【図４】
2004259234.tif 000006
【図５】
2004259234.tif 000007
【図６】
2004259234.tif 000008
【図７】
2004259234.tif 000009
【図８】
2004259234.tif 000010
【図９】
2004259234.tif 000011
【図１０】
2004259234.tif 000012
【図１１】
2004259234.tif 000013
【図１２】
2004259234.tif 000014
【図１３】
2004259234.tif 000015
【図１４】
2004259234.tif 000016
【図１５】
2004259234.tif 000017
【図１６】
2004259234.tif 000018
【図１７】
2004259234.tif 000019
【図１８】
2004259234.tif 000020
【図１９】
2004259234.tif 000021
【図２０】
2004259234.tif 000022
【図２１】
2004259234.tif 000023
【図２２】
2004259234.tif 000024
【図２３】
2004259234.tif 000025
【図２４】
2004259234.tif 000026
【図２５】
2004259234.tif 000027