(57)【特許請求の範囲】
【請求項１】
データ記憶部を備えるコンピュータに，
オペコードとオペランドからなる命令コードを複数含む被圧縮データの入力を受け，該被圧縮データのデータ列からビット値が一致する繰り返し部分を検出し，前記検出した繰り返し部分の一方の相対位置と一致長を求める処理ステップと，
前記繰り返し部分の他方を，前記相対位置と前記一致長とを用いて符号化する処理ステップと，
前記被圧縮データから前記符号化された繰り返し部分以外の部分に含まれる命令コードの区切り位置を分析する処理ステップと，
前記データ記憶部に記憶された，前記オペコードおよびオペランドの構成パターンを前記命令コードと対応づけて示す命令パターン情報をもとに，前記区切り位置に従って区切られた命令コードを，ビット単位でオペコードとオペランドとに分離する処理ステップと，
前記分離したオペコードとオペランドを，それぞれ符号化する処理ステップとを実行させる
ことを特徴とするデータ圧縮プログラム。
【請求項２】
前記オペコードとオペランドをそれぞれ符号化する処理ステップにおいて，
前記コンピュータに，
前記命令パターン情報をもとに，前記命令コードのオペコードおよびオペランドのビット配置に一致する構成パターンを示すパターン番号を割り当てる処理ステップと，
前記パターン番号と前記区切り位置とを符号化する処理ステップと，
前記命令コードのオペコードを符号化する処理ステップと，
前記命令コードのオペランドを個々の要素ごとに符号化する処理ステップとを実行させる
ことを特徴とする請求項１に記載のデータ圧縮プログラム。
【請求項３】
データ記憶部を備えたコンピュータに，データ列のビット値が一致する繰り返し部分と前記繰り返し部分以外の部分とを別の処理手順で圧縮された圧縮データ列を復元する方法を実行させるプログラムであって，
前記コンピュータに，
前記圧縮データ列から，繰り返し部分の圧縮の有無を示す情報を復元する処理ステップと，
前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の他方の圧縮の有を示す場合に，前記繰り返し部分の一方の相対位置と一致長とを復元する処理ステップと，
前記相対位置が指定する位置から前記一致長が指定する長さの文字列を複写する処理ステップと，
前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の圧縮の無を示す場合に，前記圧縮データ列の前記繰り返し部分以外の部分に含まれる命令コードのオペコードとオペランドとを各々復元する処理ステップと，
前記データ記憶部に記憶された，前記オペコードおよびオペランドの構成パターンを前記命令コードと対応づけて示す命令パターン情報をもとに，前記復元されたオペコードとオペランドとをビットごとに命令セットに従って配置する処理ステップとを実行させる
ことを特徴とするデータ復元プログラム。
【請求項４】
前記オペコードとオペランドとを復元する処理ステップにおいて，
前記コンピュータに，
前記命令パターン情報をもとに，前記圧縮データ列から，前記繰り返し部分以外の部分に含まれる命令コードの区切り位置と，該命令コードのオペコードおよびオペランドのビット配置に一致する構成パターンを示すパターン番号とを復元する処理ステップと，
前記オペコードを復元する処理ステップと，
前記オペランドの個々の要素を復元する処理ステップとを実行させる
ことを特徴とする請求項３に記載のデータ復元プログラム。
【請求項５】
データ記憶部を備えるコンピュータが実行するデータ圧縮方法であって，
オペコードとオペランドからなる命令コードを複数含む被圧縮データの入力を受け，該被圧縮データのデータ列からビット値が一致する繰り返し部分を検出し，前記検出した繰り返し部分の一方の相対位置と一致長とを求める処理ステップと，
前記繰り返し部分の他方を，前記相対位置と前記一致長とを用いて符号化する処理ステップと，
前記被圧縮データから前記符号化された繰り返し部分以外の部分に含まれる命令コードの区切り位置を分析する処理ステップと，
前記データ記憶部に記憶された，前記オペコードおよびオペランドの構成パターンを前記命令コードと対応付けて示す命令パターン情報をもとに，前記区切り位置に従って区切られた命令コードを，ビット単位でオペコードとオペランドとに分離する処理ステップと，
前記分離したオペコードとオペランドを，それぞれ符号化する処理ステップとを備える
ことを特徴とするデータ圧縮方法。
【請求項６】
データ記憶部を備えるコンピュータが実行する，データ列のビット値が一致する繰り返し部分と前記繰り返し部分以外の部分とを別の処理手順で圧縮された圧縮データ列を復元するデータ復元方法であって，
前記圧縮データ列から，繰り返し部分の圧縮の有無を示す情報を復元する処理ステップと，
前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の他方の圧縮の有を示す場合に，前記繰り返し部分の一方の相対位置と一致長とを復元する処理ステップと，
前記相対位置が指定する位置から前記一致長が指定する長さの文字列を複写する処理ステップと，
前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の圧縮の無を示す場合に，前記圧縮データ列の前記繰り返し部分以外の部分に含まれる命令コードのオペコードとオペランドとを各々復元する処理ステップと，
前記データ記憶部に記憶された，前記オペコードおよびオペランドの構成パターンを前記命令コードと対応付けて示す命令パターン情報をもとに，前記復元されたオペコードとオペランドとをビットごとに命令セットに従って配置する処理ステップとを備える
ことを特徴とするデータ復元方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，被圧縮データから圧縮データを生成するデータ圧縮処理，および圧縮データから元の被圧縮データを復元するデータ復元処理の技術に関する。
【背景技術】
【０００２】
パーソナルコンピュータ，プログラム組込み機器等におけるアプリケーションのリッチ化に伴いデータ量の増加が問題となっている。電子的にデータを格納または通信するシステムにおいて，データの格納および通信の効率化が要求されている。
【０００３】
従来では，可逆データ圧縮技術を用いて，データのロスなしに符号化することにより，データ量を削減している。
【０００４】
従来手法の一例として，ハフマン符号，算術符号などのエントロピー符号化処理がある。エントロピー符号化処理では，データバッファから同じビットシンボル列の繰り返しを検索して，検出した繰り返しの部分を，その位置と一致長（一致しているビットシンボル列の長さ）を用いて符号化していた。繰り返し部分の検索は，コンピュータでの演算処理に向いた８ビット単位で行い，繰り返し部分が検出できなかった場合は，データバッファの８ビットシンボル（文字）をそのまま，またはその出現頻度に応じたエントロピー符号により符号化する。
【０００５】
図１４は，従来手法の処理例を示す図である。
【０００６】
被圧縮データであるデータバッファ“ｃｏｍｐｒｅｓｓｉｏｎ＿ｄｅｃｏｍｐｒｅｓｓｉｏｎ”において，部分“ｄｅｃｏｍｐｒｅｓｓｉｏｎ”が，先頭の“ｃｏｍｐｒｅｓｓ”を含んでいる。この繰り返し部分（ｃｏｍｐｒｅｓｓｉｏｎ）を，データバッファでのその位置とシンボル長を用いて，（０，８）という情報に変換することにより，全体としての情報量を圧縮している。
【０００７】
ところで，命令コードを含むアプリケーションプログラムは，被圧縮データとなる。
【０００８】
アプリケーションプログラムを圧縮する従来手法の具体例として，以下の２つの従来方法が知られている。
【０００９】
第１の従来手法は，圧縮対象のデータ（被圧縮データ）の構文解析を行って，命令の各構成要素のどの要素に相当するのかを示す情報（トークン・タイプ）を求め，被圧縮データから繰り返し部分を検索する際に，バイナリ値とトークン・タイプとが一致する部分を繰り返し部分と見なして符号化している。
【００１０】
また，第２の従来手法では，命令コードをオペコード部分とオペランド部分に分割し，予め用意した辞書を用いて，オペコードとオペランドと個別の辞書で別々に符号化している。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平８−６９３７０号公報
【特許文献２】特開２００３−５０６９６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
例えば，圧縮対象のデータ（被圧縮データ）がアプリケーションプログラムである場合において，被圧縮データに含まれる命令コードのバイナリ値をみていくと，図１５に示すように，１命令の長さが１６ビットのものと３２ビットのものが混在していることがある。さらに，同一のビット長の命令コード（例えば，３２ビットコード）であっても，命令によって，オペコードの長さ，オペランドの位置や内容（例えば，レジスタ数，即値の長さ等）が異なっている。
【００１３】
しかし，従来方法であるエントロピー符号化では，計算機処理しやすいように，オペコードもオペランドも区別することなく，ビット値にもとづいて一律に処理していたため，データ圧縮処理に命令セットの規則性を利用することができなかった。
【００１４】
例えば，８ビットのバイナリ値が同じ値であっても，それがオペコードの一部であったりオペランドの一部であったりすることがあるにもかかわらず一律に扱われていたため，被圧縮データ内で頻出するオペコードを効率よく圧縮することができなかった。
【００１５】
しかし，上記第１の従来手法では，構文解析処理の煩雑さや負荷に比べて，圧縮率を向上させる効果が薄いという問題があった。
【００１６】
また，上記第２の従来手法では，オペコードとオペランドを別々に圧縮するため，オペコードとオペランド間の相関情報を利用することができず，エントロピー符号化に比べて圧縮率低下に繋がるという問題があった。
【００１７】
本願発明の目的は，命令コードを含む被圧縮データのデータ圧縮処理において，処理負荷の増加を抑制しつつ，圧縮率を上げることができるデータ圧縮処理技術および，前記の処理技術による圧縮データを復元するデータ復元処理技術を提供することである。
【課題を解決するための手段】
【００１８】
本願において開示されるデータ圧縮プログラムは，データ記憶部を備えるコンピュータに，１）オペコードとオペランドからなる命令コードを複数含む被圧縮データの入力を受け，該被圧縮データのデータ列からビット値が一致する繰り返し部分を検出し，前記検出した繰り返し部分の一方の相対位置と一致長を求める処理ステップと，２）前記繰り返し部分の他方を，前記相対位置と前記一致長とを用いて符号化する処理ステップと，３）前記被圧縮データから前記符号化された繰り返し部分以外の部分に含まれる命令コードの区切り位置を分析する処理ステップと，４）前記データ記憶部に記憶された，前記オペコードおよびオペランドの構成パターンを前記命令コードと対応づけて示す命令パターン情報をもとに，前記区切り位置に従って区切られた命令コードを，ビット単位でオペコードとオペランドとに分離する処理ステップと，５）前記分離したオペコードとオペランドを，それぞれ符号化する処理ステップとを実行させるものである。
【００１９】
また，本願において開示されるデータ復元プログラムは，データ記憶部を備えたコンピュータに，データ列のビット値が一致する繰り返し部分と前記繰り返し部分以外の部分とを別の処理手順で圧縮された圧縮データ列を，復元する方法を実行させるプログラムであって，前記コンピュータに，１）前記圧縮データ列から，繰り返し部分の圧縮の有無を示す情報を復元する処理ステップと，２）前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の他方の圧縮の有を示す場合に，前記繰り返し部分の一方の相対位置と一致長とを復元する処理ステップと，３）前記相対位置が指定する位置から前記一致長が指定する長さの文字列を複写する処理ステップと，４）前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の圧縮の無を示す場合に，前記圧縮データ列の前記繰り返し部分以外の部分に含まれる命令コードのオペコードとオペランドとを各々復元する処理ステップと，５）前記データ記憶部に記憶された，前記オペコードおよびオペランドの構成パターンを前記命令コードと対応づけて示す命令パターン情報をもとに，前記復元されたオペコードとオペランドとをビットごとに命令セットに従って配置する処理ステップとを実行させるものである。
【００２０】
さらに，本願において開示されるデータ圧縮方法は，コンピュータが実行する，上記データ圧縮プログラムにより実現される処理ステップを有する。
【００２１】
さらに，本願において開示されるデータ復元方法は，コンピュータが実行する，上記データ復元プログラムにより実現される処理ステップを有する。
【発明の効果】
【００２２】
上記したデータ圧縮プログラムによれば，コンピュータに，入力された被圧縮データのデータ列からビット値が一致する繰り返し部分を，エントロピー符号化などの既知の符号化で圧縮し，かつ，被圧縮データの繰り返し部分以外の残り部分については，命令コードのオペコードとオペランドに分けてそれぞれ符号化する方法を実行させることができる。
【００２３】
これにより，命令セットの規則性を利用して，被圧縮データに含まれる繰り返し部分以外の残り部分について，さらにオペコードとオペランドに分けて符号化することができ，従来手法に比べて圧縮率を上げることができる。
【００２４】
また，上記したデータ圧縮プログラムによれば，コンピュータに，被圧縮データ内の長い繰返し部分は一律に符号化し，繰り返し部分以外の部分の比較的短い単位での符号化においてのみオペコードとオペランドとを区別して符号化する方法を実行させることにより，符号化の処理速度を維持しつつ圧縮率を上げることができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の一実施形態として，開示されるデータ圧縮プログラムおよび方法を実施するデータ圧縮装置の構成例を示す図である。
【図２】オペコード・オペランド符号化部およびオペコード・オペランド符号保持部の内部の構成例を示す図である。
【図３】命令パターン情報保持部が保持する命令パターン番号情報の例を示す図である。
【図４】データ圧縮装置の処理フロー例を示す図である。
【図５】命令コードでのビット値の設定例を示す図である。
【図６】区切り位置による命令コードの判別例を示す図である。
【図７】図４に示す処理フローのステップＳ１８の処理のより詳細な処理フロー例を示す図である。
【図８】データ圧縮装置１によるデータ圧縮処理の例を示す図である。
【図９】本発明の一実施形態として，開示されるデータ復元プログラムおよび方法を実施するデータ復元装置の構成例を示す図である。
【図１０】オペコード・オペランド復元部とオペコード・オペランド符号保持部の内部の構成例を示す図である。
【図１１】データ復元装置の処理フロー例を示す図である。
【図１２】図１１に示す処理フローのステップＳ２５の処理のより詳細な処理フロー例を示す図である。
【図１３】命令パターン情報生成装置の処理フロー例を示す図である。
【図１４】従来手法の処理例を示す図である。
【図１５】命令セット中の命令コードの長さの混在例を示す図である。
【図１６】データ圧縮装置１，命令パターン情報生成装置２，およびデータ復元装置３を実施する代表的なハードウェア構成例を示す図である。
【発明を実施するための形態】
【００２６】
以下に，開示されるデータ圧縮プログラムおよび方法，ならびにデータ復元プログラムおよび方法を実施するための一実施形態を説明する。
【００２７】
図１は，本発明の一実施形態として，開示されるデータ圧縮プログラムおよび方法を実施するデータ圧縮装置のブロック構成例を示す図である。
【００２８】
データ圧縮装置１は，入力される被圧縮データを符号化して圧縮データを生成，出力する装置である。
【００２９】
データ圧縮装置１は，入力データ保持部１０，一致検索部１１，一致符号化部１２，一致長・一致位置符号保持部１３，区切り位置分析部１４，分離部１５，符号化部１６，符号保持部１７，圧縮データ保持部１８，および命令パターン情報保持部１９を備える。
【００３０】
入力データ保持部１０は，データ圧縮装置１に入力される被圧縮データを保持する保持部である。
【００３１】
一致検索部１１は，入力データ保持部１０が保持する被圧縮データのデータ列を先頭から取り込んで，ビット値が一致する繰り返し部分を検出し，繰り返し部分の被圧縮データにおける相対位置を示す一致位置と，繰り返し部分の長さを示す一致長とを求める処理部である。一致検索部１１は，被圧縮データから所定の長さの繰り返し部分を検出して一致位置と一致長とを求めた場合に「一致あり」を，繰り返し部分が検出されなかった場合に「一致なし」を出力する。
【００３２】
一致符号化部１２は，「一致あり」を受けて，一致長・一致位置符号保持部１３を参照して，一致長，一致位置を符号化する。符号化された一致長・一致位置は，圧縮データ保持部１８に出力される。
【００３３】
一致長・一致位置符号保持部１３は，一致位置および一致長と各符号との対応情報（符号表）を保持する保持部である。
【００３４】
区切り位置分析部１４は，「一致なし」を受けて，被圧縮データの繰り返し部分以外の残り部分について，命令コードの区切り位置を分析する処理部である。なお，区切り位置分析処理の詳細は後述する。
【００３５】
分離部１５は，命令パターン情報保持部１９を参照して，命令コードの区切り位置にしたがって特定された命令コードを，オペコードとオペランドとに分離する処理部である。
【００３６】
符号化部１６は，符号保持部１７を参照して，被圧縮データの繰り返し部分以外の残り部分のデータ列から分離されたオペコードとオペランドとを別々に符号化する処理部である。符号化されたオペコード・オペランド等は圧縮データ保持部１８に出力される。
【００３７】
符号保持部１７は，被圧縮データに含まれる命令セットのオペコードおよびオペランドと各符号との対応情報（符号表）を保持する保持部である。
【００３８】
圧縮データ保持部１８は，一致符号化部１２の出力と，符号化部１６との出力を合わせた圧縮データを保持する保持部である。
【００３９】
命令パターン情報保持部１９は，被圧縮データに含まれる命令セットの各命令コードのオペコードとオペランドのビット単位の構成パターンを示す情報（命令パターン番号）を保持する保持部である。
【００４０】
図２は，符号化部１６および符号保持部１７の内部の構成例を示す図である。
【００４１】
符号化部１６は，パターン番号分析部１６１，パターン番号・区切り位置符号化部１６２，オペコード符号化部１６３，オペランド符号化部１６４を有する。
【００４２】
符号保持部１７は，パターン番号，区切り位置と各符号との対応情報（符号表）を保持するパターン番号・区切り位置符号保持部１７１，各オペコードと符号との対応を示す情報（符号表）を保持するオペコード符号保持部１７２，オペランド符号保持部１７３を有する。
【００４３】
また，オペランド符号保持部１７３は，各オペランド（各レジスタ）と符号との対応情報をそれぞれ保持するレジスタ１符号保持部１７３１，レジスタ２符号保持部１７３２等，各イミディエート値と符号との対応情報をそれぞれ保持する８ｂｉｔイミディエート値符号保持部１７３３，１１ｂｉｔイミディエート値符号保持部１７３４等，およびレジスタリストと符号との対応情報を保持するレジスタリスト符号保持部１７３５を有する。
【００４４】
パターン番号分析部１６１は，命令パターン情報保持部１９を参照して，命令コードのパターン番号を分析する。
【００４５】
パターン番号・区切り位置符号化部１６２は，パターン番号・区切り位置符号保持部１７１を参照して，パターン番号と，命令コードの区切り位置とを符号化する。
【００４６】
オペコード符号化部１６３は，オペコード符号保持部１７２を参照して，分離されたオペコードを符号化する。
【００４７】
オペランド符号化部１６４は，オペランド符号保持部１７３を参照して，分離されたオペランドを符号化する。
【００４８】
命令パターン情報保持部１９は，データ圧縮装置１に入力される被圧縮データに表れる命令セットに含まれる命令コードのオペコードおよびオペランドの構成パターンを示す情報（命令パターン番号）を保持する保持部である。
【００４９】
図３は，命令パターン情報保持部１９が保持する命令パターン情報（命令パターン番号）の例を示す図である。
【００５０】
命令パターン情報（命令パターン番号）には，一意の「パターン番号」，命令コードを示す「命令」，各命令コードのオペコードとオペランドの構成を示す「命令コード構成」が設定されている。
【００５１】
命令セットに含まれる命令コードのうち，オペコードとオペランドとのビット配列上の構成が同一のものには，同一のパターン番号が付与される。オペランドについては，オペコード以外のオペランドを全て同一のものとして扱ってもよく，または，イミディエート値，アドレス（レジスタ）の種類等を区分して扱ってもよい。
【００５２】
図３に示す命令パターン番号の命令セットでは，１６ビットの命令コードと３２ビットの命令コードが混在している。例えば，パターン番号“１，２，３”は，１６ビットの命令コード，パターン番号“１８，２０”は，３２ビットの命令コードであることを表す。
【００５３】
また，パターン番号“１”の命令＝Ｂ（分岐）の場合に，命令コード構成のうち，第１５〜第１１番のビット列“１１１００”は，命令“Ｂ”のオペコードを示すシンボル列，第１０番目〜０番目ビットの“ｉｍｍ１１”はオペランドの１１ｂｉｔイミディエート値を表している。
【００５４】
以下に，データ圧縮装置１の処理の流れを説明する。
【００５５】
図４は，データ圧縮装置１の処理フロー例を示す図である。
【００５６】
データ圧縮装置１の入力データ保持部１０は，被圧縮データの１６ビット単位のデータ列（ストリーム）を入力する（ステップＳ１０）。
【００５７】
一致検索部１１は，入力されたデータ列にビット値が一致する所定の長さのシンボル列があるかを検出し（一致検索），一致を検出したシンボル列（繰り返し部分）の相対位置を示す一致位置と，その長さを示す一致長を出力する（ステップＳ１１）。さらに，一致検索部１１の判定で，データ列にＮ個のシンボル列以上で一致する箇所（繰り返し部分）があれば（ステップＳ１２のＹ），ステップＳ１３の処理へ進み，一致する箇所（繰り返し部分）がなければ（ステップＳ１２のＮ），ステップＳ１６の処理へ進む。
【００５８】
一致検索部１１は，一致ありを示すフラグを符号化する（ステップＳ１３）。
【００５９】
次に，一致符号化部１２は，一致ありを受けて，一致長・一致位置符号保持部１３を参照して，検出された繰り返し部分の一致長を符号化する（ステップＳ１４）。さらに，一致符号化部１２は，繰り返し部分の一致位置を符号化する（ステップＳ１５）。
【００６０】
また，一致検索部１１は，データ列にＮ個のシンボル列以上で繰り返し部分がなければ（ステップＳ１２のＮ），一致なしを示すフラグを符号化する（ステップＳ１６）。
【００６１】
区切り位置分析部１４は，被圧縮データの繰り返し部分以外の残りの部分について，命令コードの区切りを判別する（ステップＳ１７）。
【００６２】
分離部１５は，命令パターン情報保持部１９を参照して，残り部分の命令コードが該当するパターン番号の命令コード構成をもとに，命令コードをオペコードとオペランドとに分離する。さらに，符号化部１６は，符号保持部１７を参照して，分離されたオペコードとオペランドとをそれぞれ別に符号化する（ステップＳ１８）。
【００６３】
データ圧縮装置１では，入力された被圧縮データがすべて圧縮処理されるまで（ステップＳ１９のＮ），ステップＳ１１〜Ｓ１８の処理が繰り返され，被圧縮データがすべて圧縮処理された場合に（ステップＳ１９のＮ），処理が終了して，圧縮データが出力される。
【００６４】
なお，ここで，命令によってオペコードとオペランドのビット配置およびオペランド数が異なるため，符号化部１６は，まずパターン番号を符号化し，その後に，オペコードと各オペランドをそれぞれの統計量に応じて符号化を行うことが好ましい。
【００６５】
次に，図５および図６を用いて，ステップＳ１７の命令コードの区切り位置の判別処理を，より詳細に説明する。
【００６６】
本例では，処理されるデータ列（１６個のシンボル列）が，１６ビット命令コードであるのか，３２ビット命令コードの前半部分または後半部分であるのかを判別するために，命令コードの区切りを検出する。
【００６７】
図５は，命令コードでのビット値の設定例を示す図である。
【００６８】
図５（Ａ）に示すように，被圧縮データが含む命令セットにおいて，１６ビット命令コードの先頭５個のシンボル列のビット値が“０００００”〜“１１１００”の範囲であり，図５（Ｂ）に示すように，３２ビット命令コードの先頭５個のシンボル列のビット値が“１１１０１”〜“１１１１１”の範囲であるとする。
【００６９】
図６は，区切り位置による命令コードの判別例を示す図である。
【００７０】
図６に示すように，先行する（処理済みの）１６個のシンボル列をシンボル列Ｘとし，現時点で処理されるシンボル列の位置（現位置）を先頭とみなす１６個のシンボル列をシンボル列Ｙとする。
【００７１】
ここで，シンボル列Ｘの先頭５シンボル列のビット値が“０００００”〜“１１１００”であれば，そのシンボル列Ｘは，図５（Ａ）に示す１６ビット命令コードを示すシンボル列Ａ，または，図５（Ｂ）に示す３２ビット命令コードの後半部分を示すシンボル列Ｃのいずれかであることがわかる。そして，現位置から始まるシンボル列Ｙは，１６ビットまたは３２ビットのいずれかの命令コードであっても，命令コードの先頭を含む部分であると判別できる。
【００７２】
また，シンボル列Ｘの先頭５シンボル列のビット値が“１１１０１”〜“１１１１１”であれば，そのシンボル列Ｘは，図５（Ｂ）に示す３２ビット命令コードの前半部分であることがわかる。そして，現位置から始まるシンボル列Ｙは，３２ビット命令コードの後半であると判別できる。
【００７３】
区切り位置分析部１４は，現位置から処理済みのシンボル列を遡って，命令コードの区切りが判別できる，ビット値“０００００”〜“１１１００”または“１１１０１”〜“１１１１１”のシンボル列を検出する。区切り位置分析部１４は，ビット値“０００００”〜“１１１００”または“１１１０１”〜“１１１１１”のシンボル列が検出できなければ，現位置から，さらに１６ビット個のシンボル列を遡る。
【００７４】
次に，区切り位置分析部１４は，検出したシンボル列の先頭から１６個分のシンボル列ずつ取り出して，取り出したシンボル列が，図５に示すシンボル列Ａ〜Ｃのいずれに該当するかを判別して，処理されるシンボル列Ｙが，図６（Ａ）または図６（Ｂ）のいずれの場合に該当するかを判定する。
【００７５】
区切り位置分析部１４は，先頭５個のビット値が“０００００”〜“１１１００”であれば，取り出したシンボル列Ｘが，シンボル列Ａまたはシンボル列Ｃのいずれかとなるので，現位置を，命令コードの先頭と判定する。したがって，この判定の場合に，以降のパターン番号分析処理およびオペコード・オペランド分離処理では，シンボル列Ｙは，現位置が先頭となる命令コードについて処理が行われる。
【００７６】
区切り位置分析部１４は，先頭５個のビット値が“１１１０１”〜“１１１１１”であれば，取り出したシンボル列Ｘが，シンボル列Ｂまたはシンボル列Ｃのいずれかとなるので，さらに，１６ビット分のシンボル列Ｘ１を遡って取り出す。
【００７７】
区切り位置分析部１４は，シンボル列Ｘ１の先頭５個のビット値が“１１１０１”〜“１１１１１”であれば，シンボル列Ｘ１が，シンボル列Ｂで，シンボル列Ｘがシンボル列Ｃとわかるので，現位置を，命令コードの先頭と判定する。シンボル列Ｘ１の先頭５個のビット値が“１１１０１”〜“１１１１１”でなければ，区切り位置分析部１４は，さらに，１６個のシンボル列を遡ってシンボル列Ｘ２を取り出し，取り出したシンボル列Ｘ２，Ｘ１，Ｘの順に命令コードの区切りを，同様にして分析する。
【００７８】
上記の処理の結果，区切り位置分析部１４が，現位置を，３２ビット命令コードの後半部分の先頭と判定した場合に，パターン番号分析処理では，例えば，シンボル列Ｙと遡ったシンボル列Ｘとのペアが３２ビット命令コードとして扱われる。
【００７９】
次に，図７を用いて，ステップＳ１８の，オペコードとオペランドの符号化をより詳細に説明する。
【００８０】
図７は，ステップＳ１８の処理のより詳細な処理フロー例を示す図である。
【００８１】
符号化部１６のパターン番号分析部１６１は，命令パターン情報保持部１９を参照して，命令コードのオペコードのシンボル列から，該当する命令コードの命令パターン番号を決定する（ステップＳ１８０）。
【００８２】
パターン番号・区切り位置符号化部１６２は，パターン番号・区切り位置符号保持部１７１を参照して，一致符号化部１２による処理により命令コードの先頭であるか端数となった位置であるかを示す情報である端数位置（命令コードの先頭／後半）と，区切り位置とを符号化し（ステップＳ１８１），決定したパターン番号を符号化する（ステップＳ１８２）。
【００８３】
次に，オペコード符号化部１６３は，オペコード符号保持部１７２を参照して，分離された残りのオペコードを符号化する（ステップＳ１８３）。オペランド符号化部１６４は，オペランド符号保持部１７３を参照して，分離された残りのオペランドをそれぞれ符号化する（ステップＳ１８４）。
【００８４】
図８は，データ圧縮装置１によるデータ圧縮処理の例を示す図である。
【００８５】
図８の矩形は，データ圧縮装置１に入力される被圧縮データのデータ列の例である。
【００８６】
被圧縮データの下部は，被圧縮データのデータ列を１６ビットのバイナリ表現であり，上部は，そのニーモニック表現である。
【００８７】
被圧縮データは，左側から右側へ向かって，すなわち，被圧縮データの下側に示す１番目から順に符号化されるものとする。また，データ列の１３番目が，符号化処理の現位置であるとする。
【００８８】
図８の被圧縮データのデータ列において，１３番目から２１番目までのシンボル列は，既処理の１番目から９番目までのシンボル列と同じである。
【００８９】
入力データ保持部１０に，被圧縮データの１３番目以降のデータ列が入力されているとする。一致検索部１１は，この繰り返し部分（１３番目〜２１番目）が，１番目〜９番目のシンボル列と一致することを検出する。そして，一致符号化部１２は，１３番目〜２１番目のシンボル列に相当する情報として，（一致位置，一致長）＝（１，９）を符号化する。
【００９０】
続いて，符号化処理の現位置が２２番目のシンボル列に移動すると，一致検索部１１が，既処理のデータ列から一致を検出しないため，「一致なし」が符号化される。
【００９１】
区切り位置分析部１４は，１つ前の２１番目のシンボル列と２つ前の２０番目のシンボル列のそれぞれの先頭のビット値から命令コードの区切り位置を見つけて，２１番目のシンボル列が，３２ビットの命令コードの前半部分であり，２２番目のシンボル列がその後半部分と判定して，命令コードの端数位置（後半）を決定する。
【００９２】
さらに，区切り位置分析部１４は，図３に示す命令パターン番号情報を参照して，２１番目と２２番目のシンボル列とでなる３２ビットの命令コード（ＬＤＲ）のパターン番号（１８）を決定する。
【００９３】
次に，分離部１５は，２２番目のシンボル列を，オペコードとオペランドに分離する。ここで，命令コードの後半部分である２２番目のシンボル列に，オペコードはなく，２つのオペランド（Ｒｔ＝Ｄ，ｉｍｍ１２＝０８４）が設定されているので，分離部１５は，分離処理を行って，符号化されていないオペコード（残りオペコード）として“なし”，残りオペランドとして“Ｒｔ＝Ｄ”，“ｉｍｍ１２＝０８４”を出力する。
【００９４】
符号化部１６は，上記の情報［端数位置；パターン番号；残りオペコード；残りオペランド］＝［後半；１８；なし；（Ｒｔ＝Ｄ，ｉｍｍ１２＝０８４）］を，それぞれ符号化する。
【００９５】
続いて，符号化処理の現位置が２３番目のシンボル列に移動すると，一致検索部１１は，２３番目〜２５番目）が，１１番目〜１３番目のシンボル列と一致することを検出する。一致符号化部１２は，２３番目〜２５番目のシンボル列に相当する情報として，（一致位置，一致長）＝（１１，３）を符号化する。
【００９６】
さらに，符号化処理の現位置が２６番目のシンボル列に移動すると，一致検索部１１は，既処理のデータ列から一致を検出しないため，「一致なし」が符号化される。
【００９７】
区切り位置分析部１４は，１つ前の２５番目のシンボル列の先頭のビット値から命令コードの区切り位置を見つけて，２６番目のシンボル列が，３２ビットの命令コードの前半部分であると判定して，命令コードの端数位置（先頭）を決定する。
【００９８】
さらに，区切り位置分析部１４は，３２ビットの命令コードの後半部分となる後続の２７番目のシンボル列を得て，図３に示す命令パターン番号情報を参照して，２６番目と２７番目のシンボル列とでなる３２ビットの命令コード（ＡＤＤ）のパターン番号（２０）を決定する。
【００９９】
次に，分離部１５は，２６番目と２７番目のシンボル列を，オペコードとオペランドに分離する。分離部１５は，残りオペコードとして“Ｆ５０”，残りオペランドとして“Ｒｎ＝３”，“ｉｍｍ３＝１”，“Ｒｄ＝３”，“ｉｍｍ８＝８０”を出力する。
【０１００】
符号化部１６は，これらの情報［端数位置；パターン番号；残りオペコード；残りオペランド］＝［先頭；２０；Ｆ５０；（Ｒｎ＝３，ｉｍｍ３＝１，Ｒｄ＝３，ｉｍｍ８＝８０）］を，それぞれ符号化する。
【０１０１】
以上のようにして，被圧縮データのデータ列がデータ圧縮装置１に入力され，繰り返し部分については一致符号化処理が，繰り返し部分以外の残り部分については，データ列を命令コードに区切ってオペランドとオペコードのそれぞれについて符号化処理が行われて，圧縮データが出力される。
【０１０２】
これにより，従来の繰り返し部分に対する符号化処理に比べての圧縮率を向上させることができる。
【０１０３】
また，データ圧縮装置１は，従来のように，命令コードのオペコードとオペランドの辞書を備えることなく，命令コードをオペコードとオペランドとに分離して符号化することができ，圧縮率を向上させることができる。
【０１０４】
以下に，データ圧縮装置１が出力した圧縮データのデータ復元処理を説明する。
【０１０５】
図９は，本発明の一実施形態として，開示されるデータ復元プログラムおよび方法を実施するデータ復元装置の構成例を示す図である。
【０１０６】
データ復元装置３は，データ圧縮装置１が出力する圧縮データを復元処理して復元データすなわち元の被圧縮データを生成，出力する装置である。
【０１０７】
データ復元装置３は，圧縮データ保持部３０，一致あり・なし復元部３１，一致復元部３２，一致長・一致位置符号保持部３３，コピー部３４，復元部３５，符号保持部３６，配置部３７，復元データ保持部３８，および命令パターン情報保持部３９を備える。
【０１０８】
圧縮データ保持部３０は，データ復元装置３に入力された圧縮データを保持する保持部である。
【０１０９】
一致あり・なし復元部３１は，圧縮データ内の「一致あり」または「一致なし」の符号を復元する処理部である。
【０１１０】
一致復元部３２は，一致あり・なし復元部３１が「一致あり」の符号を復元した場合に，一致長・一致位置符号保持部３３を参照して，符号化された一致長，一致位置を復元する処理部である。
【０１１１】
一致長・一致位置符号保持部３３は，一致長，一致位置と各符号との対応情報（符号表）を保持する保持部である。
【０１１２】
コピー部３４は，復元データ保持部３８が保持するデータ列の一致長および一致位置によって指定された部分（シンボル列）をコピーする処理部である。
【０１１３】
復元部３５は，一致あり・なし復元部３１が「一致なし」の符号を復元した場合に，オペコードとオペランドとをそれぞれ復元する処理部である。
【０１１４】
符号保持部３６は，オペコード，オペランドと各符号との対応情報（符号表）を保持する保持部である。
【０１１５】
配置部３７は，命令パターン情報保持部３９を参照して，復元されたオペコードとオペランドとを，対応する命令コード構成にしたがって，それぞれ配置する処理部である。
【０１１６】
復元データ保持部３８は，一致復元部３２の出力と配置部３７の出力を合わせた復元データを保持する保持部である。
【０１１７】
命令パターン情報保持部３９は，命令セットに含まれる各命令コードのオペコードとオペランドのビット単位の構成パターンを示す情報（命令パターン番号）を保持する保持部である。命令パターン情報保持部３９の命令パターン番号情報は，データ圧縮装置１の命令パターン情報保持部１９で保持される命令パターン番号と同じものである。
【０１１８】
図１０は，復元部３５と符号保持部３６の内部の構成例を示す図である。
【０１１９】
復元部３５は，パターン番号・区切り位置復元部３５１，オペコード復元部３５２，オペランド復元部３５３を有する。
【０１２０】
符号保持部３６は，パターン番号，区切りと各符号との対応情報（符号表）を保持するパターン番号・区切り位置符号保持部３６１，オペコードと各符号との対応情報（符号表）を保持するオペコード符号保持部３６２，オペランドと各符号との対応情報（符号表）を保持するオペランド符号保持部３６３を有する。
【０１２１】
オペランド符号保持部３６３は，各レジスタと符号との対応情報を保持するレジスタ１符号保持部３６３１，レジスタ２符号保持部３６３２等，各イミディエート値と符号との対応情報を保持する８ｂｉｔイミディエート値符号保持部３６３３，１１ｂｉｔイミディエート値符号保持部３６３４等，レジスタリストと符号との対応情報を保持するレジスタリスト符号保持部３６３５を有する。
【０１２２】
パターン番号・区切り位置復元部３５１は，パターン番号・区切り位置符号保持部３６１を参照して，符号化されたパターン番号と，命令コードの区切り位置とを復元する。
【０１２３】
オペコード復元部３５３は，オペコード符号保持部３６２を参照して，符号化されたオペコードを復元する。
【０１２４】
オペランド復元部３５３は，オペランド符号保持部３６３を参照して，符号化されたオペランドを復元する。
【０１２５】
図１１は，データ復元装置の処理フロー例を示す図である。
【０１２６】
データ復元装置３の圧縮データ保持部３０が，入力された圧縮データを保持すると，一致あり・なし復元部３１は，圧縮データのデータ列から，「一致あり」または「一致なし」を示すフラグを検出して復元する（ステップＳ２０）。
【０１２７】
一致あり・なし復元部３１で復元されたフラグが「一致あり」である場合に（ステップＳ２１のＹ），ステップＳ２２の処理へ進み，「一致あり」ではない場合に（ステップＳ２１のＮ），ステップＳ２５の処理へ進む。
【０１２８】
一致復元部３２は，一致長・一致位置符号保持部３３を参照して，符号化された一致長を復元する（ステップＳ２２）。さらに，一致復元部３２は，一致長・一致位置符号保持部３３を参照して，符号化された一致位置を復元する（ステップＳ２３）。
【０１２９】
コピー部３４は，復元データ保持部３８に保持された復元処理された圧縮データのデータ列の一致位置から一致長分のバイト列をコピーして出力する（ステップＳ２４）。
【０１３０】
復元部３５は，命令パターン情報保持部３９および符号保持部３６を参照して，符号化されているオペコードとオペランドとを，それぞれ復元する（ステップＳ２５）。
【０１３１】
配置部３７は，復元したオペコード，オペランドを再配置してデータ列を生成する（ステップＳ２６）。
【０１３２】
データ圧縮装置３では，入力された圧縮データがすべて復元処理されるまで（ステップＳ２７のＮ），ステップＳ２０〜Ｓ２６の処理が繰り返され，圧縮データがすべて復元処理された場合に（ステップＳ２７のＹ），処理が終了して，復元データが出力される。
【０１３３】
図１２は，ステップＳ２５の復元処理のより詳細な処理フロー例を示す図である。
【０１３４】
復元部３５は，パターン番号・区切り位置符号保持部３６１を参照して，符号化されている命令コードの端数位置を示す符号を復元し（ステップＳ２５０），さらにパターン番号を復元する（ステップＳ２５１）。
【０１３５】
さらに，復元部３５は，命令パターン情報保持部３９を参照して，該当するパターン番号の命令コード構成を得て，オペコード符号保持部３６２を参照してオペコードを復元し（ステップＳ２５２），オペランド符号保持部３６３を参照してオペコードと同様に，各オペランドを復元する（ステップＳ２５３）。
【０１３６】
次に，命令パターン情報生成装置２の処理を説明する。命令パターン情報生成装置２は，データ圧縮処理およびデータ復元処理の開始前に命令パターン番号を生成する。
【０１３７】
命令パターン番号は，処理対象となるデータの命令セットに対応して生成され，データ圧縮時およびデータ復元時に，データ圧縮装置１およびデータ復元装置３の命令パターン情報保持部１９，３９に保持された状態となる。
【０１３８】
命令パターン情報生成装置２は，１つの機能として，データ圧縮装置１およびデータ復元装置３に組み込まれていてもよい。
【０１３９】
図１３は，命令パターン情報生成装置２の処理フロー例を示す図である。
【０１４０】
命令パターン情報生成装置２は，命令コードのセットに含まれる各命令について，オペコード，イミディエート値を示す領域の長さと位置，レジスタを示す領域の長さと位置，レジスタリストを示す領域の長さと位置の情報を取得する（ステップＳ３０）。
【０１４１】
命令パターン情報生成装置２は，イミディエート値に使用している領域の長さと位置で，一致する命令をソートする（ステップＳ３１）。さらに，命令パターン情報生成装置２は，レジスタに使用している領域の長さと位置で，一致する命令をソートする（ステップＳ３２）。さらに，命令パターン情報生成装置２は，レジスタリストに使用している領域の長さと位置で，一致する命令をソートする（ステップＳ３３）。
【０１４２】
次に，命令パターン情報生成装置２は，命令コードの要素構成，すなわち，イミディエート値，レジスタ，およびレジスタリストに使用している領域の長さと位置が一致している命令に対して，同一のパターン番号を割り当て，命令パターン番号情報を生成する（ステップＳ３４）。
【０１４３】
以上のようにして，データ圧縮装置１で，被圧縮データの繰り返し部分の符号化と，繰り返し部分以外の残り部分のオペコードとオペランドとのそれぞれの符号化とがなされた圧縮データが復元され，元のデータ（被圧縮データ）を得ることができる。
【０１４４】
図１６は，データ圧縮装置１，命令パターン情報生成装置２，およびデータ復元装置３を実施する代表的なハードウェア構成例を示す図である。
【０１４５】
データ圧縮装置１，命令パターン情報生成装置２，およびデータ復元装置３は，それぞれ，演算装置（ＣＰＵ）５０１，一時記憶装置（ＤＲＡＭ，フラッシュメモリ等）５０２，永続性記憶装置（ＨＤＤ，フラッシュメモリ等）５０３，バス５０５等を有するコンピュータ５００によって実施することができる。
【０１４６】
また，データ圧縮装置１，命令パターン情報生成装置２，およびデータ復元装置３は，それぞれ，コンピュータ５００が実行可能なプログラムによって実施することができる。この場合に，データ圧縮装置１，命令パターン情報生成装置２，およびデータ復元装置３がそれぞれ有すべき機能の処理内容を記述したプログラムが提供される。演算装置（ＣＰＵ）５０１が，提供されたプログラムをロード・実行することにより，上記説明したデータ圧縮装置１，命令パターン情報生成装置２，およびデータ復元装置３のいずれかが仮想的に実現される。
【０１４７】
なお，データ圧縮装置１，命令パターン情報生成装置２，およびデータ復元装置３それぞれを実施するコンピュータ５００は，可搬型記録媒体から直接プログラムを読み取り，そのプログラムに従った処理を実行することもでき，サーバコンピュータからプログラムが転送されるごとに，逐次，受け取ったプログラムに従った処理を実行することもできる。
【０１４８】
また，このプログラムは，コンピュータ５００で読み取り可能な記録媒体に記録しておくことができる。
【０１４９】
以下に，本願発明の実施態様における特徴を列記する。
【０１５０】
（付記１）  データ記憶部を備えるコンピュータに，
オペコードとオペランドからなる命令コードを複数含む被圧縮データの入力を受け、該被圧縮データのデータ列からビット値が一致する繰り返し部分を検出し，前記検出した繰り返し部分の相対位置と一致長を求める処理ステップと，
前記繰り返し部分を，前記相対位置と前記一致長とを用いて符号化する処理ステップと，
前記被圧縮データから前記符号化された繰り返し部分以外の部分に含まれる命令コードの区切り位置を分析する処理ステップと，
前記データ記憶部に記憶された，前記オペコードおよびオペランドの構成パターンを前記命令コードと対応づけて示す命令パターン情報をもとに，前記区切り位置に従って区切られた命令コードを，ビット単位でオペコードとオペランドとに分離する処理ステップと，
前記分離したオペコードとオペランドを，それぞれ符号化する処理ステップとを実行させる
ことを特徴とするデータ圧縮プログラム。
【０１５１】
（付記２）  前記オペコードとオペランドをそれぞれ符号化する処理ステップにおいて，
前記コンピュータに，
前記命令パターン情報をもとに，前記命令コードのオペコードおよびオペランドのビット配置に一致する構成パターンを示すパターン番号を割り当てる処理ステップと，
前記パターン番号と前記区切り位置とを符号化する処理ステップと，
前記命令コードのオペコードを符号化する処理ステップと，
前記命令コードのオペランドを個々の要素ごとに符号化する処理ステップとを実行させる
ことを特徴とする前記付記１に記載のデータ圧縮プログラム。
【０１５２】
（付記３）  データ記憶部を備えたコンピュータに，データ列のビット値が一致する繰り返し部分と前記繰り返し部分以外の部分とを別の処理手順で圧縮された圧縮データ列を，復元する方法を実行させるプログラムであって，
前記コンピュータに，
前記圧縮データ列から，繰り返し部分の圧縮の有無を示す情報を復元する処理ステップと，
前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の圧縮の有を示す場合に，前記圧縮データ列の繰り返し部分の相対位置と一致長とを復元する処理ステップと，
前記圧縮データ列の前記相対位置が指定する位置から前記一致長が指定する長さの文字列を複写する処理ステップと，
前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の圧縮の無を示す場合に，前記圧縮データ列の前記繰り返し部分以外の部分に含まれる命令コードのオペコードとオペランドとを各々復元する処理ステップと，
前記データ記憶部に記憶された，前記オペコードおよびオペランドの構成パターンを前記命令コードと対応づけて示す命令パターン情報をもとに，前記復元されたオペコードとオペランドとをビットごとに命令セットに従って配置する処理ステップとを実行させる
ことを特徴とするデータ復元プログラム。
【０１５３】
（付記４）  前記オペコードとオペランドとを復元する処理ステップにおいて，
前記コンピュータに，
前記命令パターン情報をもとに，前記被圧縮データから，前記繰り返し部分以外の部分に含まれる命令コードの区切り位置と，該命令コードのオペコードおよびオペランドのビット配置に一致する構成パターンを示すパターン番号とを復元する処理ステップと，
前記オペコードを復元する処理ステップと，
前記オペランドの個々の要素を復元する処理ステップとを実行させる
ことを特徴とする前記付記３に記載のデータ復元プログラム。
【０１５４】
（付記５）  データ記憶部を備えるコンピュータが実行する処理方法であって，
オペコードとオペランドからなる命令コードを複数含む被圧縮データの入力を受け，該被圧縮データのデータ列からビット値が一致する繰り返し部分を検出し，前記検出した繰り返し部分の相対位置と一致長とを求める一致検索ステップと，
前記繰り返し部分を，前記相対位置と前記一致長とを用いて符号化する一致部符号化ステップと，
前記被圧縮データから前記符号化された繰り返し部分以外の部分に含まれる命令コードの区切り位置を分析する区切り位置分析ステップと，
前記データ記憶部に記憶された，前記オペコードおよびオペランドの構成パターンを前記命令コードと対応付けて示す命令パターン情報をもとに，前記区切り位置に従って区切られた命令コードを，ビット単位でオペコードとオペランドとに分離するオペコード・オペランド分離ステップと，
前記分離したオペコードとオペランドを，それぞれ符号化するオペコード・オペランド符号化ステップとを備える
ことを特徴とするデータ圧縮方法。
【０１５５】
（付記６）  データ記憶部を備えるコンピュータが実行する，データ列のビット値が一致する繰り返し部分と前記繰り返し部分以外の部分とを別の処理手順で圧縮された圧縮データ列を復元するデータ復元方法であって，
前記圧縮データ列から，繰り返し部分の圧縮の有無を示す情報を復元する処理ステップと，
前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の圧縮の有を示す場合に，前記圧縮データ列の繰り返し部分の相対位置と一致長とを復元する処理ステップと，
前記圧縮データ列の前記相対位置が指定する位置から前記一致長が指定する長さの文字列を複写する処理ステップと，
前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の圧縮の無を示す場合に，前記圧縮データ列の前記繰り返し部分以外の部分のオペコードとオペランドとを各々復元する処理ステップと，
前記データ記憶部に記憶された，前記オペコードおよびオペランドの構成パターンを前記命令コードと対応付けて示す命令パターン情報をもとに，前記復元されたオペコードとオペランドとをビットごとに命令セットに従って配置する処理ステップとを備える
ことを特徴とするデータ復元方法。
【０１５６】
（付記７）  前記コンピュータに，
前記被圧縮データに含まれる命令コードのセットから，オペコードおよびオペランドの構成パターンを分析して前記命令パターン情報を生成する処理ステップを実行させる
ことを特徴とする前記付記２に記載のデータ圧縮プログラム。
【０１５７】
（付記８）  オペコードおよびオペランドの構成パターンを示すパターン番号を命令コードと対応付けて示す命令パターン情報を記憶するデータ記憶部と，
オペコードとオペランドからなる命令コードを複数含む被圧縮データの入力を受け，該被圧縮データのデータ列からビット値が一致する繰り返し部分を検出し，前記検出した繰り返し部分の相対位置と一致長とを求める一致検索部と，
前記繰り返し部分を，前記相対位置と前記一致長とを用いて符号化する一致部符号化部と，
前記被圧縮データから前記符号化された繰り返し部分以外の部分に含まれる命令コードの区切り位置を分析する区切り位置分析部と，
前記命令パターン情報をもとに，前記区切り位置に従って区切られた命令コードを，ビット単位でオペコードとオペランドとに分離する分離部と，
前記分離したオペコードとオペランドを，それぞれ符号化する符号化部とを備える
ことを特徴とするデータ圧縮装置。
【０１５８】
（付記９）  データ列のビット値が一致する繰り返し部分と前記繰り返し部分以外の部分とを別の処理手順で圧縮された圧縮データ列を復元するデータ復元装置であって，
オペコードおよびオペランドの構成パターンを示すパターン番号を命令コードと対応付けて示す命令パターン情報を記憶するデータ記憶部と，
前記圧縮データ列から，繰り返し部分の圧縮の有無を示す情報を復元する一致あり・なし復元部と，
前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の圧縮の有を示す場合に，前記圧縮データ列の繰り返し部分の相対位置と一致長とを復元する一致復元部と，
前記圧縮データ列の前記相対位置が指定する位置から前記一致長が指定する長さの文字列を複写する複写部と，
前記復元した繰り返し部分の圧縮の有無を示す情報が繰り返し部分の圧縮の無を示す場合に，前記圧縮データ列の前記繰り返し部分以外の部分のオペコードとオペランドとを各々復元する復元部と，
前記命令パターン情報をもとに，前記復元されたオペコードとオペランドとをビットごとに命令セットに従って配置する配置部とを備える
ことを特徴とするデータ復元装置。
【符号の説明】
【０１５９】
１  データ圧縮装置
１０  入力データ保持部
１１  一致検索部
１２  一致符号化部
１３  一致長・一致位置符号保持部
１４  区切り位置分析部
１５  分離部
１６  符号化部
１６１  パターン番号分析部
１６２  パターン番号・区切り位置符号化部
１６３  オペコード符号化部
１６４  オペランド符号化部
１７  符号保持部
１７１  パターン番号・区切り位置符号保持部
１７２  オペコード符号保持部
１７３  オペランド符号保持部
１７３１  レジスタ１符号保持部
１７３２  レジスタ２符号保持部
１７３３  ８ｂｉｔイミディエート値符号保持部
１７３４  １１ｂｉｔイミディエート値符号保持部
１７３５  レジスタリスト符号保持部
１８  圧縮データ保持部
１９  命令パターン情報保持部
２  命令パターン情報生成装置
３  データ復元装置
３０  圧縮データ保持部
３１  一致あり・なし復元部
３２  一致復元部
３３  一致長・一致位置符号保持部
３４  コピー部
３５  復元部
３５１  パターン番号・区切り位置復元部
３５２  オペコード復元部
３５３  オペランド復元部
３６  符号保持部
３６１  パターン番号・区切り位置符号保持部
３６２  オペコード符号保持部
３６３  オペランド符号保持部
３６３１  レジスタ１符号保持部
３６３２  レジスタ２符号保持部
３６３３  ８ｂｉｔイミディエート値符号保持部
３６３４  １１ｂｉｔイミディエート値符号保持部
３６３５  レジスタリスト符号保持部
３７  配置部
３８  復元データ保持部
【図１】
0005549402.tif 000002
【図２】
0005549402.tif 000003
【図３】
0005549402.tif 000004
【図４】
0005549402.tif 000005
【図５】
0005549402.tif 000006
【図６】
0005549402.tif 000007
【図７】
0005549402.tif 000008
【図８】
0005549402.tif 000009
【図９】
0005549402.tif 000010
【図１０】
0005549402.tif 000011
【図１１】
0005549402.tif 000012
【図１２】
0005549402.tif 000013
【図１３】
0005549402.tif 000014
【図１４】
0005549402.tif 000015
【図１５】
0005549402.tif 000016
【図１６】
0005549402.tif 000017