JP2003076606A - Program compression method - Google Patents

Program compression method

Info

Publication number
JP2003076606A
JP2003076606A JP2001261916A JP2001261916A JP2003076606A JP 2003076606 A JP2003076606 A JP 2003076606A JP 2001261916 A JP2001261916 A JP 2001261916A JP 2001261916 A JP2001261916 A JP 2001261916A JP 2003076606 A JP2003076606 A JP 2003076606A
Authority
JP
Japan
Prior art keywords
page
subroutine
compression
compressed
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001261916A
Other languages
Japanese (ja)
Inventor
Morgan Hirosuke Miki
モーガン ヒロスケ ミキ
Nobuyuki Kawahara
伸幸 河原
Yoshinori Takeuchi
良典 武内
Isao Shirakawa
功 白川
Toyohiko Yoshida
豊彦 吉田
Mamoru Sakamoto
守 坂本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
SYNTHESIS Corp
Original Assignee
Mitsubishi Electric Corp
SYNTHESIS Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp, SYNTHESIS Corp filed Critical Mitsubishi Electric Corp
Priority to JP2001261916A priority Critical patent/JP2003076606A/en
Publication of JP2003076606A publication Critical patent/JP2003076606A/en
Pending legal-status Critical Current

Links

Abstract

PROBLEM TO BE SOLVED: To avoid the compression of one sub-routine, if having a smaller size than one page size, extending over two pages, thereby making the expansion of the page possible to be minimum, when expanded, and the processing time can be shortened. SOLUTION: The sub-routines of the execution files are compressed in pages for a program constituted by one or more execution files. Specifically, in allocating the pages, the sub-routines are lined in the order of a big size (Step T1), the empty space of the first page is always checked at first (Step T5), and if the page is fully empty, the sub-routine is allocated in the page (YES in Step T6). When the sub-routine has a larger size than the page size it is allocated in the next page (Step T12-14). When the sub-routine has a smaller size than the empty space of the page it is allocated in the page (YES in Step T7).

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【発明の属する技術分野】本発明は、特に、データを格
納するメモリの容量が小さい場合に有効なプログラムの
圧縮方法に関するものである。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method of compressing a program which is effective especially when the capacity of a memory for storing data is small.

【0002】[0002]

【従来の技術】Java(R)(米国サンマイクロシス
テムズ社の登録商標。Rは登録商標を示すものとする)
言語で記述されたプログラムは、実行に先だってバイト
コードと呼ばれるプラットフォームに依存しないコード
にコンパイルされ、配布される。Java(R)仮想マ
シンは、インタプリタを用いてバイトコードを1命令ず
つ解釈しながら実行することにより、プログラムの実行
を行う。最近では、バイトコードをそのまま実行するの
ではなく、JIT(Just-in-time Compiler)を用い
て、バイトコードをネイティブコードに変換し、プログ
ラムを高速に実行できるようにしたJava(R)仮想
マシンもある。
2. Description of the Related Art Java (R) (registered trademark of Sun Microsystems, Inc. in the United States, where R is a registered trademark)
Programs written in a language are compiled and distributed prior to execution into platform-independent code called bytecode. The Java (R) virtual machine executes a program by interpreting and executing bytecodes one instruction at a time using an interpreter. Recently, a Java (R) virtual machine that converts a bytecode into a native code by using JIT (Just-in-time Compiler) instead of directly executing the bytecode so that the program can be executed at high speed. There is also.

【0003】Java(R)のプログラムの全ての実行
ファイル(クラスファイル)はjar(java archive)と呼
ばれる圧縮・アーカイバー形式により圧縮される。この
ような、Java(R)言語で記述されたプログラム
は、携帯電話機、PDA(Personal Digital Assistant
s)または情報家電などの組込み機器において広く用い
られている。
All execution files (class files) of Java (R) programs are compressed by a compression / archiver format called jar (java archive). Such a program written in the Java (R) language is used for a mobile phone, a PDA (Personal Digital Assistant).
s) or embedded appliances such as information appliances.

【0004】[0004]

【発明が解決しようとする課題】しかし、前記組込み機
器では、使用できるROM(Read Only Memory)または
RAM(Random Access Memory)の容量が通常のコンピ
ュータに比べて小さい。このため、ステップ数の大きな
プログラムを実行できないという問題がある。また、ja
rにより圧縮されたプログラムを実行する際、クラスフ
ァイル全体を伸張する必要があり、そのためにより大き
いRAMが必要になる。
However, the capacity of the ROM (Read Only Memory) or the RAM (Random Access Memory) that can be used in the embedded device is smaller than that of an ordinary computer. Therefore, there is a problem that a program with a large number of steps cannot be executed. Also ja
When running a program compressed by r, the entire class file needs to be decompressed, which requires more RAM.

【0005】本発明は上述の課題を解決するためになさ
れたもので、その目的は、必要なメモリの容量が小さく
て済み、プログラムの実行処理時間が少なくなるプログ
ラムの圧縮方法を提供することである。
The present invention has been made to solve the above problems, and an object of the present invention is to provide a method for compressing a program that requires a small memory capacity and reduces the execution processing time of the program. is there.

【0006】[0006]

【課題を解決するための手段】以下、この項で現れる参
照符号は、発明の実施の形態で説明されている参照符号
をそのまま用いている。本発明のプログラムの圧縮方法
は、所定の言語で記述され、1又は複数の実行ファイル
より構成されたプログラムに対して、前記実行ファイル
のサブルーチン部に含まれるサブルーチンをページごと
に割り当てていき、割り当てられたサブルーチンをペー
ジ単位で圧縮する方法である(請求項1)。
Hereinafter, as the reference numerals appearing in this section, the reference numerals described in the embodiments of the invention are used as they are. A method of compressing a program according to the present invention assigns a subroutine included in a subroutine portion of the execution file for each page to a program written in a predetermined language and composed of one or a plurality of execution files, This is a method of compressing the created subroutine page by page (claim 1).

【0007】前記サブルーチン部は実行ファイルの命令
コードからなる関数である。前記実行ファイルのサブル
ーチンを1又は複数のサブルーチン用ページに分割す
る。各サブルーチン用ページは実行ファイルの複数のサ
ブルーチンの集合となる。実行ファイルのサブルーチン
部を特定の圧縮方式で圧縮を行うことにより、メモリ容
量を小さくすることができる。好ましくは、前記所定の
言語はオブジェクト指向言語である。
The subroutine section is a function composed of the instruction code of the execution file. The subroutine of the execution file is divided into one or a plurality of subroutine pages. Each subroutine page is a set of a plurality of subroutines of the execution file. The memory capacity can be reduced by compressing the subroutine part of the execution file by a specific compression method. Preferably, the predetermined language is an object oriented language.

【0008】さらに、前記実行ファイルをサブルーチン
部、データ部に分割し、サブルーチンのページ割り当て
と圧縮だけでなく、前記実行ファイルのデータ部に含ま
れるデータをページごとに割り当てていき、割り当てら
れたデータをページ単位で圧縮してもよい(請求項
2)。前記データ部は実行ファイルの全ての文字列、数
値である。これにより、メモリ容量をさらに小さくする
ことができる。
Further, the execution file is divided into a subroutine section and a data section, and not only the page allocation and compression of the subroutine but also the data contained in the data section of the execution file is allocated for each page. May be compressed in page units (claim 2). The data part is all character strings and numerical values of the execution file. As a result, the memory capacity can be further reduced.

【0009】さらに、前記実行ファイルをサブルーチン
部、データ部、基本情報部に分割し、前記実行ファイル
の基本情報部に含まれる基本情報をページごとに割り当
てていき、割り当てられた基本情報をページ単位で圧縮
してもよい。前記基本情報部は、実行ファイルのサブル
ーチン部及びデータ部以外の情報、すなわちサブルーチ
ン数、全てのサブルーチンの長さ、データ数、全てのデ
ータのデータタイプ、全ての文字列の長さなどを含む。
伸張後、基本情報はこれらの全ての情報を表すためのデ
ータ構造に変換されプログラム格納部に格納される。
Further, the execution file is divided into a subroutine part, a data part, and a basic information part, and the basic information contained in the basic information part of the execution file is allocated for each page. You may compress with. The basic information section includes information other than the subroutine section and the data section of the execution file, that is, the number of subroutines, the length of all subroutines, the number of data, the data type of all data, the length of all character strings, and the like.
After decompression, the basic information is converted into a data structure for representing all of this information and stored in the program storage unit.

【0010】割り当てられるページのページサイズがペ
ージごとに可変であり、その上限が設定されていてもよ
い(請求項3)。ページサイズの上限を設定し、その単
位でページの圧縮を行えば、限られたメモリ領域で実行
速度を上げることができ、伸張オーバヘッドを低減し、
伸張実行のさい、全体としてキャッシュメモリのヒット
率向上が達成できる。前記ページサイズが全ページ同じ
であってもよい(請求項4)。前記ページサイズが固定
されていれば、その単位でページの圧縮を行い、伸張実
行のさい、その単位で前記キャッシュメモリにキャッシ
ングする。限られたメモリ領域で実行速度を上げること
ができ、伸張オーバヘッドを低減し、全体としてキャッ
シュのヒット率向上が達成できる。ページサイズの可
変、固定の区別は、page_size_type(S8)に関連付け
て、後に説明されている。
The page size of the allocated page may be variable for each page, and the upper limit may be set (claim 3). By setting the upper limit of page size and compressing pages in that unit, you can increase the execution speed in a limited memory area, reduce the decompression overhead,
When performing decompression, the cache memory hit rate can be improved as a whole. The page size may be the same for all pages (claim 4). If the page size is fixed, the page is compressed in that unit, and when decompression is executed, the cache memory is cached in that unit. The execution speed can be increased in a limited memory area, the decompression overhead can be reduced, and the cache hit rate can be improved as a whole. The distinction between variable and fixed page size is described later in association with page_size_type (S8).

【0011】前記サブルーチン用ページとデータ用ペー
ジで使用する圧縮方法を変更してもよい(請求項5)。
これにより、圧縮率が向上する。なお、本明細書で用い
る圧縮率の定義は(圧縮前サイズ/圧縮後サイズ)とす
る。各種圧縮方法は、comp_algorithm(S11) に関連付
けて、後に説明されている。なお、複数の実行ファイル
により構成されたプログラムに対してページ割当てを行
う際、実行ファイルに含まれる情報により同一実行ファ
イルのサブルーチンのみからなるページを作成するよう
にページを区切ることが好ましい(請求項6)。これに
より、実行時のキャッシュのヒット率向上を達成でき
る。前記「実行ファイルに含まれる情報」には、サブル
ーチンの大きさ(S110) (S122)、データの大きさ(S30)
(S34)などがある。
The compression method used in the subroutine page and the data page may be changed (claim 5).
This improves the compression rate. The definition of the compression ratio used in this specification is (size before compression / size after compression). Various compression methods will be described later in association with comp_algorithm (S11). When pages are allocated to a program composed of a plurality of execution files, it is preferable to divide the pages so that a page including only subroutines of the same execution file is created according to the information contained in the execution files (claims). 6). As a result, the cache hit rate at the time of execution can be improved. In the "information included in the execution file", the size of the subroutine (S110) (S122), the size of the data (S30)
(S34) etc.

【0012】ページ割当ての際、サブルーチンをサイズ
の大きい順に整列させ、整列されたサブルーチンごと
に、毎回最初のページから、請求項7記載の処理(A)
(B)を行うことができる(図9でpage_part(S7)が1の
場合)。このプログラムの圧縮方法を説明すると、前記
サブルーチン部でページ分割を行う際、サブルーチンを
大きい順に整列させページ割り当てを行う。整列された
各サブルーチンの割り当ては、常に一番最初ページの空
き領域の調査より開始し、ページがまるごと空いていれ
ば、サブルーチンを当該ページに割り当てる。サブルー
チンが当該ページサイズよりも大きくて、割当てられず
に残ったサブルーチンは、次のページに割り当てる。
The process (A) according to claim 7, wherein when allocating pages, the subroutines are arranged in descending order of size, and for each of the arranged subroutines, from the first page every time.
(B) can be performed (when page_part (S7) is 1 in FIG. 9). The compression method of this program will be explained. When the page division is performed in the subroutine section, the subroutines are arranged in descending order and page allocation is performed. Allocation of each aligned subroutine always starts from the examination of the empty area of the first page, and if the entire page is free, the subroutine is allocated to the page. Subroutines that are larger than the page size and remain unallocated are allocated to the next page.

【0013】当該ページが一部しか空いていない場合、
サブルーチンがページの空き領域より小さい場合、サブ
ルーチンを当該ページに割り当てる。サブルーチンがペ
ージの空き領域より大きい場合は、サブルーチンを当該
ページに割り当てることなく次のページで処理する。こ
の処理により、各サブルーチンをページごとに割り当て
ることができる。サブルーチンを割り当てた後、ページ
ごとに空き領域ができるが、他のサブルーチンが入るな
らば入れ、入らなければページごとの空き領域は最後ま
で残ることになる。
If the page is partially empty,
If the subroutine is smaller than the free space on the page, the subroutine is assigned to the page. If the subroutine is larger than the free space of the page, the subroutine is processed on the next page without being assigned to the page. By this processing, each subroutine can be assigned to each page. After assigning a subroutine, a free area is created for each page, but if another subroutine enters, it will be inserted, and if it does not enter, an empty area for each page will remain to the end.

【0014】このアルゴリズムにより、1つのサブルー
チンは、その大きさが1枚のページサイズよりも小さい
限り、2枚のページにまたがって圧縮されることはな
い。したがって、伸張するとき、最小限のページの伸張
で済み、処理時間が短縮できる。また、ページ割当ての
際、サブルーチンをサイズの大きい順に整列させ、整列
されたサブルーチンごとに、請求項8記載の処理(C)を
行うこともできる(図9でpage_part(S7)が2の場
合)。
With this algorithm, one subroutine will not be compressed across two pages as long as its size is smaller than the page size of one page. Therefore, at the time of decompression, the minimum page decompression is required and the processing time can be shortened. When allocating pages, the subroutines may be arranged in descending order of size, and the processing (C) according to claim 8 may be performed for each of the arranged subroutines (when page_part (S7) is 2 in FIG. 9). .

【0015】このプログラムの圧縮方法を説明すると、
前記サブルーチン部でページ分割を行う際、サブルーチ
ンを大きい順に整列させページ割り当てを行う。整列さ
れた各サブルーチンは、若いページから順に詰めていく
ことになる。従って、空き領域は最後のページには残る
が、最初のページや途中のページには空き領域は存在し
ない。したがって、このアルゴリズムにより、サブルー
チンを圧縮するためのページ数が最小限になり、メモリ
の容量を節約できる。
A method of compressing this program will be described.
When the page division is performed in the subroutine section, the subroutines are arranged in descending order to allocate pages. Each aligned subroutine will be packed in order from the youngest page. Therefore, the empty area remains on the last page, but there is no empty area on the first page or any pages in the middle. Therefore, this algorithm minimizes the number of pages for compressing the subroutine and saves memory space.

【0016】なお、請求項7,8において、ページ割当
ての際、サブルーチンをサイズの大きい順でなく、実行
頻度の高い順に整列させることとしてもよい(請求項
9,10)。こうすれば、サブルーチンを解析し、実行
頻度の高いサブルーチンの順からなるページを作成する
ようにページを区切り圧縮を行うので、実行時のヒット
率が向上する。
In the seventh and eighth aspects, when allocating pages, the subroutines may be arranged in descending order of execution frequency instead of in descending order of size (claims 9 and 10). In this way, the subroutine is analyzed, and the pages are compressed by dividing the pages so as to create the pages in the order of the most frequently executed subroutines, so that the hit rate at the time of execution is improved.

【0017】ページ割り当て後、サブルーチンの中の各
命令のマクロ化による置換を行った後に圧縮を行うこと
としてもよい(請求項11)。前記サブルーチン部でペ
ージ分割後、サブルーチンの特定な連続命令パターンを
マクロ命令に置換し、圧縮を行い、圧縮率が高くなり、
メモリ容量を小さくすることができる(図22の符号1
00参照)。ページ毎に圧縮アルゴリズムを変更しても
よい(請求項12)。 ページ毎に圧縮アルゴリズムが
変更可能であれば、圧縮率が高くなり、メモリ容量を小
さくすることができる。
After page allocation, each instruction in the subroutine may be replaced by macro conversion and then compressed (claim 11). After page division in the subroutine section, a specific continuous instruction pattern of the subroutine is replaced with a macro instruction, compression is performed, and the compression rate increases,
The memory capacity can be reduced (reference numeral 1 in FIG. 22)
00). The compression algorithm may be changed for each page (claim 12). If the compression algorithm can be changed for each page, the compression rate is increased and the memory capacity can be reduced.

【0018】ページの圧縮率(圧縮前サイズ/圧縮後サ
イズ)が一定以上のページのみを圧縮し、そうでないペ
ージはページ圧縮を行わないことが望ましい(請求項1
3)。「一定」とは、例えば100%があげられる。圧
縮を行う実行ファイルがJava(R)のクラスファイ
ルの場合、Javaクラスファイルをi)サブルーチンに相当
するメソッド部、ii)文字列であるutf8のデータ部、及
びiii)これら以外の基本情報部に分割する(請求項1
4,15)。
It is desirable to compress only pages having a page compression rate (size before compression / size after compression) of a certain value or more, and not perform page compression for pages that do not.
3). "Constant" means, for example, 100%. When the executable file to be compressed is a Java (R) class file, the Java class file is added to i) the method part corresponding to the subroutine, ii) the data part of utf8 that is a character string, and iii) the basic information part other than these Divide (Claim 1)
4, 15).

【0019】そして、i)、ii)、iii)でそれぞれに適し
た圧縮方法を用いることにより、必要とするメモリの容
量を小さくすることができる。さらにi)とii)をページ
に分割を行い、適した圧縮方法によりページの圧縮を行
い、必要とするメモリの容量を小さくすることができ、
かつキャッシュのヒット率を向上させることができる。
By using a compression method suitable for each of i), ii), and iii), the required memory capacity can be reduced. Furthermore, i) and ii) are divided into pages, and the pages can be compressed by a suitable compression method to reduce the required memory capacity.
Moreover, the cache hit rate can be improved.

【0020】[0020]

【発明の実施の形態】以下、本発明の実施の形態を、添
付図面を参照しながら詳細に説明する。 <目次> 1.プログラム圧縮形式のヘッダの構造 2.プログラム圧縮形式の基本情報部の構造 3.1プログラム圧縮形式のutf8(データ)、メソッド
(サブルーチン)のページサイズ圧縮形式の形状 3.2プログラム圧縮形式のutf8(データ)、メソッド
(サブルーチン)のサイズ圧縮形式の形状 4.プログラム圧縮形式のutf8部の形式 5.プログラム圧縮形式のメソッド部の形式 6.1プログラム実行装置の形態 (メソッドのみ圧
縮) 6.2プログラム実行装置の形態 (全てを圧縮) <本文> 1.プログラム圧縮形式のヘッダの構造 図2は、Java(R)を想定したプログラム圧縮形式
のトップ階層構造図である。
BEST MODE FOR CARRYING OUT THE INVENTION Embodiments of the present invention will be described in detail below with reference to the accompanying drawings. <Table of contents> 1. Structure of program compression format header 2. Structure of basic information section of program compression format 3.1 utf8 (data) of program compression format, page size of method (subroutine) Shape of compression format 3.2 utf8 (data) of program compression format, size of method (subroutine) Compressed shape 4. Format of utf8 part of program compression format 5. Method format of program compression format 6.1 Program execution device form (only method compression) 6.2 Program execution device form (all compression) <text> 1. Structure of Header in Program Compression Format FIG. 2 is a top layer structure diagram of the program compression format assuming Java (R).

【0021】図3は、図2のプログラム圧縮形式のヘッ
ダ層2の構造S3〜S14を示す詳細図である。以下、
ヘッダ層2の構造S3〜S14を順に説明する。 1.1 magic_number(S3)は16ビット、16進数の0x7cd
fであり、本発明のプログラム圧縮形式ファイルを他の
ファイルと識別するためのものである。 1.2 version(S4)は本発明のプログラム圧縮形式
の、16ビットのバージョン番号である。
FIG. 3 is a detailed diagram showing the structures S3 to S14 of the header layer 2 in the program compression format of FIG. Less than,
The structures S3 to S14 of the header layer 2 will be described in order. 1.1 magic_number (S3) is 16 bit, hexadecimal 0x7cd
f is for identifying the program compression format file of the present invention from other files. 1.2 version (S4) is a 16-bit version number of the program compression format of the present invention.

【0022】1.3 java_version(S5)は圧縮された
元のjava のクラスファイルの16ビットのminor_versio
n及び16ビットのmajor_versionを示す。 1.4 data_comp(S6)は1ビットであり、0の場合、
サブルーチンに相当するメソッド部のみの圧縮を行う。
1の場合、前記メソッド部、データに相当する文字列の
utf8部、及び前記メソッド部と前記utf8部以外の基本情
報部の圧縮を行う。
1.3 java_version (S5) is the 16-bit minor_versio of the compressed original java class file.
n and 16-bit major_version are shown. 1.4 data_comp (S6) is 1 bit, and if 0,
Only the method part corresponding to the subroutine is compressed.
In the case of 1, the method part, of the character string corresponding to the data
The utf8 part and the basic information part other than the method part and the utf8 part are compressed.

【0023】1.5 page_part(S7)は2ビットであ
り、0の場合、メソッド(サブルーチン)あるいはutf8
(データ)をページに分割しないでそのまま圧縮を行
う。1の場合、メソッド(サブルーチン)あるいはutf8
(データ)をページに分割し圧縮を行う。図5はメソッ
ド(サブルーチン)を分割する方法を説明するための図
である。page_part(S7)が1の場合は、この図5に示す
分割方法を用いる。まず、左列に示すように、method
s[](S102)のメソッド(サブルーチン)0〜5が順番に
並んでいる。これらのメソッド(サブルーチン)0〜5
は、sort_type(S9)のアルゴリズムに従って、中列に示
すように、整列される。メソッド(サブルーチン)は、
右列に示すように整列順にページに割り当てられる。も
し、あるページnにすでにメソッド(サブルーチン)が
割り当てられ、次のメソッド(サブルーチン)がページ
の残りの部分に入らない場合、このメソッド(サブルー
チン)は次のページに割り当てられる。
1.5 page_part (S7) is 2 bits, and if 0, it is a method (subroutine) or utf8.
(Data) is directly compressed without being divided into pages. If 1, method (subroutine) or utf8
(Data) is divided into pages and compressed. FIG. 5 is a diagram for explaining a method of dividing a method (subroutine). When page_part (S7) is 1, the division method shown in FIG. 5 is used. First, as shown in the left column, method
The methods (subroutines) 0 to 5 of s [] (S102) are arranged in order. These methods (subroutines) 0-5
Are sorted according to the sort_type (S9) algorithm as shown in the middle row. The method (subroutine) is
Pages are assigned in the order of arrangement as shown in the right column. If a page (n) is already assigned a method (subroutine) and the next method (subroutine) does not fit in the rest of the page, this method (subroutine) is assigned to the next page.

【0024】図5の例では、最初にメソッド(サブルー
チン)4の割り当てから始める。このメソッド(サブル
ーチン)4の大きさがページよりも大きいため、複数の
ページ(ページ0,1)に分割される。ここでページ0
の空き領域は0となり、ページ1の空き領域は、4096+40
96-5817=2375(ハ゛イト)となる。次のメソッド(サブルー
チン)1はページ0及びページ1に入らないため、ペー
ジ2に割り当てられる。ページ2の空き領域は、4096-2
702=1394(ハ゛イト)となる。次のメソッド(サブルーチ
ン)3は、ページ0に入らないが、ページ1は入れるこ
とができるのでページ1に割り当てられる。これでペー
ジ1の空き領域は2375-1806=569(ハ゛イト)となる。次の
メソッド(サブルーチン)0は、ページ0,1に入らな
いので、ページ2(空き領域1394)に割り当てられる。
これでページ2の空き領域は1394-1365=29(ハ゛イト)とな
る。最後のメソッド(サブルーチン)2,5は、ページ
3にしか入らないため、ページ3に割り当てられる。こ
のように、メソッド(サブルーチン)は、キャッシュの
ヒット率向上のため、できるだけ若いページに割り当て
られる。
In the example of FIG. 5, the method (subroutine) 4 is assigned first. Since the size of this method (subroutine) 4 is larger than the page, it is divided into a plurality of pages (pages 0 and 1). Page 0 here
The empty area of is 1 and the empty area of page 1 is 4096 + 40
It becomes 96-5817 = 2375 (byte). The next method (subroutine) 1 is assigned to page 2 because it does not enter page 0 and page 1. Free space on page 2 is 4096-2
702 = 1394 (byte). The next method (subroutine) 3 does not enter page 0, but page 1 can be entered, so it is assigned to page 1. With this, the free area of page 1 becomes 2375-1806 = 569 (byte). Since the next method (subroutine) 0 does not enter pages 0 and 1, it is allocated to page 2 (free area 1394).
Now the free area of page 2 is 1394-1365 = 29 (bytes). The final methods (subroutines) 2 and 5 are assigned to page 3 because they can only enter page 3. In this way, the method (subroutine) is allocated to the youngest page as much as possible in order to improve the cache hit rate.

【0025】メソッド(サブルーチン)をutf8(デー
タ)に置き換えても同様である。図7は、メソッド(サ
ブルーチン)をutf8(データ)に置き換えた事例を説明
するための説明図である。図6はメソッド(サブルーチ
ン)を分割する他の方法を説明するための図である。pa
ge_part(S7)が2の場合に、この図6の分割方法を用い
る。まず、左列に示すように、methods[](S102)のメソ
ッド(サブルーチン)0〜5が順番に並んでいる。これ
らのメソッド(サブルーチン)0〜5は、sort_type(S
9)のアルゴリズムに従って、中列に示すように、整列さ
れる。メソッド(サブルーチン)は、右列に示すように
整列順にページに割り当てられる。最後のページ以外の
ページには、空きがないようにメソッド(サブルーチ
ン)はページに割り当てられる。これにより、圧縮率を
高くすることができる。
The same applies when the method (subroutine) is replaced with utf8 (data). FIG. 7 is an explanatory diagram for explaining an example in which the method (subroutine) is replaced with utf8 (data). FIG. 6 is a diagram for explaining another method of dividing a method (subroutine). pa
When ge_part (S7) is 2, the dividing method of FIG. 6 is used. First, as shown in the left column, methods (subroutines) 0 to 5 of methods [] (S102) are arranged in order. These methods (subroutines) 0-5 use sort_type (S
According to the algorithm of 9), they are arranged as shown in the middle row. The methods (subroutines) are assigned to pages in the order of arrangement as shown in the right column. Methods (subroutines) are assigned to pages so that there is no space on pages other than the last page. Thereby, the compression rate can be increased.

【0026】メソッド(サブルーチン)をutf8(デー
タ)に置き換えても同様である。図8は、メソッド(サ
ブルーチン)をutf8(データ)に置き換えた事例を説明
するための説明図である。以上のように、ページ割り当
てを行う際、実行ファイルに含まれる情報により同一実
行ファイルのサブルーチンのみからなるページを作成す
ることができる(請求項6)。
The same applies when the method (subroutine) is replaced with utf8 (data). FIG. 8 is an explanatory diagram for explaining an example in which the method (subroutine) is replaced with utf8 (data). As described above, when pages are allocated, it is possible to create a page consisting only of subroutines of the same execution file according to the information contained in the execution file (claim 6).

【0027】1.6 page_size_type(S8) はpage_p
art(S7)が0でない場合のみ存在する。page_size_typ
e(S8)は1ビットであり、page_size_type(S8)が0の
場合(請求項3に相当)、可変ページサイズの上限を設
定し、その単位でページの圧縮・伸張実行を行う。page
_size_type(S8)が1の場合(請求項4に相当)、ペー
ジサイズを固定にし、その単位でページの圧縮・伸張実
行を行う。 1.7 sort_type(S9)は、page_part(S7)が0でない
場合のみ存在する。
1.6 page_size_type (S8) is page_p
It exists only when art (S7) is not 0. page_size_typ
e (S8) is 1 bit, and if page_size_type (S8) is 0 (corresponding to claim 3), the upper limit of the variable page size is set, and page compression / expansion is executed in that unit. page
When _size_type (S8) is 1 (corresponding to claim 4), the page size is fixed and page compression / expansion is performed in that unit. 1.7 sort_type (S9) exists only when page_part (S7) is not 0.

【0028】sort_type(S9)は1ビットであり、sort_t
ype(S9)が0の場合(請求項8に相当)、本発明に従っ
て、ページ数を少なくするアルゴリズムを用いてメソッ
ド(サブルーチン)あるいはutf8(データ)をページに
割り当てる。メソッド(サブルーチン)を割り当てる場
合のアルゴリズムを図9、図10に示す。このアルゴリ
ズムはpage_part(S7)が1の場合(図5)と2の場合
(図6)に対応している。このアルゴリズムは、メソッ
ド(サブルーチン)を対象としているが、utf8(デー
タ)を対象とする場合(図7、図8)も同様のアルゴリ
ズムとなる。
Sort_type (S9) is 1 bit and sort_t
When ype (S9) is 0 (corresponding to claim 8), according to the present invention, a method (subroutine) or utf8 (data) is assigned to a page using an algorithm for reducing the number of pages. An algorithm for assigning a method (subroutine) is shown in FIGS. 9 and 10. This algorithm corresponds to the case where page_part (S7) is 1 (FIG. 5) and 2 (FIG. 6). This algorithm is targeted for the method (subroutine), but the same algorithm is applied when targeting utf8 (data) (FIGS. 7 and 8).

【0029】図9を参照して、開始より、まずサブルー
チンの大きい順に整列を行う(ステップT1)。page_pa
rt(S7)が2の場合(図6参照)、サブルーチンは整列順
に最後のページ以外に空き領域がないようにページ分割
される。page_part(S7)が1の場合(図5参照)、各サ
ブルーチンをページに割り当てる際、ページの空き領域
を確認する必要がある。
Referring to FIG. 9, from the start, the subroutines are first arranged in descending order (step T1). page_pa
When rt (S7) is 2 (see FIG. 6), the subroutine is page-divided so that there is no empty area other than the last page in the alignment order. When page_part (S7) is 1 (see FIG. 5), it is necessary to check the free area of the page when assigning each subroutine to the page.

【0030】前記整列後、1ページの大きさpagesizeを
設定する(ステップT2)。このpagesizeは定数、固定値
である。次にサブルーチン用変数s=0にし、ページ用
変数p=0にする(ステップT3)。次に、前記page_pa
rt(S7)を1と比較し(ステップT4)、1である場合、
すべてのページの確認をする必要があるため、p=0に
する(ステップT5)。前記page_part(S7)が2の場合、
サブルーチンは連続的にページに割り当てられるため、
毎回p=0にしない(ステップT5をスキップする)。
After the alignment, the size of one page, pagesize, is set (step T2). This pagesize is a constant and fixed value. Next, the subroutine variable s = 0 and the page variable p = 0 are set (step T3). Next, the page_pa
rt (S7) is compared with 1 (step T4), and if it is 1,
Since it is necessary to check all pages, p = 0 is set (step T5). If the page_part (S7) is 2,
Subroutines are assigned to pages sequentially, so
Do not set p = 0 every time (skip step T5).

【0031】page_part(S7)が1の場合、サブルーチン
のサイズがページサイズより大きいと、サブルーチンを
複数の空のページに分割する必要があるため、ステップ
T6でp番目のページ、ページ[p]の空き領域がpagesize
であるかの確認をする。ステップT6でページ[p]の空
き領域がpagesizeに満たない場合、ステップT7ではペ
ージ[p]の空き領域がサブルーチン[s]より大きいかの確
認を行う。ページ[p]の空き領域がサブルーチン[s]の大
きさに満たない場合、次のページを検索するため、pを
p+1として(ステップT8)、ステップT6の入口に戻
る。
If page_part (S7) is 1, and the size of the subroutine is larger than the page size, it is necessary to divide the subroutine into a plurality of empty pages. Therefore, in step T6, the p-th page, page [p] Free space is pagesize
Check if it is. If the empty area of page [p] is less than pagesize in step T6, it is confirmed in step T7 whether the empty area of page [p] is larger than the subroutine [s]. If the empty area of the page [p] is less than the size of the subroutine [s], p is set to p + 1 (step T8) to search for the next page, and the process returns to the entrance of step T6.

【0032】ステップT7でページ[p]の空き領域がサ
ブルーチン[s]の大きさ以上の場合、ステップT10に
進む。ステップT6でページ[p]の空き領域がpagesize
である場合(1ページ丸々空いている場合)も、ステッ
プT10に進む。ステップT9ではpage_part(S7)が
1、あるいは2であるか確認し、1でも2でもなければ
ページ分割を行わないことになり、処理は終了される。
If the empty area of the page [p] is larger than the size of the subroutine [s] in step T7, the process proceeds to step T10. In step T6, the empty area of page [p] is pagesize
If it is (if one page is completely empty), the process proceeds to step T10. In step T9, it is confirmed whether page_part (S7) is 1 or 2, and if it is neither 1 nor 2, page division is not performed, and the process ends.

【0033】ステップT9でpage_part(S7)が2の場
合、ステップT10に進む。ステップT10ではサブル
ーチン[s]の大きさをssとし、図10のステップT11
に進む。ステップT11以下では、割り当てを始める。
ステップT11でssがページ[p]の空き領域より大きい
と判定された場合(ステップT11のno)、サブルーチン
[s]がページ[p]に入らないため、ページ[p]に割り当て
られるだけ割り当て、残りは次のページに割り当てる。
すなわちss=ss−ページ[p] の空き領域(ステップT1
2)、ページ[p]の空き領域=0(ステップT13)、p=p+
1とし(ステップT14)、ステップT12の入力にもど
る。
If page_part (S7) is 2 in step T9, the process proceeds to step T10. In step T10, the size of the subroutine [s] is set to ss, and step T11 in FIG.
Proceed to. In step T11 and thereafter, allocation is started.
When it is determined in step T11 that ss is larger than the empty area of page [p] (no in step T11), the subroutine
Since [s] does not fit on page [p], it allocates as much as it can on page [p] and allocates the rest to the next page.
That is, ss = ss-vacant area of page [p] (step T1
2), empty area of page [p] = 0 (step T13), p = p +
The value is set to 1 (step T14), and the input is returned to step T12.

【0034】ステップT11で、もしssがページ[p]の
空き領域以下の場合(ステップT11のyes)、ss全体を
ページ[p]に割り当てることができるので、ページ[p]の
空き領域からssの分を減算する(ステップT15)。ここ
でサブルーチン[s]のページ割り当ては終わり、s=s+1と
し(ステップT16)、ステップT15に入る。ステップ
T17では、もしsが所定のサブルーチン数に等しけれ
ば処理は終了し、そうでなければステップT4の入力に
戻り、次のサブルーチンの処理に入る。以上が図9、図
10の説明である。
At step T11, if ss is less than or equal to the free space of page [p] (yes at step T11), the entire ss can be allocated to page [p], so ss is allocated from the free space of page [p]. Is subtracted (step T15). Here, the page allocation of the sub-routine [s] is completed, s = s + 1 is set (step T16), and step T15 is entered. In step T17, if s is equal to the predetermined number of subroutines, the process is terminated, and if not, the process returns to the input of step T4 to start the process of the next subroutine. The above is the description of FIGS. 9 and 10.

【0035】sort_type(S9)が1の場合(請求項9に相
当)、メソッド(サブルーチン)を解析し、実行頻度の
高いサブルーチンの順からなるページを作成するように
ページを区切り、圧縮を行う。 1.8 page_comp(S10)はpage_part(S7)が0でない
の場合のみ存在する。page_comp(S10)は1ビットであ
り、page_comp(S10)が0の場合、comp_algorithm(S1
1)により、ページを圧縮するアルゴリズムの選択を行
う。1の場合、method_algorithm(S267)によりメソッ
ド(サブルーチン)のページを圧縮し、utf8_algorith
m(S264)によりutf8(データ)のページを圧縮する。
When sort_type (S9) is 1 (corresponding to claim 9), the method (subroutine) is analyzed, and pages are divided and compressed so as to create pages in the order of subroutines with high execution frequency. 1.8 page_comp (S10) exists only when page_part (S7) is not 0. page_comp (S10) is 1 bit, and if page_comp (S10) is 0, comp_algorithm (S1
Select the algorithm for page compression according to 1). In case of 1, the method (subroutine) page is compressed by method_algorithm (S267), and utf8_algorith
Compress utf8 (data) pages by m (S264).

【0036】1.9 comp_algorithm(S11)はpage_pa
rt(S7)が0の場合、あるいはpage_part(S7)が0ではな
くpage_comp(S10)が0の場合のみ存在する。comp_alg
orithm(S11)はutf8(データ)あるいはメソッド(サブ
ルーチン)に用いる圧縮形式であり、3ビットを以下の
通りに用いる。utf8(データ)の圧縮はdata_comp(S6)
が1の場合のみ行う。comp_algorithm(S11)が0の場
合、utf8(データ)に、前記utf8部のページの圧縮方法
1、メソッド(サブルーチン)に前記メソッド部のペー
ジの圧縮方法1とする。
1.9 comp_algorithm (S11) is page_pa
It exists only when rt (S7) is 0, or when page_part (S7) is not 0 and page_comp (S10) is 0. comp_alg
orithm (S11) is a compression format used for utf8 (data) or method (subroutine), and 3 bits are used as follows. utf8 (data) compression is data_comp (S6)
Only when is 1. When comp_algorithm (S11) is 0, utf8 (data) is the compression method 1 of the page of the utf8 part, and the method (subroutine) is the compression method 1 of the page of the method part.

【0037】comp_algorithm(S11)が1の場合、utf8
(データ)に、前記utf8部のページの圧縮方法2、メソ
ッド(サブルーチン)に前記メソッド部のページの圧縮
方法2とする。comp_algorithm(S11)が2の場合、utf8
(データ)に、前記utf8部のページの圧縮方法1、メソ
ッド(サブルーチン)に前記メソッド部のページの圧縮
方法3とする。
When comp_algorithm (S11) is 1, utf8
(Data) is the page compression method 2 of the utf8 section, and the method (subroutine) is the page compression method 2 of the method section. If comp_algorithm (S11) is 2, utf8
(Data) is the page compression method 1 of the utf8 section, and the method (subroutine) is the page compression method 3 of the method section.

【0038】comp_algorithm(S11)が3の場合、utf8
(データ)に、前記utf8部のページの圧縮方法2、メソ
ッド(サブルーチン)に前記メソッド部のページの圧縮
方法4とする。comp_algorithm(S11)が4の場合、utf8
(データ)に、前記utf8部のページの圧縮方法1、メソ
ッド(サブルーチン)に前記メソッド部のページの圧縮
方法5とする。
If comp_algorithm (S11) is 3, utf8
(Data) is the page compression method 2 of the utf8 section, and method (subroutine) is the page compression method 4 of the method section. If comp_algorithm (S11) is 4, utf8
(Data) is the page compression method 1 of the utf8 section, and method (subroutine) is the page compression method 5 of the method section.

【0039】comp_algorithm(S11)が5の場合、utf8
(データ)に、前記utf8部のページの圧縮方法2、メソ
ッド(サブルーチン)に前記メソッド部のページの圧縮
方法6とする。comp_algorithm(S11)が6の場合、utf8
(データ)に、前記utf8部のページの圧縮方法1、メソ
ッド(サブルーチン)に前記メソッド部のページの圧縮
方法7とする。
If comp_algorithm (S11) is 5, utf8
(Data) is the page compression method 2 of the utf8 section, and method (subroutine) is the page compression method 6 of the method section. If comp_algorithm (S11) is 6, utf8
(Data) is the page compression method 1 of the utf8 section, and the method (subroutine) is the page compression method 7 of the method section.

【0040】comp_algorithm(S11)が7の場合、utf8
(データ)に、前記utf8部のページの圧縮方法2、メソ
ッド(サブルーチン)に前記メソッド部のページの圧縮
方法7とする。ここで、utf8(データ)部のページの圧
縮方法1,2の定義を述べる。 utf8(データ)部のページの圧縮方法1: 高速な辞書
ベースのlz-77アルゴリズム。初期辞書として、APIライ
ブラリの情報、属性名情報、基本メソッド(サブルーチ
ン)デスクリプター情報を用いる。
If comp_algorithm (S11) is 7, utf8
(Data) is the page compression method 2 of the utf8 section, and method (subroutine) is the page compression method 7 of the method section. Here, the definitions of page compression methods 1 and 2 of the utf8 (data) part will be described. utf8 (data) section page compression method 1: Fast dictionary-based lz-77 algorithm. API library information, attribute name information, and basic method (subroutine) descriptor information are used as the initial dictionary.

【0041】utf8(データ)部のページの圧縮方法2:
圧縮率の高い前記lz-77及び適応型ハフマンの組合せ
である。初期辞書として、APIライブラリの情報、属性
名情報、基本メソッド(サブルーチン)デスクリプター
情報を用いる。 次に、メソッド部のページの圧縮方法1〜7の定義を述
べる。 メソッド部のページの圧縮方法1: 分割方法1(S270)
に高速な辞書ベースのlz-77アルゴリズムを用いる。
Method of compressing page of utf8 (data) part 2:
It is a combination of the high compression ratio lz-77 and adaptive Huffman. API library information, attribute name information, and basic method (subroutine) descriptor information are used as the initial dictionary. Next, the definition of page compression methods 1 to 7 in the method section will be described. Method page compression method 1: Division method 1 (S270)
Uses a fast dictionary-based lz-77 algorithm.

【0042】メソッド部のページの圧縮方法2: 分割
方法1(S270)に圧縮率の高い前記lz-77及び適応型ハフ
マンの組合せを用いる。 メソッド部のページの圧縮方法3: 分割方法2(S272)
に高速な辞書ベースのlz-77アルゴリズムを用いる。 メソッド部のページの圧縮方法4: 分割方法2(S272)
に圧縮率の高い前記lz-77及び適応型ハフマンの組合せ
を用いる。
Method page compression method 2: A combination of the above-mentioned lz-77 and adaptive Huffman having a high compression rate is used for the division method 1 (S270). Method section page compression method 3: Division method 2 (S272)
Uses a fast dictionary-based lz-77 algorithm. Method section page compression method 4: Division method 2 (S272)
A combination of the above-mentioned lz-77 and adaptive Huffman having a high compression rate is used.

【0043】メソッド部のページの圧縮方法5: 分割
方法3(S274)のオペコード及びマクロ部に高速な辞書ベ
ースのlz-77アルゴリズムより圧縮を行い、オペランド
部にはオペランド部に特化した圧縮法を用いる。 メソッド部のページの圧縮方法6: 分割方法3(S274)
のオペコード及びマクロ部に圧縮率の高い前記lz-77及
び適応型ハフマンの組合せより圧縮を行い、オペランド
部にはオペランド部に特化した圧縮法を用いる。
Method part page compression method 5: The opcode and the macro part of the division method 3 (S274) are compressed by the high-speed dictionary-based lz-77 algorithm, and the operand part is a compression method specialized for the operand part. To use. Method section page compression method 6: Division method 3 (S274)
The operation code and the macro part are compressed by the combination of lz-77 and adaptive Huffman having a high compression ratio, and the operand part uses a compression method specialized for the operand part.

【0044】メソッド部のページの圧縮方法7: 分割
方法3(S274)のオペコード及びマクロ部にマクロの出現
頻度に特化した固定ハフマン表より圧縮を行い、オペラ
ンド部にはオペランド部に特化した圧縮法を用いる。本
手法のハードウエア化は容易である。 1.10 count_size(S12)はdata_comp(S6)が1の場
合のみ存在する。 count_size(S12)は1ビットであり、0の場合、Javaク
ラスファイルの定数保存部(コンスタントプール)数(c
onstant_pool_count(S30))、インタフェース数(inter
faces_count(S60))、フィールド数(fields_count(S6
4))、メソッド(サブルーチン)数(methods_count(S10
0))、属性数(attributes_count(S74) (S110) (S13
6))、前記メソッド(サブルーチン)のスタック数(max
_stack(S118))、前記メソッド(サブルーチン)のロー
カル変数数(max_locals(S120))、前記メソッド(サブ
ルーチン)の例外表数(exception_table_length(12
4))、例外属性の属性数(number_of_exceptions(S14
4))、内蔵クラス属性のクラス数(number_of_classes
(S210))、ラインナンバー表属性のラインナンバー表数
(line_number_table_length(S164))、ローカル変数
表属性のローカル変数表数(local_variable_table_l
ength(S176))を1バイト、1の場合は2バイトで圧縮を
行う。
Method section page compression method 7: The operation code of the division method 3 (S274) and the macro section are compressed from the fixed Huffman table specialized for the appearance frequency of macros, and the operand section is specialized for the operand section. The compression method is used. This method can be easily implemented as hardware. 1.10 count_size (S12) exists only when data_comp (S6) is 1. count_size (S12) is 1 bit, and if 0, the number of constant storage parts (constant pool) of the Java class file (c
onstant_pool_count (S30)), number of interfaces (inter
faces_count (S60)), number of fields (fields_count (S6
4)), the number of methods (subroutines) (methods_count (S10
0)), the number of attributes (attributes_count (S74) (S110) (S13
6)), the number of stacks of the method (subroutine) (max
_Stack (S118)), the number of local variables of the method (subroutine) (max_locals (S120)), the number of exception tables of the method (subroutine) (exception_table_length (12
4)), the number of exception attributes (number_of_exceptions (S14
4)), the number of classes in the built-in class attribute (number_of_classes
(S210)), line number table number of line number table attribute
(line_number_table_length (S164)), local variable table number of local variable table attribute (local_variable_table_l
ength (S176)) is 1 byte, and if 1 is 2 bytes, compression is performed.

【0045】図4は、必要最低下位ビットのみを圧縮す
る事例を説明するための図である。図4は、constant_
pool_count(S30), interfaces_count(S60),fields_
count(S64)などの圧縮前のデータ(S15)の長さがnビッ
ト、符号化する部分(必要最低下位ビット(S17))の長
さがmビット、符号化する必要のない部分(S16)の長さ
がn−mビットであることを示している。mビットの部
分のみが圧縮データ(S19)を構成する。n−mビットの
部分は、圧縮データ(S19)に含まれない。なお、長さの
単位ビットをバイトに置き換えても同様である。
FIG. 4 is a diagram for explaining an example of compressing only the required least significant bits. Figure 4 shows constant_
pool_count (S30), interfaces_count (S60), fields_
The length of uncompressed data (S15) such as count (S64) is n bits, the part to be encoded (required least significant bit (S17)) is m bits, and the part that does not need to be encoded (S16) Indicates that the length of is n−m bits. Only the m-bit portion constitutes the compressed data (S19). The mn bit portion is not included in the compressed data (S19). The same applies when the unit bits of length are replaced with bytes.

【0046】例えば、nを2バイトとする。count_siz
e(S12)が0の場合、最低必要下位バイト数(S17)mは1
バイトとなり、count_size(S12)が1の場合、m=2バ
イトとなる。 1.11 utf8_len_size(S13)はdata_comp(S6)が1
の場合のみ存在する。utf8_len_size(S13)は4ビット
であり、Javaクラスファイルの圧縮されたutf8(デー
タ)の長さ(length(S52))の1〜16ビットの長さを表
す。
For example, n is 2 bytes. count_siz
If e (S12) is 0, the minimum required lower byte count (S17) m is 1
If the count_size (S12) is 1, then m = 2 bytes. 1.11 utf8_len_size (S13) has 1 data_comp (S6)
Exists only when. utf8_len_size (S13) is 4 bits and represents a length of 1 to 16 bits of the compressed utf8 (data) length (length (S52)) of the Java class file.

【0047】図4を参照して説明すると、length(S52)
がm=16ビットの元のデータ(S15)を表し、m=[utf8_len
_size(S13)が表すデータ+1]が最低必要下位ビット数(S
17)を表す。ここで下位mビットのみがそのまま符号化(S
18)され、圧縮データ(S19)は下位mビットのデータであ
る。上位n-mのビットは0であるため、符号化する必要が
ない。 1.12 attribute_len_size(S14)はdata_comp(S
6)が1の場合のみ存在する。
Referring to FIG. 4, length (S52)
Represents the original data (S15) of m = 16 bits, and m = [utf8_len
Data + 1 represented by _size (S13) +1] is the minimum required lower-order bit number (S
Represents 17). Here, only the lower m bits are directly encoded (S
18) and the compressed data (S19) is the lower m bits of data. Since the high-order nm bit is 0, it is not necessary to encode it. 1.12 attribute_len_size (S14) is data_comp (S
Only present if 6) is 1.

【0048】attribute_len_size(S14)は2ビットで
あり、Javaクラスファイルの圧縮された各種の属性長の
1〜4バイトの長さを表す。図4の事例では各種の属性
長がm=4バイトの元のデータ(S15)を表し、m=[attribute
_len_size(S14)が表すデータ+1]が最低必要下位バイ
ト数(S17)である。ここで下位mバイトのみがそのまま符
号化(S18)され、圧縮データ(S19)は下位mバイトのデー
タである。上位n-mのバイトは0であるため、符号化する
必要がない。
Attribute_len_size (S14) is 2 bits and represents the length of 1 to 4 bytes of various compressed attribute lengths of the Java class file. In the example of FIG. 4, various attribute lengths represent original data (S15) with m = 4 bytes, and m = [attribute
The data +1] represented by _len_size (S14) is the minimum required lower byte number (S17). Here, only the lower m bytes are directly encoded (S18), and the compressed data (S19) is the lower m bytes of data. The upper nm byte is 0, so it does not need to be encoded.

【0049】2.プログラム圧縮形式の基本情報部4の
構造 基本情報部4(図2参照)は、data_comp(S6)が1の場
合のみ存在する。data_comp(S6)が0の場合、本形状は
非圧縮で圧縮実行ファイル格納部(S1)に格納する。図1
1は、図2のプログラム圧縮形式の基本情報部層4の詳
細構造を示す図である。
2. The structure of the basic information part 4 of the program compression format (see FIG. 2) exists only when data_comp (S6) is 1. When data_comp (S6) is 0, this shape is uncompressed and stored in the compression execution file storage unit (S1). Figure 1
FIG. 1 is a diagram showing a detailed structure of the basic information part layer 4 in the program compression format of FIG.

【0050】2.1 図12、図13に、図11のコン
スタントプール圧縮形式40の構造を示す。図12を参
照して、constant_pool_count(S30)は前記count_siz
e(S12)に従い、1バイトあるいは2バイトで圧縮を行
う。前記constant_pool_count(S30)の次にはconstant
_pool_count-1個のconstant_pool[ ](S32)情報が続
く。
2.1 FIGS. 12 and 13 show the structure of the constant pool compression format 40 of FIG. Referring to FIG. 12, constant_pool_count (S30) is the count_siz
According to e (S12), compression is performed with 1 byte or 2 bytes. The constant_pool_count (S30) is followed by constant
_Pool_count-1 constant_pool [] (S32) information follows.

【0051】前記constant_pool[ ]の種類にはCONSTAN
T_Class, CONSTANT_Fieldref, CONSTANT_Methodref,
CONSTANT_InterfaceMethodref, CONSTANT_String, C
ONSTANT_Integer, CONSTANT_Float, CONSTANT_Long,
CONSTANT_Double, CONSTANT_NameAndType, CONSTANT
_Utf8があり、それぞれの区別はtag(タグ)(S34)によ
り行う。前記タグの圧縮はタグに特化した固定ハフマン
表により圧縮を行う。ハフマンの固定表は、使用頻度の
高タグに短い符号を割り当て、使用頻度が小さくなるに
従い、より長い符号を割り当てる表である。
The type of the constant_pool [] is CONSTAN
T_Class, CONSTANT_Fieldref, CONSTANT_Methodref,
CONSTANT_InterfaceMethodref, CONSTANT_String, C
ONSTANT_Integer, CONSTANT_Float, CONSTANT_Long,
CONSTANT_Double, CONSTANT_NameAndType, CONSTANT
There is _Utf8, and each is distinguished by a tag (S34). The tag is compressed by a fixed Huffman table specialized for the tag. The Huffman fixed table is a table in which shorter codes are assigned to tags that are frequently used, and longer codes are assigned as the usage frequency decreases.

【0052】前記CONSTANT_Classの場合、前記constan
t_pool[ ]は、図13に示すように、前記タグ及びname
_index(S36)からなる。前記CONSTANT_Fieldrefの場
合、前記constant_pool[ ]は、前記タグ、class_inde
x(S38)、及びname_and_type_index(S40)からなる。
前記CONSTANT_Methodrefの場合、前記constant_pool
[ ]は、前記タグ、class_index(S38)、及びname_and
_type_index(S40)からなる。
In the case of CONSTANT_Class, the constan
As shown in FIG. 13, t_pool [] is the tag and name.
It consists of _index (S36). In the case of the CONSTANT_Fieldref, the constant_pool [] is the tag, class_inde
It consists of x (S38) and name_and_type_index (S40).
In the case of CONSTANT_Methodref, the constant_pool
[] Indicates the tag, class_index (S38), and name_and
It consists of _type_index (S40).

【0053】前記CONSTANT_InterfaceMethodrefの場
合、前記constant_pool[ ]は、前記タグ、class_inde
x(S38)、及びname_and_type_index(S40)からなる。
前記CONSTANT_Stringの場合、前記constant_pool[ ]
は、前記タグ及びstring_index(S42)からなる。前記CO
NSTANT_Integerの場合、前記constant_pool[ ]は、前
記タグ及び4バイト(S44)のデータからなる。
In the case of CONSTANT_InterfaceMethodref, the constant_pool [] is the tag, class_inde
It consists of x (S38) and name_and_type_index (S40).
In the case of CONSTANT_String, the constant_pool []
Consists of the tag and string_index (S42). CO
In the case of NSTANT_Integer, the constant_pool [] includes the tag and 4 bytes (S44) of data.

【0054】前記CONSTANT_Floatの場合、前記constan
t_pool[ ]は、前記タグ及び4バイト(S44)のデータから
なる。前記CONSTANT_Longの場合、前記constant_pool
[ ]は、前記タグ及び8バイト(S46)のデータからなる。
前記CONSTANT_Doubleの場合、前記constant_pool[ ]
は、前記タグ及び8バイト(S46)のデータからなる。
In the case of the CONSTANT_Float, the constan
t_pool [] consists of the tag and 4-byte data (S44). In the case of CONSTANT_Long, the constant_pool
[] Is composed of the tag and 8 bytes (S46) of data.
In the case of CONSTANT_Double, the constant_pool []
Consists of the tag and 8 bytes (S46) of data.

【0055】前記CONSTANT_NameAndTypeの場合、前記c
onstant_pool[ ]は、前記タグ、name_index(S48)、及
びdescriptor_index(S50)からなる。前記CONSTANT_Ut
f8の場合、前記constant_pool[ ]は、前記タグ、utf8
の文字列のlength(S52)、及びlength長のbytes[length]
の文字列からなる。前記name_index(S36)(S48)、class
_index(S38)、name_and_type_index(S40)、string
_index(S42)、descriptor_index(S50)は、前記コンス
タントプールconstant_pool[ ](S32)のインデックスで
あり、前記constant_pool_count(S30)より小さい値で
ある。よって、前記constant_pool_count(S30)を表す
最低ビット数により圧縮を行う。
In the case of CONSTANT_NameAndType, the above c
The onstant_pool [] includes the tag, name_index (S48), and descriptor_index (S50). CONSTANT_Ut
In the case of f8, the constant_pool [] is the tag, utf8
Length (S52) of the character string of, and bytes [length] of length length
It consists of the character string. The name_index (S36) (S48), class
_Index (S38), name_and_type_index (S40), string
_Index (S42) and descriptor_index (S50) are indexes of the constant pool constant_pool [] (S32), and are smaller than the constant_pool_count (S30). Therefore, compression is performed with the minimum number of bits representing the constant_pool_count (S30).

【0056】例えば、constant_pool_count(S30)が20
の場合、最低5ビットで表すことができ、5ビットにより
圧縮を行う。前記CONSTANT_Integer及び前記CONSTANT
_Floatのタグの、次の4バイト(S44)は、非圧縮の形式
で圧縮実行ファイル格納部22にそのまま格納される。
前記CONSTANT_Long及びCONSTANT_Doubleのタグの、次
の8バイト(S46)は、非圧縮の形式で前記圧縮実行ファ
イル格納部22にそのまま格納される。
For example, constant_pool_count (S30) is 20
In case of, it can be expressed by at least 5 bits, and compression is performed by 5 bits. The CONSTANT_Integer and the CONSTANT
The next 4 bytes (S44) of the _Float tag are stored in the compression execution file storage unit 22 as they are in an uncompressed format.
The next 8 bytes (S46) of the CONSTANT_Long and CONSTANT_Double tags are directly stored in the compression execution file storage unit 22 in an uncompressed format.

【0057】前記CONSTANT_Utf8のlength(S52)は、前
記utf8_len_size(S13)が表すビット数により圧縮を行
う。前記CONSTANT_Utf8は、前記 length(S52)及び文字
列を表す前記length(S52)個のバイト( bytes[] )より構
成され、前記length(S52)は前記コンスタントプール圧
縮形式に含まれ、前記 bytes[]は前記utf8部の情報であ
る。全ての前記CONSTANT_Utf8の前記 bytes[]は、前記
length(S52)、page_size(S235)及び(i)前記ページ数
が少なくなるアルゴリズム(図9、図10)、あるいは
(ii)ページの伸張頻度が少なくなるアルゴリズム(図示
せず)により、前記utf8部のページに割り当てられ、co
mpressed_utf8_page[ ](S263)に圧縮される。
The length (S52) of CONSTANT_Utf8 is compressed by the number of bits represented by utf8_len_size (S13). The CONSTANT_Utf8 is composed of the length (S52) and length (S52) bytes (bytes []) representing a character string, and the length (S52) is included in the constant pool compression format, and the bytes [] are included. Is the information of the utf8 part. All the bytes [] of CONSTANT_Utf8 are
length (S52), page_size (S235) and (i) Algorithm for reducing the number of pages (FIGS. 9 and 10), or
(ii) Assigned to the page of the utf8 section by an algorithm (not shown) that reduces the page expansion frequency,
It is compressed to mpressed_utf8_page [] (S263).

【0058】2.2 access_flags(S27) はクラスフ
ァイルアクセスフラグに特化した固定ハフマン表により
圧縮を行う。ハフマンの固定表は、使用頻度の高アクセ
スフラグに短い符号を割り当て、使用頻度が小さくなる
に従い、より長い符号を割り当てる表である。 2.3 this_class(S28)は、前記コンスタントプール
constant_pool[ ](S32)のインデックスであり、前記co
nstant_pool_count(S30)より小さい値である。よっ
て、this_class(S28)の下位|log2 constant_pool_c
ount(S30)|ビットのみを符号化し、圧縮を行う(|
|は整数への丸め上げを表す。以下同じ)。例えば、図
4と同様にconstant_pool_countが20の場合、最低5ビ
ットで表すことができ、下位5ビットのみを符号化し、
圧縮を行う。
2.2 access_flags (S27) performs compression using a fixed Huffman table specialized for class file access flags. The Huffman fixed table is a table in which shorter codes are assigned to high-use access flags and longer codes are assigned as the use frequency decreases. 2.3 this_class (S28) is the constant pool
index of constant_pool [] (S32),
It is a value smaller than nstant_pool_count (S30). Therefore, lower level of this_class (S28) | log 2 constant_pool_c
ount (S30) | encodes only bits and compresses (|
| Represents rounding up to an integer. same as below). For example, if constant_pool_count is 20 as in FIG. 4, it can be represented by at least 5 bits, and only the lower 5 bits are encoded,
Perform compression.

【0059】2.4 super_class(S29)は、前記コン
スタントプールconstant_pool[ ](S32)のインデックス
であり、前記constant_pool_count(S30)より小さい値
である。よって、super_class(S28)の下位|log2 cons
tant_pool_count(S30)|ビットのみを符号化し、圧縮
を行う。例えば、図4と同様にconstant_pool_count
が20の場合、最低5ビットで表すことができ、下位5ビッ
トのみを符号化し、圧縮を行う。
2.4 super_class (S29) is an index of the constant pool constant_pool [] (S32), and is a value smaller than the constant_pool_count (S30). Therefore, lower than super_class (S28) | log 2 cons
tant_pool_count (S30) | Only bits are encoded and compressed. For example, similar to Figure 4, constant_pool_count
If is 20, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed.

【0060】2.5 図14に図11に対するインタフ
ェース圧縮形式42の詳細構造を示す。図14を参照し
て、interfaces_count(S60)は、前記count_size(S12)
に従い、1バイトあるいは2バイトで圧縮を行う。前記
interfaces_count(S60)の次の、全てのinterfaces_co
unt個のinterfaces[ ](S62)は、前記コンスタントプー
ルconstant_pool[ ](S32)のインデックスであり、前記
constant_pool_count(S30)より小さい値である。よっ
て、interfaces[ ](S62)の下位|log2 constant_pool
_count(S30)|ビットのみを符号化し、圧縮を行う。例
えば、図4と同様にconstant_pool_countが20の場
合、最低5ビットで表すことができ、下位5ビットのみを
符号化し、圧縮を行う。
2.5 FIG. 14 shows the detailed structure of the interface compression format 42 for FIG. Referring to FIG. 14, interfaces_count (S60) is the above count_size (S12).
According to this, compression is performed with 1 byte or 2 bytes. The above
Next to interfaces_count (S60), all interfaces_co
The unt interfaces [] (S62) are indexes of the constant pool constant_pool [] (S32), and
It is a value smaller than constant_pool_count (S30). Therefore, lower level of interfaces [] (S62) | log 2 constant_pool
_Count (S30) | Only bits are encoded and compressed. For example, when constant_pool_count is 20 as in FIG. 4, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed.

【0061】2.6 図15、図16に図11に対する
フィールド圧縮形式44の詳細を示す。図15におい
て、fields_count(S64)は前記count_size(S12)(0又
は1)に従い、1バイトあるいは2バイトで圧縮され
る。前記fields_count(S64)の次には、fields_count
個のfields[ ](S66)情報が続く。
2.6 FIG. 15 and FIG. 16 show details of the field compression format 44 for FIG. In FIG. 15, fields_count (S64) is compressed by 1 byte or 2 bytes according to the count_size (S12) (0 or 1). Next to the fields_count (S64), fields_count
Fields [] (S66) information follows.

【0062】fields[ ]は、access_flags(S68), name
_index(S70), descriptor_index(S72), attributes_
count(S74), 及びattributes_count個のattributes[ ]
(S76)からなる。フィールドの前記attributes[ ](S76)
の属性として、ConstantValue、Synthetic、及びDeprec
atedが定義されている。図16を参照して、ConstantVal
ueは、attribute_name_index(S78)、attribute_leng
th(S79)、及びconstant_value_index(S80)からなる。
Fields [] are access_flags (S68), name
_Index (S70), descriptor_index (S72), attributes_
count (S74), and attributes_count attributes []
(S76). Field attributes [] (S76)
ConstantValue, Synthetic, and Deprec as attributes of
ated is defined. Referring to FIG. 16, ConstantVal
ue is attribute_name_index (S78), attribute_leng
It consists of th (S79) and constant_value_index (S80).

【0063】Synthetic及びDeprecatedは、attribute_
name_index(S81)及びattribute_length(S82)からな
る。ConstantValue、Synthetic、Deprecated以外のその
他属性の場合、attribute_name_index(S83)、attribu
te_length(S84)、及びattribute_length個のバイト(S
85)からなる。前記attribute_name_index(S78)(S81)
(S83)は、前記コンスタントプールconstant_pool[ ](S
32)のインデックスであり、前記ConstantValue,、前記S
ynthetic、前記Deprecated、あるいは前記その他属性の
属性名を指定し、図17の属性名に特化した固定ハフマ
ン表により圧縮される。前記attribute_name_index(S
78)が前記ConstantValueである場合、(S78)にはConstan
tValueのハフマンコード(S88)が格納される。前記attri
bute_name_index(S81)が前記Syntheticである場合、
(S81)にはSyntheticのハフマンコード(S92)が格納され
る。前記attribute_name_index(S81)が前記Deprecate
dである場合、(S81)にはDeprecatedのハフマンコード(S
95)が格納される。前記attribute_name_index(S83)が
前記その他属性(S96)の場合、固定ハフマン表ではエス
ケープコード(S97)が出力され、次に前記attribute_na
me_indexの圧縮情報(S98)が出力される。この場合、前
記attribute_name_indexの下位|log2 constant_poo
l_count(S30)|ビットのみを符号化し、圧縮を行う。
例えば、図4を参照してconstant_pool_countが20の
場合、最低5ビットで表すことができ、下位5ビットのみ
を符号化し、圧縮を行う。
Synthetic and Deprecated are attribute_
It consists of name_index (S81) and attribute_length (S82). For other attributes than ConstantValue, Synthetic, and Deprecated, attribute_name_index (S83), attribu
te_length (S84) and attribute_length bytes (S
85). The attribute_name_index (S78) (S81)
(S83) is the constant pool constant_pool [] (S
32) index, the Constant Value, and the S
An attribute name of ynthetic, the Deprecated, or the other attribute is specified, and the fixed Huffman table specialized in the attribute name of FIG. 17 is used for compression. The attribute_name_index (S
If (78) is the Constant Value, (S78) is a Constant
The Huffman code (S88) of tValue is stored. Said attri
If bute_name_index (S81) is the Synthetic,
A Huffman code of Synthetic (S92) is stored in (S81). The attribute_name_index (S81) is the Deprecate
If it is d, (S81) contains the Deprecated Huffman code (S
95) is stored. When the attribute_name_index (S83) is the other attribute (S96), an escape code (S97) is output in the fixed Huffman table, and then the attribute_na
The compression information (S98) of me_index is output. In this case, lower than attribute_name_index | log 2 constant_poo
l_count (S30) | Only bits are encoded and compressed.
For example, referring to FIG. 4, when constant_pool_count is 20, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed.

【0064】前記access_flags(S68)は、フィールドア
クセスフラグに特化した固定ハフマン表により圧縮を行
う。前記name_index(S70)、前記constant_value_ind
ex(S80)、及び前記descriptor_index(S72)は、前記コ
ンスタントプールconstant_pool[ ](S32)のインデック
スであり、前記constant_pool_count(S30)より小さい
値である。よって、name_index(S70)の下位|log2 con
stant_pool_count(S30)|ビットのみを符号化し、圧
縮を行う。例えば、図4と同様にconstant_pool_coun
tが20の場合、最低5ビットで表すことができ、下位5ビ
ットのみを符号化し、圧縮を行う。
The access_flags (S68) performs compression using a fixed Huffman table specialized for field access flags. The name_index (S70), the constant_value_ind
ex (S80) and the descriptor_index (S72) are indexes of the constant pool constant_pool [] (S32), and are smaller than the constant_pool_count (S30). Therefore, the lower part of name_index (S70) | log 2 con
stant_pool_count (S30) | Only bits are encoded and compressed. For example, similar to Fig. 4, constant_pool_coun
When t is 20, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed.

【0065】前記attributes_count(S74)は、前記coun
t_size(S12)に従い、1バイトあるいは2バイトで圧縮
を行う。前記attribute_length(S79)(S82)(S84)は、前
記attribute_len_size(S14)に従い、1、2、3、4バイ
トで圧縮される。その他属性の前記attribute_length
個のバイト(S85)は、非圧縮で前記圧縮実行ファイル格
納部に格納する。
The attributes_count (S74) is the coun
According to t_size (S12), compression is performed with 1 byte or 2 bytes. The attribute_length (S79) (S82) (S84) is compressed by 1, 2, 3, 4 bytes according to the attribute_len_size (S14). Other attribute's attribute_length
The number of bytes (S85) is stored in the compression execution file storage unit without being compressed.

【0066】2.7 図18は図11に対するメソッド
(サブルーチン)圧縮形式46の詳細を示す図である。
methods_count(S100)は、前記count_size(S12)に従
い、1バイトあるいは2バイトで圧縮を行う。前記meth
ods_count(S100)の次にはmethods_count個のmethods
[ ](S102)情報が続く。
2.7 FIG. 18 is a diagram showing details of the method (subroutine) compression format 46 for FIG.
The methods_count (S100) performs compression with 1 byte or 2 bytes according to the count_size (S12). The meth
ods_count (S100) is followed by methods_count methods
[] (S102) Information follows.

【0067】methods[ ]は、access_flags(S104), nam
e_index(S106), descriptor_index(S108), attribute
s_count(S110), 及びattributes_count個のattribute
s[ ](S112)からなる。前記access_flags(S104)はメソ
ッド(サブルーチン)アクセスフラグに特化した固定ハ
フマン表により圧縮を行う。ハフマンの固定表は使用頻
度の高アクセスフラグに短い符号を割り当て、使用頻度
が小さくなるに従い、より長い符号を割り当てる表であ
る。
Methods [] is access_flags (S104), nam
e_index (S106), descriptor_index (S108), attribute
s_count (S110), and attributes_count attributes
It consists of s [] (S112). The access_flags (S104) performs compression using a fixed Huffman table specialized for method (subroutine) access flags. The Huffman fixed table is a table in which short codes are assigned to frequently used access flags, and longer codes are assigned as the usage frequency becomes smaller.

【0068】フィールドの前記attributes[ ]の属性と
して、Code、Exceptions、Synthetic、及びDeprecated
が定義されている。前記Codeの場合、図19に示すよう
に、attributes圧縮形式は、attribute_name_index(S
114)、attribute_length(S116)、max_stack(S118)、m
ax_locals(S120)、code_length(S122)、code_length
バイト長のcode[ ]、exception_table_length(S12
4)、exception_table_length 個のexception_table
[ ](S126)、attributes_count(S136)、及びattributes
_count個のattributes[ ](S138)からなる。
As attributes of the attributes [] of the field, Code, Exceptions, Synthetic, and Deprecated
Is defined. In the case of the code, as shown in FIG. 19, the compression format of attributes is attribute_name_index (S
114), attribute_length (S116), max_stack (S118), m
ax_locals (S120), code_length (S122), code_length
Byte length code [], exception_table_length (S12
4), exception_table_length exception_table
[] (S126), attributes_count (S136), and attributes
It consists of _count attributes [] (S138).

【0069】前記code[ ]が実際の命令であり、前記メ
ソッド部8の情報である。前記code[]は、前記code_le
ngth(S122)、page_size(S235)及び(i)前記ページ数が
少なくなるアルゴリズム(図9、図10)あるいは(ii)
前記ページの伸張頻度が少なくなるアルゴリズム(図示
せず)により前記メソッド部のページに割り当てられ、
compressed_method_page[ ](S266)に圧縮される。前
記exception_table[ ](126)はstart_pc(S128)、end_
pc(S130)、handler_pc(S132)、catch_type(S134)から
なる。
The code [] is the actual command and the information of the method section 8. The code [] is the code_le
ngth (S122), page_size (S235) and (i) Algorithm for reducing the number of pages (FIGS. 9 and 10) or (ii)
It is assigned to the page of the method section by an algorithm (not shown) that reduces the expansion frequency of the page,
compressed_method_page [] (S266). The exception_table [] (126) is start_pc (S128), end_
It consists of pc (S130), handler_pc (S132), and catch_type (S134).

【0070】前記codeのattributes[ ]の属性として、
図21に示すLineNumberTable及びLocalVariableTable
が定義される。前記LineNumberTableの場合は、attribu
tes圧縮形式は、attribute_name_index(S160)、attri
bute_length(S162)、line_number_table_length(S1
64)、及びline_number_table_length個のline_numb
er_table[ ](S166)である。前記line_number_table
[ ] (S166)は、start_pc(S168)及びline_number(S17
0)からなる。
As an attribute of attributes [] of the code,
LineNumberTable and LocalVariableTable shown in FIG.
Is defined. In the case of the LineNumberTable, attribu
tes compression format is attribute_name_index (S160), attri
bute_length (S162), line_number_table_length (S1
64), and line_number_table_length line_numb
er_table [] (S166). The line_number_table
[] (S166) is start_pc (S168) and line_number (S17)
It consists of 0).

【0071】前記LocalVariableTableの場合は、attrib
utes圧縮形式は、attribute_name_index(S172)、attr
ibute_length(S174)、local_variable_table_lengt
h(S176)、及びlocal_variable_table_length個のloc
al_variable_table[ ](S178)である。前記local_var
iable_table[ ] (S178)は、start_pc(S180)、length
(S182)、name_index(S184)、descriptor_index(S18
6)、及びindex(S188)からなる。
In the case of the above LocalVariableTable, attrib
utes compression format is attribute_name_index (S172), attr
ibute_length (S174), local_variable_table_lengt
h (S176) and local_variable_table_length locs
al_variable_table [] (S178). The local_var
iable_table [] (S178) is start_pc (S180), length
(S182), name_index (S184), descriptor_index (S18
6) and index (S188).

【0072】前記Exceptionsの場合は、図20に示すよ
うに、attributes圧縮形式は、attribute_name_index
(S140)、attribute_length(S142)、number_of_excep
tions(S144)、及びnumber_of_exceptions個のexcepti
on_index_table[ ](S146)である。前記Synthetic又は
Deprecatedの場合は、attributes圧縮形式は、attribut
e_name_index(S148)及びattribute_length(S150)か
らなる。
In the case of the Exceptions, as shown in FIG. 20, the attributes compression format is attribute_name_index.
(S140), attribute_length (S142), number_of_excep
tions (S144) and number_of_exceptions exceptions
on_index_table [] (S146). The Synthetic or
For Deprecated, the attributes compression format is attribut
It consists of e_name_index (S148) and attribute_length (S150).

【0073】前記Code、前記Exceptions、前記LineNumb
erTable、前記LocalVariablTable、前記Synthetic、及
び前記Deprecated以外のその他属性の場合、attributes
圧縮形式は、attribute_name_index(S152)、attribut
e_length(S154)、及びattribute_length個のバイト(S
156)からなる。前記attribute_name_index(S114)(S14
0)(S148)(S152)(S160)(S172) (S190)は、前記コンスタ
ントプールconstant_pool[ ](S32)のインデックスであ
り、前記Code,、前記Exceptions、前記LineNumberTabl
e、前記LocalVariablTable、前記Synthetic、前記Depre
cated、あるい前記その他属性の属性名を指定し、図1
7の属性名に特化した固定ハフマン表により圧縮され
る。前記attribute_name_indexが前記Codeである場
合、attribute_name_index (S114)にはCodeのハフマ
ンコード(S89)が格納される。前記attribute_name_in
dex(S140)が前記Exceptionsである場合、attribute_na
me_index (S140)にはExceptionsのハフマンコード(S9
0)が格納される。前記attribute_name_index(S160)が
前記LineNumberTableである場合、attribute_name_in
dex (S160)にはLineNumberTableのハフマンコード(S93)
が格納される。前記attribute_name_index(S172)が前
記LocalVariableTableである場合、attribute_name_i
ndex (S172)にはLocalVariableTableのハフマンコード
(S94)が格納される。前記attribute_name_index(S14
8)が前記Syntheticである場合、attribute_name_inde
x (S148)にはSyntheticのハフマンコード(S92)が格納さ
れる。前記attribute_name_index(S148)が前記Deprec
atedである場合、attribute_name_index (S148)にはD
eprecatedのハフマンコード(S95)が格納される。前記at
tribute_name_indexが前記その他属性(S96)の場合、
固定ハフマン表ではエスケープコード(S97)が出力され
次に前記attribute_name_indexの圧縮情報(S98)が出
力される。この場合、前記attribute_name_index の
下位|log2 constant_pool_count(S30)|ビットのみ
を符号化し、圧縮を行う。例えば、図4と同様にconsta
nt_pool_countが20の場合、最低5ビットで表すことが
でき、下位5ビットのみを符号化し、圧縮を行う。
Code, Exceptions, LineNumb
For other attributes than erTable, LocalVariablTable, Synthetic, and Deprecated, attributes
The compression format is attribute_name_index (S152), attribute
e_length (S154), and attribute_length bytes (S
156). The attribute_name_index (S114) (S14
0) (S148) (S152) (S160) (S172) (S190) is an index of the constant pool constant_pool [] (S32), and the Code, the Exceptions, and the LineNumberTabl
e, the LocalVariablTable, the Synthetic, the Depre
Specify the attribute name of cated, or the other attributes, and click
It is compressed by a fixed Huffman table specialized for 7 attribute names. When the attribute_name_index is the Code, the Huffman code (S89) of the Code is stored in the attribute_name_index (S114). The attribute_name_in
If dex (S140) is the Exceptions, attribute_na
Exceptions Huffman code (S9
0) is stored. If the attribute_name_index (S160) is the LineNumberTable, attribute_name_in
Huffman code (S93) of LineNumberTable in dex (S160)
Is stored. If the attribute_name_index (S172) is the LocalVariableTable, attribute_name_i
Huffman code of LocalVariableTable in ndex (S172)
(S94) is stored. The attribute_name_index (S14
8) is the Synthetic, attribute_name_inde
The Synthetic Huffman code (S92) is stored in x (S148). The attribute_name_index (S148) is the Deprec
If it is ated, the attribute_name_index (S148) is D
The eprecated Huffman code (S95) is stored. Said at
If tribute_name_index is the other attribute (S96),
In the fixed Huffman table, the escape code (S97) is output, and then the compression information (S98) of the attribute_name_index is output. In this case, only the lower | log 2 constant_pool_count (S30) | bits of the attribute_name_index are encoded and compressed. For example, as in Figure 4, consta
When nt_pool_count is 20, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed.

【0074】前記name_index(S106)(S184)、前記descr
iptor_index(S108)(S186)、前記catch_type(S134)、
及び全ての前記exception_index_table[](S146)は、
前記コンスタントプールconstant_pool[ ](S32)のイン
デックスであり、前記constant_pool_count(S30)より
小さい値である。よって、前記name_index(S106)(S18
4)、前記descriptor_index(S108)(S186)、前記catch_
type(S134)、及び全ての前記exception_index_tabl
e[](S146)の下位|log2 constant_pool_count(S30)|
ビットのみを符号化し、圧縮を行う。例えば、図4と同
様にconstant_pool_countが20の場合、最低5ビットで
表すことができ、下位5ビットのみを符号化し、圧縮を
行う。
The name_index (S106) (S184), the descr
iptor_index (S108) (S186), the catch_type (S134),
And all the exception_index_table [] (S146)
It is an index of the constant pool constant_pool [] (S32) and is smaller than the constant_pool_count (S30). Therefore, the name_index (S106) (S18
4), the descriptor_index (S108) (S186), the catch_
type (S134), and all the exception_index_tabl
Lower level of e [] (S146) | log 2 constant_pool_count (S30) |
Only bits are encoded and compressed. For example, when constant_pool_count is 20 as in FIG. 4, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed.

【0075】前記attributes_count(S110)(S136)、前
記max_stack(S118)、前記max_locals(S120)、前記cod
e_length(S122)、前記exception_table_length(S12
4)、前記line_number_table_length(S164)、及び前
記local_variable_table_length(S176)は、前記coun
t_size(S12)に従い、1バイトあるいは2バイトで圧縮
を行う。前記attribute_length(S116)(S142)(S150)(S1
54)(S162)(S174)(S192)は、前記attribute_len_size
(S14)に従い、1、2、3、4バイトの何れかで圧縮され
る。
The attributes_count (S110) (S136), the max_stack (S118), the max_locals (S120), the cod
e_length (S122), the exception_table_length (S12
4), the line_number_table_length (S164), and the local_variable_table_length (S176) are the coun
According to t_size (S12), compression is performed with 1 byte or 2 bytes. The attribute_length (S116) (S142) (S150) (S1
54) (S162) (S174) (S192) is the attribute_len_size
According to (S14), it is compressed with any of 1, 2, 3, or 4 bytes.

【0076】前記その他属性の前記attribute_length
個のバイト(S156)(S194)は、非圧縮で前記圧縮実行ファ
イル格納部に格納する。前記code_length(S122)は、前
記attribute_length(S116)を表す最低ビット数により
圧縮される。前記start_pc(S128)(S168)、前記length
(S182) 、前記end_pc(S130)(S182)、及び前記handler
_pc(S132)は、下位|log2 code_length(S122)|ビッ
トのみを符号化し、圧縮を行う。例えば、図4と同様に
code_lengthが20の場合、最低5ビットで表すことがで
き、下位5ビットのみを符号化し、圧縮を行う。
The attribute_length of the other attribute
The bytes (S156) (S194) are stored in the compression execution file storage unit without being compressed. The code_length (S122) is compressed by the minimum number of bits representing the attribute_length (S116). Start_pc (S128) (S168), length
(S182), the end_pc (S130) (S182), and the handler
_Pc (S132) encodes only the lower | log 2 code_length (S122) | bits and performs compression. For example, as in Figure 4,
When code_length is 20, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed.

【0077】前記line_number(S170)の16ビットは、非
圧縮の形式で前記圧縮実行ファイル格納部に格納する。
前記index(S188)は、前記max_locals(S120)を表す最低
ビットにより圧縮を行う。例えば、max_localsが20の
場合、最低5ビットで表すことができ、5ビットにより圧
縮を行う。 2.8 図22は図11に対する属性圧縮形式48の詳
細図である。
The 16 bits of the line_number (S170) are stored in the compression execution file storage unit in an uncompressed format.
The index (S188) is compressed by the lowest bit representing the max_locals (S120). For example, when max_locals is 20, it can be represented by at least 5 bits, and compression is performed by 5 bits. 2.8 FIG. 22 is a detailed diagram of the attribute compression format 48 for FIG.

【0078】属性には、SourceFile、InnerClasses、及
びDeprecatedがある。前記SourceFileの場合、その属性
の圧縮形式48は、attribute_name_index(S200)、at
tribute_length(S202)、及びsourcefile_index(S204)
からなる。前記InnerClassesの場合は、その属性の圧縮
形式48は、attribute_name_index(S206)、attribut
e_length(S208)、number_of_classes(S210)、及びnu
mber_of_classes個のclasses[ ](S212)からなる。
Attributes include SourceFile, InnerClasses, and Deprecated. In the case of the SourceFile, the compression format 48 of the attribute is attribute_name_index (S200), at
tribute_length (S202) and sourcefile_index (S204)
Consists of. In the case of Inner Classes, the compression format 48 of the attribute is attribute_name_index (S206), attribute
e_length (S208), number_of_classes (S210), and nu
It consists of mber_of_classes classes [] (S212).

【0079】前記classes[ ]は、inner_class_info_
index(S214)、outer_class_info_index(S216)、inne
r_class_name_index(S218)、inner_class_access
_flag(S220)からなる。前記Deprecatedの場合は、その
属性の圧縮形式48は、attribute_name_index(S222)
及びattribute_length(S224)からなる。前記SourceFil
e、前記InnerClasses、及び前記Deprecated以外のその
他属性の場合、その属性の圧縮形式48は、attribute
_name_index(S226)、attribute_length(S228)、及び
attribute_length個のバイト(S230)からなる。
The classes [] are inner_class_info_
index (S214), outer_class_info_index (S216), inne
r_class_name_index (S218), inner_class_access
_Flag (S220). In the case of Deprecated, the compression format 48 of the attribute is attribute_name_index (S222)
And attribute_length (S224). Source Fil
For other attributes than e, the InnerClasses, and the Deprecated, the compression format 48 of the attribute is attribute
_Name_index (S226), attribute_length (S228), and
It consists of attribute_length bytes (S230).

【0080】前記attribute_name_index(S200)(S206)
(S222)(S226)は前記コンスタントプールconstant_pool
[ ](S32)のインデックスであり、前記SourceFile,、前
記InnerClasses、前記Deprecated、あるい前記その他属
性の属性名を指定し、図17の属性名に特化した固定ハ
フマン表により圧縮される。前記attribute_name_ind
exが前記SourceFileである場合、attribute_name_ind
ex (S200)にはSourceFileのハフマンコード(S87)が格納
される。前記attribute_name_index(S206)が前記Inne
rClassesである場合、attribute_name_index (S206)
にはInnerClassesのハフマンコード(S91)が格納され
る。前記attribute_name_index(S222)が前記Deprecat
edである場合、attribute_name_index (S222)にはDep
recatedのハフマンコード(S95)が格納される。前記attr
ibute_name_indexが前記その他属性(S96)の場合、固
定ハフマン表ではエスケープコード(S97)が出力され次
に前記attribute_name_indexの圧縮情報(S98)が出力
される。この場合、前記attribute_name_indexの圧縮
は下位|log2 constant_pool_count(S30)|ビットの
みを符号化し、圧縮を行う。例えば、図4と同様にcons
tant_pool_countが20の場合、最低5ビットで表すこと
ができ、下位5ビットのみを符号化し、圧縮を行う。
The attribute_name_index (S200) (S206)
(S222) and (S226) are the constant pool constant_pool
It is an index of [] (S32), the attribute name of the SourceFile, the InnerClasses, the Deprecated, or the other attribute is designated, and is compressed by the fixed Huffman table specialized in the attribute name of FIG. The attribute_name_ind
When ex is the above SourceFile, attribute_name_ind
The Huffman code (S87) of SourceFile is stored in ex (S200). The attribute_name_index (S206) is the Inne
If rClasses, attribute_name_index (S206)
The Huffman code (S91) of Inner Classes is stored in. The attribute_name_index (S222) is the Deprecat
If it is ed, attribute_name_index (S222) has Dep
The Huffman code (S95) of recated is stored. The attr
When ibute_name_index is the other attribute (S96), the escape code (S97) is output in the fixed Huffman table, and then the compression information (S98) of the attribute_name_index is output. In this case, the compression of the attribute_name_index is performed by encoding only the lower | log 2 constant_pool_count (S30) | bits. For example, cons
When tant_pool_count is 20, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed.

【0081】前記attribute_length(S202)(S208)(S22
4)(S228)は、前記attribute_len_size(S14)に従い、
1、2、3、又は4バイトで圧縮される。前記sourcefile_
index(S204)、前記inner_class_info_index(S214)、
前記outer_class_info_index(S216)、及び前記inner
_class_name_index(S218)は、前記コンスタントプー
ルconstant_pool[ ](S32)のインデックスであり、前記
constant_pool_count(S30)より小さい値である。よっ
て、下位|log2 constant_pool_count(S30)|ビット
のみを符号化し、圧縮を行う。例えば、図4と同様にco
nstant_pool_countが20の場合、最低5ビットで表すこ
とができ、下位5ビットのみを符号化し、圧縮を行う。
The attribute_length (S202) (S208) (S22
4) (S228) is based on the attribute_len_size (S14)
It is compressed with 1, 2, 3, or 4 bytes. Sourcefile_
index (S204), the inner_class_info_index (S214),
The outer_class_info_index (S216) and the inner
_Class_name_index (S218) is an index of the constant pool constant_pool [] (S32), and
It is a value smaller than constant_pool_count (S30). Therefore, only the lower | log 2 constant_pool_count (S30) | bits are encoded and compressed. For example, co
When nstant_pool_count is 20, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed.

【0082】前記number_of_classes(S210)は、前記c
ount_size(S12)に従い、1バイトあるいは2バイトで
圧縮を行う。前記inner_class_access_flag(S220)
は、クラスファイルアクセスフラグに特化した固定ハフ
マン表により圧縮を行う。ハフマンの固定表は使用頻度
の高アクセスフラグに短い符号を割り当て、使用頻度が
小さくなるに従い、より長い符号を割り当てる表であ
る。
The number_of_classes (S210) is the c
According to ount_size (S12), compression is performed with 1 byte or 2 bytes. Inner_class_access_flag (S220)
Compresses using a fixed Huffman table specialized for class file access flags. The Huffman fixed table is a table in which short codes are assigned to frequently used access flags, and longer codes are assigned as the usage frequency becomes smaller.

【0083】3.1プログラム圧縮形式のutf8(デー
タ)、メソッド(サブルーチン)のページサイズ圧縮形
式の形状 本「プログラム圧縮形式のutf8(データ)、メソッド
(サブルーチン)のページサイズ圧縮形式の形状」は、
page_part(S7)が0ではない場合のみ存在する。図23
は、図2に示したutf8(データ)、メソッド(サブルー
チン)の「ページ表」5を示す図である。utf8(デー
タ)に対する部分は、data_comp(S6)が1の場合のみ存
在する。
3.1 Program compression format utf8 (data), method (subroutine) page size compression format shape This book "Program compression format utf8 (data), method (subroutine) page size compression format" is ,
It exists only when page_part (S7) is not 0. FIG. 23
[Fig. 3] is a diagram showing "page table" 5 of utf8 (data) and method (subroutine) shown in Fig. 2. The part for utf8 (data) exists only when data_comp (S6) is 1.

【0084】page_size_type(S8)が0の場合(請求項
3)、page_size(S235)は16ビットであり、0〜65535バ
イトまでのページサイズをそのまま表す。page_size_
type(S8)が1の場合(請求項4)、page_size(S235)は
前記utf8(データ)及び前記メソッドのページのサイズ
であり、3ビットにより選択を行う。よって、本圧縮形
式では8種類までのページサイズが選択可能であり、25
6,512, 1024, 2048, 4096, 8192, 16384, 32768バイト
のページサイズが選択可能である。page_size=2^(8+[3
ビットの圧縮データ])となる。ここで「^」は、べき乗
を表す。
When page_size_type (S8) is 0 (claim 3), page_size (S235) is 16 bits and represents the page size from 0 to 65535 bytes as it is. page_size_
When type (S8) is 1 (claim 4), page_size (S235) is the page size of the utf8 (data) and the method, and is selected by 3 bits. Therefore, up to 8 page sizes can be selected in this compression format.
A page size of 6,512, 1024, 2048, 4096, 8192, 16384, 32768 bytes can be selected. page_size = 2 ^ (8+ [3
Bit compressed data]). Here, "^" represents exponentiation.

【0085】number_of_utf8(S236)は、前記constant
_pool[ ](S32)中の前記CONSTANT_Utf8であり、utf8_
seq[](S237)は、utf8(データ)をページに分割する際
の前記constant_pool[ ](S32)中のutf8(データ)の順
番を表す。前記utf8_seq[]の前記constant_pool[ ]の
インデックスは、|log2 number_of_utf8|ビットで
圧縮を行う。method_seq[](S239)は、メソッド(サブ
ルーチン)をページに分割する際の前記methods[](S10
2)中のメソッド(サブルーチン)の順番を表す。前記me
thod_seq[]の前記methods[ ](S102)のインデックス
は、|log2 methods_count(S102)|ビットで圧縮を行
う。
Number_of_utf8 (S236) is the constant
CONSTANT_Utf8 in _pool [] (S32), utf8_
seq [] (S237) represents the order of utf8 (data) in the constant_pool [] (S32) when dividing utf8 (data) into pages. The index of the constant_pool [] of the utf8_seq [] is compressed by | log 2 number_of_utf8 | bits. method_seq [] (S239) is the method [] (S10) when dividing the method (subroutine) into pages.
Indicates the order of methods (subroutines) in 2). The me
The index of methods [] (S102) of thod_seq [] is compressed by | log 2 methods_count (S102) | bits.

【0086】前記utf8_seq[](S237)及び前記method_s
eq[](S239)は、sort_type(S9)が1の場合(請求項9)、
ページに分割されるutf8(データ)及びメソッド(サブ
ルーチン)の順番は、メソッド(サブルーチン)の実行
結果に依存する。sort_type(S9)が0の場合(請求項
8)、ページに分割されるutf8(データ)及びメソッド
(サブルーチン)の順番は、前記基本情報部の情報のみ
により求めることができるため、前記utf8_seq[](S23
7)及び前記method_seq[](S239)は存在しない。
The utf8_seq [] (S237) and the method_s
If sort_type (S9) is 1 in eq [] (S239) (claim 9),
The order of utf8 (data) and method (subroutine) divided into pages depends on the execution result of the method (subroutine). If sort_type (S9) is 0 (Claim 8), the order of utf8 (data) and method (subroutine) divided into pages can be obtained only by the information in the basic information section, and thus the utf8_seq [] (S23
7) and the method_seq [] (S239) do not exist.

【0087】各前記CONSTANT_Utf8のlength(S52)及び
各前記code_length(S122)は、可変であり、各ページは
最大の前記utf8(データ)個数、あるいは最大の前記メ
ソッド(サブルーチン)の個数を含む。前記CONSTANT_
Utf8のlengthあるいは各前記code_lengthが前記page_
sizeより大きい場合、複数のページに分割される。ペー
ジの圧縮率が優先の際、ページ数が少なくなるページ割
り当てアルゴリズム(図9、図10参照)により、utf8
(データ)あるいはメソッド(サブルーチン)をページ
に割り当てる。
The length (S52) of each CONSTANT_Utf8 and each code_length (S122) are variable, and each page includes the maximum number of the utf8 (data) or the maximum number of the method (subroutine). CONSTANT_
Utf8 length or each code_length is page_
If it is larger than size, it is divided into multiple pages. When the page compression rate is prioritized, the page allocation algorithm (see FIGS. 9 and 10) that reduces the number of pages causes utf8
Assign (data) or method (subroutine) to the page.

【0088】圧縮したページの伸張時間が優先の際、ペ
ージの伸張頻度が少なくなるページ割り当てアルゴリズ
ム(図示せず)により、utf8(データ)あるいはメソッ
ド(サブルーチン)をページに割り当てる。number_of
_utf8_page(S242)はutf8(データ)のページ数であ
り、前記CONSTANT_Utf8のlength(S52)、前記page_siz
e、page_part(S7)、sort_type(S9)、及びutf8_seq[]
により、求める。
When the decompression time of the compressed page is prioritized, utf8 (data) or method (subroutine) is allocated to the page by a page allocation algorithm (not shown) that reduces the frequency of page expansion. number_of
_Utf8_page (S242) is the number of pages of utf8 (data), length (S52) of CONSTANT_Utf8, page_siz
e, page_part (S7), sort_type (S9), and utf8_seq []
Ask.

【0089】number_of_method_page(S246)は、メソ
ッド(サブルーチン)のページ数であり、前記code_le
ngth、前記page_size、page_part(S7)、sort_type(S
9)、及びmethod_seq[]により、求める。各number_of
_utf8_pageのcompressed_utf8_page_size[ ](S24
4)は、全ての圧縮されたutf8(データ)ページのサイズ
の表である。各number_of_method_pageのcompressed
_method_page_size[ ](S248)は、全ての圧縮された
メソッド(サブルーチン)のページのサイズの表であ
る。
Number_of_method_page (S246) is the number of pages of the method (subroutine), and the code_le
ngth, the page_size, page_part (S7), sort_type (S
9) and method_seq []. Each number_of
_Utf8_page compressed_utf8_page_size [] (S24
4) is a table of sizes of all compressed utf8 (data) pages. Compressed for each number_of_method_page
_Method_page_size [] (S248) is a table of page sizes of all compressed methods (subroutines).

【0090】全ての前記compressed_utf8_page_size
[ ]及び前記compressed_method_page_size[ ]は、lo
g2 pagesize のビットで圧縮を行う。本発明ではクラ
スファイルの実行時、クラスファイル全体を伸張するこ
となく、実行するメソッド(サブルーチン)及びutf8
(データ)のページを伸張することのみ、前記プログラ
ム格納部のメモリ容量の削減を行っている。よって、ペ
ージの伸張を行う際、(a)全ての前記CONSTANT_Utf8の
文字列である前記bytes[]がどのcompressed_utf8_pag
e[ ](S263)に圧縮されている、(b)全ての記Codeの前記c
ode[ ]がどのcompressed_method_page[ ](S266)に圧
縮されている、及び(c)前記圧縮実行ファイル格納部の
圧縮されたページが格納されている番地が明確である必
要がある。
All the compressed_utf8_page_size
[] And the compressed_method_page_size [] are lo
g 2 Compress with pagesize bits. In the present invention, when the class file is executed, the method (subroutine) and utf8 that are executed without decompressing the entire class file
Only by expanding the page of (data), the memory capacity of the program storage unit is reduced. Therefore, when decompressing a page, (a) which compressed_utf8_pag is used for all the bytes [] that are character strings of CONSTANT_Utf8.
Compressed to e [] (S263), (b) All the above Codes of Code
It is necessary that the address where ode [] is compressed_method_page [] (S266) is compressed, and (c) the compressed page of the compression execution file storage unit is stored.

【0091】前記(a)の前記CONSTANT_Utf8のbytes[]が
割り当てられた前記utf8部のページ及びページの中の開
始番地の確認は、前記 length(S52)、page_size(S235)
及び(i)前記ページ数が少なくなるアルゴリズム(図
9、図10)あるいは(ii)前記ページの伸張頻度が少な
くなるアルゴリズム(図示せず)により行う。前記(b)の
前記Codeの前記code[ ] が割り当てられた前記メソッド
部のページ及びページの中の開始番地の確認は、前記co
de_length(S122)、page_size(S235)及び(i)前記ペー
ジ数が少なくなるアルゴリズム(図9、図10)あるい
は(ii)前記ページの伸張頻度が少なくなるアルゴリズム
(図示せず)により行う。
The confirmation of the page of the utf8 part to which bytes [] of the CONSTANT_Utf8 of (a) and the start address in the page are confirmed by the length (S52), page_size (S235)
And (i) an algorithm that reduces the number of pages (FIGS. 9 and 10) or (ii) an algorithm that reduces the page expansion frequency (not shown). To confirm the page of the method part to which the code [] of the Code of (b) is assigned and the start address in the page,
de_length (S122), page_size (S235) and (i) an algorithm that reduces the number of pages (FIGS. 9 and 10) or (ii) an algorithm that reduces the expansion frequency of the page
(Not shown).

【0092】前記(c)は、前記compressed_utf8_page
_size[ ]及び前記compressed_method_page_size[ ]
の表により、前記ページが格納されている番地の確認を
行う。確認は図24を用いて説明するように行う。図2
4において、S249が圧縮実行ファイル格納部(S1)であ
り、number_of_utf8_page(S242)=1及びnumber_of_
method_page(S246)=2の事例である。圧縮されたutf8部
のページサイズ(S242)の情報はS250に格納され、二つの
圧縮されたメソッド部のページサイズ(S246)の情報はそ
れぞれS251及びS252に格納されている。圧縮されたutf8
部のページ(S263)の情報は、番地n(S253)から開始するS
254に格納され、二つの圧縮されたメソッド(サブルー
チン)のページ(S266)の情報はそれぞれ番地m(S255)か
ら開始するS256及び番地o(S257)から開始するS258に格
納される。実行が行われる際、最初に基本情報部4がS2
59のプログラム格納部(S2)に伸張される。基本情報部4
の次に伸張される情報がS235である。sort_type(S9)が
1の場合、S237及びS239は存在し、S235の次に伸張さ
れ、請求項7記載の整列アルゴリズムに用いられる。次
に、全てのS244及びS248が伸張される。S235の伸張後、
全てのS244(S250)及びS248(S251, S252)の圧縮サイズが
確認され、number_of_utf8_page(S242)及びnumber_
of_method_page(S246)とともに最初の圧縮されたutf8
(データ)のページ(S254)の開始番地n(S253)を求める
ことが出来、これをプログラム格納部(S259)のutf8(デ
ータ)ページ表(S260)に格納する。次のS250の伸張後が
S254のサイズであり、番地n(S253)+[S250の伸張結果]が
S256の開始番地m(S255)である。この結果をメソッド
(サブルーチン)表のS261に格納する。同様にS258の開
始番地o(S257)を求め、S262に格納する。S254, S256, S
258の伸張を行う必要がある場合、それぞれの開始番地
はS260, S261, S262により確認される。
The above (c) is the compressed_utf8_page
_Size [] and the compressed_method_page_size []
The address where the page is stored is confirmed by referring to the table. The confirmation is performed as described with reference to FIG. Figure 2
4, S249 is the compression execution file storage unit (S1), and number_of_utf8_page (S242) = 1 and number_of_
This is an example of method_page (S246) = 2. Information of the page size (S242) of the compressed utf8 section is stored in S250, and information of the page size (S246) of the two compressed method sections is stored in S251 and S252, respectively. Compressed utf8
The information of the section page (S263) starts from address n (S253).
The information of the pages (S266) of the two compressed methods (subroutines) stored in 254 is stored in S256 starting from the address m (S255) and S258 starting from the address o (S257), respectively. When the execution is performed, first the basic information section 4 is S2.
It is expanded in 59 program storage (S2). Basic information section 4
The information expanded next to is S235. When sort_type (S9) is 1, S237 and S239 are present, are expanded after S235, and are used in the sorting algorithm according to claim 7. Next, all S244 and S248 are expanded. After stretching S235,
The compressed size of all S244 (S250) and S248 (S251, S252) was confirmed, and number_of_utf8_page (S242) and number_
First compressed utf8 with of_method_page (S246)
The start address n (S253) of the (data) page (S254) can be obtained and stored in the utf8 (data) page table (S260) of the program storage unit (S259). After the expansion of the next S250
It is the size of S254, and the address n (S253) + [expansion result of S250] is
This is the start address m (S255) of S256. The result is stored in S261 of the method (subroutine) table. Similarly, the start address o (S257) of S258 is obtained and stored in S262. S254, S256, S
When it is necessary to extend 258, the start address of each is confirmed by S260, S261, and S262.

【0093】3.2プログラム圧縮形式のutf8(デー
タ)、メソッド(サブルーチン)のサイズ圧縮形式の形
状 本「プログラム圧縮形式のutf8(データ)、メソッド
(サブルーチン)のサイズ圧縮形式の形状」は、page_
part(S7)が0の場合のみ存在する。本「プログラム圧縮
形式のutf8(データ)、メソッド(サブルーチン)のサ
イズ圧縮形式の形状」は3.1「プログラム圧縮形式の
utf8(データ)、メソッド(サブルーチン)のページサ
イズ圧縮形式の形状」に対し、page_size(S235)が存在
せず、number_of_utf8_page(S242)及びnumber_of_
method_page(S246)が1となる。
3.2 Program compression format utf8 (data), method (subroutine) size compression format shape This book "Program compression format utf8 (data), method (subroutine) size compression format shape" is page_
It exists only when part (S7) is 0. This "Program compression format utf8 (data), method (subroutine) size compression format shape" is 3.1 "Program compression format
utf8 (data), method (subroutine) page size compression format ", page_size (S235) does not exist, number_of_utf8_page (S242) and number_of_
method_page (S246) becomes 1.

【0094】compressed_utf8_page_size[ ](S244)
の圧縮は及び前記compressed_method_page_size[ ]
(S248)は、log2 pagesize のビット数になるように圧
縮を行う。utf8(データ)の場合、pagesizeは全てのCO
NSTANT_Utf8のlength(S52)の合計である。メソッド
(サブルーチン)の場合、pagesizeは全てのcode_leng
th(S122)の合計である。 4.プログラム圧縮形式のutf8部の形式 本「プログラム圧縮形式のutf8部の形式」はdata_comp
(S6)が1の場合のみ存在する。
Compressed_utf8_page_size [] (S244)
Compression of compressed_method_page_size []
In (S248), compression is performed so that the number of bits is log 2 pagesize. In case of utf8 (data), pagesize is all CO
It is the sum of the length (S52) of NSTANT_Utf8. For method (subroutine), pagesize is all code_leng
This is the sum of th (S122). 4. Format of utf8 part of program compression format This "format of utf8 part of program compression format" is data_comp
It exists only when (S6) is 1.

【0095】図25に、図2に示したutf8部6の詳細を
示す。number_of_utf8_pageは、図23と同じであ
る。compressed_utf8_page[ ](S263)が全ての圧縮さ
れた前記utf8部のページであり、utf8_algorithm(S26
4)及びcompressed_utf8_data(S265)からなる。compre
ssed_utf8_data(S265)が実際に圧縮されたデータであ
る。utf8_algorithm(S264)は2ビットであり、page_c
omp(S10)が1の場合のみ存在し、utf8_algorithm(S26
4)が0の場合、前記utf8部のページの圧縮方法1を用
い、utf8_algorithm(S264)が1の場合、前記utf8部の
ページの圧縮方法2を用い、utf8_algorithm(S264)2
の場合非圧縮なutf8(データ)データがcompressed_ut
f8_data(S265)に格納される。page_comp(S10)が0の
場合、圧縮はcomp_algorithm(S11)により行う。
FIG. 25 shows the details of the utf8 section 6 shown in FIG. number_of_utf8_page is the same as in FIG. compressed_utf8_page [] (S263) is the page of all the compressed utf8 parts, and utf8_algorithm (S26
4) and compressed_utf8_data (S265). compre
The ssed_utf8_data (S265) is the actually compressed data. utf8_algorithm (S264) is 2 bits, page_c
It exists only when omp (S10) is 1, and utf8_algorithm (S26
When 4) is 0, the compression method 1 of the page of the utf8 part is used, and when utf8_algorithm (S264) is 1, the compression method 2 of the page of the utf8 part is used and utf8_algorithm (S264) 2
In case of uncompressed utf8 (data) data is compressed_ut
It is stored in f8_data (S265). When page_comp (S10) is 0, compression is performed by comp_algorithm (S11).

【0096】圧縮方法の詳細は、以下のとおりである。 前記utf8部のページの圧縮方法1: 高速な辞書ベース
のlz-77アルゴリズム。初期辞書として、APIライブラリ
の情報、属性名情報、基本メソッド(サブルーチン)デ
スクリプター情報を用いる。 前記utf8部のページの圧縮方法2: 圧縮率の高い前記l
z-77及び適応型ハフマンの組合せである。初期辞書とし
て、APIライブラリの情報、属性名情報、基本メソッド
(サブルーチン)デスクリプター情報を用いる。
Details of the compression method are as follows. The method of compressing pages of the utf8 part 1: A high-speed dictionary-based lz-77 algorithm. API library information, attribute name information, and basic method (subroutine) descriptor information are used as the initial dictionary. The compression method of the page of the utf8 part 2: The high compression ratio l
It is a combination of z-77 and adaptive Huffman. API library information, attribute name information, and basic method (subroutine) descriptor information are used as the initial dictionary.

【0097】圧縮率(圧縮前サイズ/圧縮後サイズ)が
105%以下の場合、compressed_utf8_data(S265)は
圧縮を行わない元のデータとなる(請求項13)。 5.プログラム圧縮形式のメソッド部8の形式 図26は、図2に示したメソッド部8の詳細を示す図で
ある。number_of_method_pageは図23と同じであ
る。compressed_method_page[ ](S266)が全ての圧縮
された前記メソッド部のページであり、method_algori
thm(S267)及びcompressed_method_data(S268)からな
る。
When the compression ratio (size before compression / size after compression) is 105% or less, compressed_utf8_data (S265) becomes the original data which is not compressed (claim 13). 5. Format of Method Section 8 in Program Compression Format FIG. 26 is a diagram showing details of the method section 8 shown in FIG. number_of_method_page is the same as in FIG. compressed_method_page [] (S266) is a page of all the compressed method parts, and method_algori
It consists of thm (S267) and compressed_method_data (S268).

【0098】compressed_method_data(S268)が実際に
圧縮されたデータである。method_algorithm(S267)は4
ビットであり、page_comp(S10)が1の場合のみ存在し、
method_algorithm(S267)が0〜6の場合、メソッド部の
ページの圧縮方法1〜7を用い、method_algorithm(S26
7)が7の場合、非圧縮なメソッド(サブルーチン)デー
タがcompressed_method_data(S268)に格納される。pa
ge_comp(S10)が0の場合、圧縮はcomp_algorithm(S1
1)により行う。
Compressed_method_data (S268) is the actually compressed data. method_algorithm (S267) is 4
It is a bit and exists only when page_comp (S10) is 1,
When method_algorithm (S267) is 0 to 6, compression method 1 to 7 of the page of the method part is used and method_algorithm (S26
When 7) is 7, uncompressed method (subroutine) data is stored in compressed_method_data (S268). pa
If ge_comp (S10) is 0, the compression is comp_algorithm (S1
Follow step 1).

【0099】圧縮方法の詳細は以下のとおりである。前
記メソッド部のページを図27のように分割することが
できる。ここで、Javaの命令は1バイトのオペコード
(opcode)及び複数の1バイトのオペランド(operan
d)により構成される。分割方法1(S270)が前記メソ
ッド部のページを分割しない形式である。分割方法2(S
272)が特定のパターンの連続したオペコードをマクロに
入れ替えた分割方法である。マクロ化された命令34の
オペランドはマクロの後に配置する。Javaの命令数が53
個であることに対し、1バイト分の256-203=53個までの
マクロが定義可能である。オペコードのマクロ化を行う
ことにより、圧縮率を高くすることができる。
Details of the compression method are as follows. The page of the method part can be divided as shown in FIG. Here, the Java instruction is a 1-byte opcode and a plurality of 1-byte operands (operan).
d). The division method 1 (S270) is a format in which the pages of the method section are not divided. Split method 2 (S
272) is a division method in which continuous opcodes of a specific pattern are replaced with macros. The operand of the macro instruction 34 is placed after the macro. 53 Java instructions
However, up to 256-203 = 53 macros for 1 byte can be defined. The compression rate can be increased by making the opcode macro.

【0100】分割方法3(S274)は、オペコード及びマク
ロ部を一括に、オペランド部を一括にページ分割した方
法である。前記分割方法1、分割方法2、分割方法3に
対し以下のメソッド部のページの圧縮方法1〜7が選択
可能である。 メソッド部のページの圧縮方法1: 分割方法1(S270)
に高速な辞書ベースのlz-77アルゴリズムを用いる。
The division method 3 (S274) is a method in which the opcode and macro portion are divided into pages and the operand portion is divided into pages. For the division method 1, the division method 2, and the division method 3, the following page compression methods 1 to 7 in the method section can be selected. Method page compression method 1: Division method 1 (S270)
Uses a fast dictionary-based lz-77 algorithm.

【0101】メソッド部のページの圧縮方法2: 分割
方法1(S270)に圧縮率の高い前記lz-77及び適応型ハフ
マンの組合せを用いる。 メソッド部のページの圧縮方法3: 分割方法2(S272)
に高速な辞書ベースのlz-77アルゴリズムを用いる。 メソッド部のページの圧縮方法4: 分割方法2(S272)
に圧縮率の高い前記lz-77及び適応型ハフマンの組合せ
を用いる。
Method page compression method 2: A combination of the above-described lz-77 and adaptive Huffman having a high compression rate is used for the division method 1 (S270). Method section page compression method 3: Division method 2 (S272)
Uses a fast dictionary-based lz-77 algorithm. Method section page compression method 4: Division method 2 (S272)
A combination of the above-mentioned lz-77 and adaptive Huffman having a high compression rate is used.

【0102】メソッド部のページの圧縮方法5: 分割
方法3(S274)のオペコード及びマクロ部に高速な辞書ベ
ースのlz-77アルゴリズムより圧縮を行い、オペランド
部にはオペランド部に特化した圧縮法を用いる。 メソッド部のページの圧縮方法6: 分割方法3(S274)
のオペコード及びマクロ部に圧縮率の高い前記lz-77及
び適応型ハフマンの組合せより圧縮を行い、オペランド
部にはオペランド部に特化した圧縮法を用いる。
Method section page compression method 5: The opcode of the division method 3 (S274) and the macro section are compressed by the high-speed dictionary-based lz-77 algorithm, and the operand section is specialized for the operand section. To use. Method section page compression method 6: Division method 3 (S274)
The operation code and the macro part are compressed by the combination of lz-77 and adaptive Huffman having a high compression ratio, and the operand part uses a compression method specialized for the operand part.

【0103】メソッド部のページの圧縮方法7: 分割
方法3(S274)のオペコード及びマクロ部にマクロの出現
頻度に特化した固定ハフマン表より圧縮を行い、オペラ
ンド部にはオペランド部に特化した圧縮法を用いる。本
手法のハードウエア化は容易である。前記オペランド部
に特化した圧縮法は以下の通りである。オペランドの種
類には、ローカル変数を参照するオペランド、分岐先の
相対番地、前記コンスタントプールconstant_pool[ ]
(S32)のインデックスを参照するオペランド、newarray
命令のatypeオペランド、及びlookupswitchとtableswit
ch命令のオペランドがある。
Method section page compression method 7: The opcode of the division method 3 (S274) and the macro section are compressed from the fixed Huffman table specialized for the appearance frequency of macros, and the operand section is specialized for the operand section. The compression method is used. This method can be easily implemented as hardware. The compression method specialized for the operand part is as follows. The types of operands include an operand that refers to a local variable, a relative address of a branch destination, and the constant pool constant_pool [].
Operand referencing the index of (S32), newarray
Atype operand of instruction, lookupswitch and tableswit
There is a ch instruction operand.

【0104】前記ローカル変数を参照するオペランドに
対し、前記メソッド(サブルーチン)のローカル変数に
対応するビット数により圧縮を行う。例えば図4と同様
にmax_locals(S120)が20の場合、最低5ビットで表
すことができ、下位5ビットのみを符号化し、圧縮を行
う。前記分岐先相対番地のオペランドは、前記code_le
ngth(S122)に対応するビット数により圧縮を行う。例え
ば図4と同様にcode_length(S122)が20の場合、最低
5ビットで表すことができ、下位5ビットのみを符号化
し、圧縮を行う。
The operand referencing the local variable is compressed by the number of bits corresponding to the local variable of the method (subroutine). For example, when max_locals (S120) is 20, as in FIG. 4, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed. The operand of the branch destination relative address is the code_le
The compression is performed by the number of bits corresponding to ngth (S122). For example, when code_length (S122) is 20 as in FIG. 4, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed.

【0105】前記newarray命令のatypeオペランドにはa
typeに特化した固定ハフマン表により圧縮を行う。ハフ
マンの固定表は、使用頻度の高いatypeに短い符号を割
り当て、使用頻度が小さくなるに従い、より長い符号を
割り当てる表である。前記tableswitch及びlookupswitc
h命令のオペランドの圧縮には、最初に分岐先の相対番
地以外のオペランドに最低必要ビット数を符号化し、分
岐先の相対番地のオペランドは前記code_lengthに対応
するビット数により圧縮を行い、その他オペランドは分
岐先の相対番地以外のオペランドに最低必要ビット数に
より圧縮を行う。例えば図4と同様にmax_locals(S12
0)が20の場合、最低5ビットで表すことができ、下位
5ビットのみを符号化し、圧縮を行う。
The atype operand of the newarray instruction is a
It compresses by the fixed Huffman table specialized for type. The Huffman fixed table is a table in which short codes are assigned to atypes that are frequently used and longer codes are assigned as atypes are used less frequently. Table switch and lookup switc
To compress the operand of the h instruction, first encode the minimum required number of bits in the operand other than the relative address of the branch destination, and the operand of the relative address of the branch destination is compressed by the number of bits corresponding to the code_length. Compresses the operands other than the branch destination relative address according to the minimum required number of bits. For example, max_locals (S12
When 0) is 20, it can be represented by at least 5 bits, and only the lower 5 bits are encoded and compressed.

【0106】圧縮率(圧縮前サイズ/圧縮後サイズ)が
105%以下の場合、compressed_utf8_data(S265)は
圧縮を行わない元のデータとなる(請求項13)。 6.1プログラム実行装置の形態 1: メソッド(サブル
ーチン)のみ圧縮 本発明のある局面に従うプログラム実行装置は、所定の
言語で記述されたプログラムを実行する。このプログラ
ム実行装置は、図1に示すように、本発明のプログラム
の圧縮方式に基づいて圧縮されたクラスファイル20を
格納する圧縮実行ファイル格納部22と、前記メソッド
部及び前記基本情報部を読出して伸張するための伸張部
24と、前記伸張部24により伸張されたメソッド部を
格納するプログラム格納部26と、伸張された前記プロ
グラムを解釈し、実行するためのプログラム実行部28
とを有する。
When the compression ratio (size before compression / size after compression) is 105% or less, compressed_utf8_data (S265) becomes the original data that is not compressed (claim 13). 6.1 Form of Program Execution Device 1: Only Method (Subroutine) is Compressed A program execution device according to an aspect of the present invention executes a program described in a predetermined language. As shown in FIG. 1, this program execution device reads a compression execution file storage unit 22 for storing a class file 20 compressed based on the compression method of the program of the present invention, a method unit, and the basic information unit. A decompression unit 24 for decompressing the program, a program storage unit 26 for storing the method unit decompressed by the decompression unit 24, and a program execution unit 28 for interpreting and executing the decompressed program.
Have and.

【0107】前記圧縮実行ファイル格納部22は非圧縮
utf8部、圧縮された前記メソッド部、非圧縮基本情報部
及び非圧縮utf8(データ)、メソッド(サブルーチン)
のページ情報を格納する。前記圧縮実行ファイル格納部
22はNAND型及びNOR型フラッシュメモリで構成
されていることが好ましく、ページ単位のアクセスしか
できないがよりチップ面積の小さいNAND型フラッシ
ュメモリ中に圧縮したコードを格納し、ワード単位のラ
ンダムアクセスが可能だがチップ面積は大きくなるNO
R型フラッシュメモリに非圧縮コードを格納する(請求
項13)。
The compression execution file storage unit 22 is uncompressed.
utf8 part, the compressed method part, uncompressed basic information part and uncompressed utf8 (data), method (subroutine)
Stores the page information of. The compression execution file storage unit 22 is preferably composed of NAND type and NOR type flash memories, and stores the compressed code in a NAND type flash memory which can be accessed only in page units but has a smaller chip area, Random access in units is possible, but the chip area is large NO
The uncompressed code is stored in the R-type flash memory (claim 13).

【0108】前記クラスファイルのメソッド(サブルー
チン)が始めて実行される際、メソッド(サブルーチ
ン)のページ情報より前記配置されたページ情報に基づ
き実行されるメソッド(サブルーチン)のページを前記
プログラム格納部26に伸張し、メソッド(サブルーチ
ン)の実行を行う。前記クラスファイルのメソッド(サ
ブルーチン)が二度目以降実行される場合、メソッド
(サブルーチン)データがすでに前記プログラム格納部
26に伸張されている場合、伸張は再び行う必要はな
い。
When the method (subroutine) of the class file is executed for the first time, the page of the method (subroutine) to be executed based on the page information of the arranged page is stored in the program storage unit 26 from the page information of the method (subroutine). Expand and execute the method (subroutine). When the method (subroutine) of the class file is executed for the second time or later, and when the method (subroutine) data is already expanded in the program storage unit 26, the expansion need not be performed again.

【0109】前記プログラム格納部26はキャッシュメ
モリであり、メソッド(サブルーチン)データがすでに
キャッシュに伸張されているかの確認はLRU(Least Rece
ntlyUsed)法より行う。キャッシュのLRUのチェックは前
記page_size毎に行う。 6.2プログラム実行装置の形態 2: 全てを圧縮 このプログラム実行装置は、図1に示すように、本発明
のプログラムの圧縮方式に基づいて圧縮された前記クラ
スファイル20を格納する圧縮実行ファイル格納部22
と、前記圧縮実行ファイル格納部22から前記圧縮され
たutf8部、メソッド部及び基本情報部を読出して伸張す
るための伸張部24と、前記伸張部24により伸張され
たutf8部、メソッド部、基本情報部を格納するプログラ
ム格納部26と、伸張された前記プログラムを解釈し、
実行するためのプログラム実行部28とを有する。
The program storage unit 26 is a cache memory, and it is necessary to confirm whether the method (subroutine) data has already been expanded in the cache by LRU (Least Receiving).
ntlyUsed) method. The cache LRU is checked for each page_size. 6.2 Form of Program Execution Device 2: Compress All This program execution device stores, as shown in FIG. 1, a compressed execution file storing the class file 20 compressed based on the compression method of the program of the present invention. Part 22
And a decompression unit 24 for decompressing and decompressing the compressed utf8 unit, method unit and basic information unit from the compression execution file storage unit 22, and a utf8 unit decompressed by the decompression unit 24, a method unit, and a basic unit. A program storage unit 26 for storing an information unit, interpreting the expanded program,
And a program execution unit 28 for executing the program.

【0110】前記圧縮実行ファイル格納部22は圧縮さ
れたutf8部、圧縮されたメソッド部、圧縮された基本情
報部及び圧縮されたutf8(データ)、メソッド(サブル
ーチン)のページ情報を格納する。前記圧縮実行ファイ
ル格納部22はNAND型及びNOR型フラッシュメモ
リで構成されていることが好ましく、ページ単位のアク
セスしかできないがよりチップ面積の小さいNAND型
フラッシュメモリ中に圧縮したコードを格納し、ワード
単位のランダムアクセスが可能だがチップ面積は大きく
なるNOR型フラッシュメモリに非圧縮コードを格納す
る(請求項13関連)。
The compression execution file storage section 22 stores the compressed utf8 section, the compressed method section, the compressed basic information section, the compressed utf8 (data), and the page information of the method (subroutine). The compression execution file storage unit 22 is preferably composed of NAND type and NOR type flash memories, and stores the compressed code in a NAND type flash memory which can be accessed only in page units but has a smaller chip area, The non-compressed code is stored in the NOR type flash memory which allows random access in units but increases the chip area (related to claim 13).

【0111】前記クラスファイルのメソッド(サブルー
チン)が始めて実行される際、最初に圧縮実行ファイル
格納部22に格納されている基本情報部及びutf8(デー
タ)、メッソドのページ部が前記プログラム格納部26
に前記クラスファイル基本情報及びutf8(データ)、メ
ソッド(サブルーチン)情報として伸張される。次に前
記配置されたページ情報に基づき実行されるメソッド
(サブルーチン)のページを前記プログラム格納部26
に伸張し、メソッド(サブルーチン)の実行を行う。メ
ソッド(サブルーチン)がutf8(データ)情報を要求し
た際、前記配置されたページ情報に基づき要求されるut
f8(データ)のページを前記プログラム格納部26に伸
張する。前記クラスファイルのメソッド(サブルーチ
ン)が二度目以降実行される場合、基本情報部の伸張は
行わない。さらに前記クラスファイルのメソッド(サブ
ルーチン)が二度目以降実行される場合、utf8(デー
タ)あるいはメソッド(サブルーチン)データがすでに
前記プログラム格納部26に伸張されている場合、伸張
は再び行う必要はない。
When the method (subroutine) of the class file is executed for the first time, the basic information section and utf8 (data) stored in the compression execution file storage section 22 and the page section of the method are first stored in the program storage section 26.
The class file basic information, utf8 (data), and method (subroutine) information are expanded. Next, the page of the method (subroutine) executed based on the arranged page information is stored in the program storage unit 26.
Expand to and execute the method (subroutine). When a method (subroutine) requests utf8 (data) information, ut is requested based on the page information placed above.
The page of f8 (data) is expanded in the program storage unit 26. When the method (subroutine) in the class file is executed for the second time and thereafter, the basic information section is not expanded. Further, when the method (subroutine) of the class file is executed for the second time or later, and when the utf8 (data) or method (subroutine) data is already expanded in the program storage unit 26, the expansion need not be performed again.

【0112】前記プログラム格納部26はキャッシュメ
モリであり、utf8(データ)あるいはメソッド(サブル
ーチン)データがすでにキャッシュに伸張されているか
の確認はLRU(Least Recently Used)法より行う。キャッ
シュのLRUのチェックは前記page_size毎に行う。この
プログラム実行装置の特徴により、データ部及びサブル
ーチン部の圧縮形式には圧縮率が高い、伸張が高速、あ
るいはハードウエア化が容易な圧縮形式の選択が可能で
ある。
The program storage unit 26 is a cache memory, and whether the utf8 (data) or method (subroutine) data has already been expanded in the cache is confirmed by the LRU (Least Recently Used) method. The cache LRU is checked for each page_size. Due to the characteristics of this program execution device, it is possible to select a compression format having a high compression rate, a high decompression speed, or a hardware format that is easy to implement as the compression format of the data section and the subroutine section.

【0113】実行が比較的に遅いインタプリタを実行部
に用いた場合、圧縮率の高い圧縮形式を用いることが好
ましい。実行が比較的に早いJITを用いた場合、伸張時
間が高速な圧縮形式を用いることが好ましい。
When an interpreter whose execution is relatively slow is used in the execution unit, it is preferable to use a compression format with a high compression rate. When using a JIT that executes relatively quickly, it is preferable to use a compression format that has a high decompression time.

【0114】[0114]

【発明の効果】以上のように本発明によれば、必要な場
合のみ、必要なページを伸張すればよいため、実行ファ
イル全体を伸張することに比べ、オブジェクト指向言語
のプログラムを実行する際に必要な処理時間を短くし、
メモリの容量を節約することができる。
As described above, according to the present invention, it is only necessary to decompress a required page. Therefore, when executing an object-oriented language program, it is possible to decompress the entire executable file. Shorten the required processing time,
The memory capacity can be saved.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明のプログラム実行装置を示すブロック図
である。
FIG. 1 is a block diagram showing a program execution device of the present invention.

【図2】本発明のプログラム圧縮形式のトップ層を示す
図である。
FIG. 2 is a diagram showing a top layer of a program compression format of the present invention.

【図3】本発明のプログラム圧縮形式のヘッダ層を示す
図である。
FIG. 3 is a diagram showing a header layer of a program compression format of the present invention.

【図4】必要最低下位ビットのみを圧縮する事例を説明
するための図である。
FIG. 4 is a diagram for explaining an example of compressing only the necessary lowest bit.

【図5】本発明の、メソッド(サブルーチン)を対象と
したページ分割法1を説明するための図である。
FIG. 5 is a diagram for explaining a page division method 1 for a method (subroutine) of the present invention.

【図6】本発明の、メソッド(サブルーチン)を対象と
したページ分割法2を説明するための図である。
FIG. 6 is a diagram for explaining a page division method 2 for a method (subroutine) of the present invention.

【図7】本発明の、データを対象としたページ分割法1
を説明するための図である。
FIG. 7 is a page division method 1 for data according to the present invention.
It is a figure for explaining.

【図8】本発明の、データを対象としたページ分割法2
を説明するための図である。
FIG. 8 is a page division method 2 for data according to the present invention.
It is a figure for explaining.

【図9】本発明のページ分割アルゴリズム(ページ分割
法1,2)を説明するためのフローチャートである。
FIG. 9 is a flowchart for explaining a page division algorithm (page division methods 1 and 2) of the present invention.

【図10】本発明のページ分割アルゴリズム(ページ分
割法1,2)を説明するためのフローチャートである
(図9の続き)。
FIG. 10 is a flowchart for explaining the page division algorithm (page division methods 1 and 2) of the present invention (continuation of FIG. 9).

【図11】プログラム圧縮形式の基本情報部4の詳細図
である。
FIG. 11 is a detailed diagram of a basic information section 4 in a program compression format.

【図12】基本情報部4のコンスタントプール層を示す
図である。
FIG. 12 is a diagram showing a constant pool layer of a basic information section 4.

【図13】コンスタントプール層の詳細図である。FIG. 13 is a detailed view of a constant pool layer.

【図14】基本情報部4のインタフェース層を示す図で
ある。
FIG. 14 is a diagram showing an interface layer of a basic information section 4.

【図15】基本情報部4のフィールド層を示す図であ
る。
FIG. 15 is a diagram showing a field layer of a basic information section 4.

【図16】フィールド層の詳細図である。FIG. 16 is a detailed view of a field layer.

【図17】属性名に特化した固定ハフマン表を示す図で
ある。
FIG. 17 is a diagram showing a fixed Huffman table specialized for attribute names.

【図18】基本情報部4のメソッド(サブルーチン)層
を示す図である。
FIG. 18 is a diagram showing a method (subroutine) layer of the basic information section 4.

【図19】メソッド(サブルーチン)層の属性を示す図
である。
FIG. 19 is a diagram showing attributes of a method (subroutine) layer.

【図20】メソッド(サブルーチン)層の属性を示す図
である。
FIG. 20 is a diagram showing attributes of a method (subroutine) layer.

【図21】メソッド(サブルーチン)層のコード属性を
示す図である。
FIG. 21 is a diagram showing code attributes of a method (subroutine) layer.

【図22】基本情報部4の属性層を示す図である。FIG. 22 is a diagram showing an attribute layer of the basic information section 4.

【図23】utf8(データ)、メソッド(サブルーチン)
のページ表を示す図である。
[Figure 23] utf8 (data), method (subroutine)
It is a figure which shows the page table of.

【図24】前記ページが格納されている番地の確認を行
う方法を説明するための図である。
FIG. 24 is a diagram for explaining a method of confirming an address where the page is stored.

【図25】本発明の全ての圧縮されたutf8部のページの
図である。
FIG. 25 is a page view of all compressed utf8 parts of the present invention.

【図26】本発明の全ての圧縮されたメソッド(サブル
ーチン)のページの図である。
FIG. 26 is a diagram of a page of all compressed methods (subroutines) of the present invention.

【図27】本発明のメソッド(サブルーチン)のページ
の分割例を示す図である。
FIG. 27 is a diagram showing an example of page division of a method (subroutine) of the present invention.

【符号の説明】[Explanation of symbols]

2 圧縮ファイル形式のヘッダ部 4 圧縮ファイル形式の基本情報部 5 圧縮ファイル形式のutf8(データ)、メソッド(サ
ブルーチン)のページ表 6 圧縮ファイル形式のutf8部 8 圧縮ファイル形式のメソッド(サブルーチン)部 20 圧縮ファイル形式により圧縮されたプログラム 22 圧縮実行ファイル格納部 24 伸張部 26 プログラム格納部 28 実行部 40 基本情報部のコンスタントプール圧縮形式 42 基本情報部のインタフェース圧縮形式 44 基本情報部のフィールド圧縮形式 46 基本情報部のメソッド(サブルーチン)圧縮形式 48 基本情報部の属性圧縮形式 100 命令3及び命令4のオペコードのマクロ化
2 Compressed file format header section 4 Compressed file format basic information section 5 Compressed file format utf8 (data), page of method (subroutine) 6 Compressed file format utf8 section 8 Compressed file format method (subroutine) section 20 Program compressed by compressed file format 22 Compression execution file storage section 24 Decompression section 26 Program storage section 28 Execution section 40 Constant pool compression format of basic information section 42 Interface compression format of basic information section 44 Field compression format of basic information section 46 Method (subroutine) compression format of the basic information section 48 Attribute compression format of the basic information section 100 Instruction 3 and instruction 4 opcodes are macro-coded

───────────────────────────────────────────────────── フロントページの続き (72)発明者 河原 伸幸 大阪府箕面市船場西2丁目1番11号 株式 会社シンセシス内 (72)発明者 武内 良典 大阪府箕面市船場西2丁目1番11号 株式 会社シンセシス内 (72)発明者 白川 功 大阪府箕面市船場西2丁目1番11号 株式 会社シンセシス内 (72)発明者 吉田 豊彦 東京都千代田区丸の内二丁目2番3号 三 菱電機株式会社内 (72)発明者 坂本 守 東京都千代田区丸の内二丁目2番3号 三 菱電機株式会社内 Fターム(参考) 5B060 DA08 5B076 AB08    ─────────────────────────────────────────────────── ─── Continued front page    (72) Inventor Nobuyuki Kawahara             2-11-1, Senba-nishi, Minoh-shi, Osaka Stocks             Company Synthesis (72) Inventor Yoshinori Takeuchi             2-11-1, Senba-nishi, Minoh-shi, Osaka Stocks             Company Synthesis (72) Inventor Isao Shirakawa             2-11-1, Senba-nishi, Minoh-shi, Osaka Stocks             Company Synthesis (72) Inventor Toyohiko Yoshida             2-3 2-3 Marunouchi, Chiyoda-ku, Tokyo             Inside Ryo Electric Co., Ltd. (72) Inventor Mamoru Sakamoto             2-3 2-3 Marunouchi, Chiyoda-ku, Tokyo             Inside Ryo Electric Co., Ltd. F-term (reference) 5B060 DA08                 5B076 AB08

Claims (15)

【特許請求の範囲】[Claims] 【請求項1】所定の言語で記述され、ひとつ又は複数の
実行ファイルより構成されたプログラムに対して、前記
実行ファイルのサブルーチン部に含まれるサブルーチン
をページごとに割り当てていき、割り当てられたサブル
ーチンをページ単位で圧縮することを特徴とするプログ
ラムの圧縮方法。
1. A program, which is written in a predetermined language and is composed of one or a plurality of executable files, is assigned a subroutine included in a subroutine section of the executable file for each page, and the assigned subroutine is assigned. A method of compressing a program characterized by compressing in page units.
【請求項2】前記実行ファイルのデータ部に含まれるデ
ータをページごとに割り当てていき、割り当てられたデ
ータをページ単位で圧縮することを特徴とする請求項1
記載のプログラムの圧縮方法。
2. The data contained in the data part of the execution file is allocated for each page, and the allocated data is compressed in page units.
A method of compressing the described program.
【請求項3】割り当てられるページのページサイズがペ
ージごとに可変であり、その上限が設定されていること
を特徴とする請求項1又は請求項2記載のプログラムの
圧縮方法。
3. The program compression method according to claim 1, wherein the page size of the allocated page is variable for each page, and the upper limit thereof is set.
【請求項4】割り当てられるページのページサイズが全
ページ同じであることを特徴とする請求項1又は請求項
2記載のプログラムの圧縮方法。
4. The program compression method according to claim 1, wherein the page size of the allocated pages is the same for all pages.
【請求項5】前記サブルーチン用ページとデータ用ペー
ジで使用する圧縮方法を変更することを特徴とする請求
項2記載のプログラムの圧縮方法。
5. The program compression method according to claim 2, wherein the compression method used in the subroutine page and the data page is changed.
【請求項6】複数の実行ファイルにより構成されたプロ
グラムに対してページ割当てを行う際、実行ファイルに
含まれる情報により同一実行ファイルのサブルーチンの
みからなるページを作成するようにページを区切ること
を特徴とする請求項1記載のプログラムの圧縮方法。
6. When pages are allocated to a program composed of a plurality of execution files, the pages are divided so that a page including only subroutines of the same execution file is created according to information contained in the execution files. The method for compressing a program according to claim 1.
【請求項7】ページ割当ての際、サブルーチンのサイズ
の大きいものほど先頭になるように整列させ、整列され
たサブルーチンごとに、毎回最初のページから、以下の
処理(A) (B)を行うことを特徴とする請求項1記載の
プログラムの圧縮方法。 (A)当該ページサイズ全てが空いているかどうか調べ、
全部空いているならば、サブルーチンを当該ページに割
当てて、次のサブルーチンに進む。サブルーチンが当該
ページサイズよりも大きい場合、サブルーチンを当該ペ
ージに割当て、割当てられずに残ったサブルーチンの一
部は、次のページで処理する。 (B)当該ページが一部しか空いていない場合、ページの
空き領域を調べ、サブルーチンがページの空き領域より
小さい場合、サブルーチンを当該ページに割り当てて、
次のサブルーチンに進む。サブルーチンがページの空き
領域より大きい場合は、サブルーチンを当該ページに割
り当てることなく次のページで処理する。
7. When allocating pages, the subroutines having larger sizes are aligned so that the subroutines are arranged at the top, and the following processes (A) and (B) are performed from the first page for each aligned subroutine. The method for compressing a program according to claim 1, wherein: (A) Check whether all the page sizes are free,
If all are free, assign the subroutine to the page and proceed to the next subroutine. If the subroutine is larger than the page size, the subroutine is assigned to the page, and some of the remaining unassigned subroutines are processed on the next page. (B) If the page is only partially free, check the free area of the page, and if the subroutine is smaller than the free area of the page, assign the subroutine to the page,
Go to the next subroutine. If the subroutine is larger than the free space of the page, the subroutine is processed on the next page without being assigned to the page.
【請求項8】ページ割当ての際、サブルーチンのサイズ
の大きいものほど先頭になるように整列させ、整列され
たサブルーチンごとに、以下の処理(C)を行うことを特
徴とする請求項1記載のプログラムの圧縮方法。 (C)ページの空き領域を調べ、サブルーチンがページの
空き領域より大きい場合、サブルーチンを当該ページに
割当てて、割当てられずに残ったサブルーチンの一部
は、次のページで処理する。サブルーチンがページの空
き領域より小さい場合、サブルーチンを当該ページに割
り当てて、次のサブルーチンに進む。
8. When allocating pages, the subroutines having larger sizes are aligned so that the subroutines are arranged at the beginning, and the following processing (C) is performed for each aligned subroutine. How to compress the program. (C) Check the free area of the page, and if the subroutine is larger than the free area of the page, allocate the subroutine to the page, and process some of the remaining unallocated subroutines on the next page. If the subroutine is smaller than the free area of the page, the subroutine is assigned to the page and the process proceeds to the next subroutine.
【請求項9】ページ割当ての際、サブルーチンを実行頻
度の高いものほど先頭になるように整列させ、整列され
たサブルーチンごとに、毎回最初のページから、以下の
処理(A) (B)を行うことを特徴とする請求項1記載の
プログラムの圧縮方法。 (A)当該ページサイズ全てが空いているかどうか調べ、
全部空いているならば、サブルーチンを当該ページに割
当てて、次のサブルーチンに進む。サブルーチンが当該
ページサイズよりも大きい場合、サブルーチンを当該ペ
ージに割当て、割当てられずに残ったサブルーチンの一
部は、次のページで処理する。 (B)当該ページが一部しか空いていない場合、ページの
空き領域を調べ、サブルーチンがページの空き領域より
小さい場合、サブルーチンを当該ページに割り当てて、
次のサブルーチンに進む。サブルーチンがページの空き
領域より大きい場合は、サブルーチンを当該ページに割
り当てることなく次のページで処理する。
9. When allocating pages, the subroutines are arranged so that the subroutines that are executed more frequently are aligned at the top, and the following processes (A) and (B) are performed from the first page for each aligned subroutine. The method for compressing a program according to claim 1, wherein: (A) Check whether all the page sizes are free,
If all are free, assign the subroutine to the page and proceed to the next subroutine. If the subroutine is larger than the page size, the subroutine is assigned to the page, and some of the remaining unassigned subroutines are processed on the next page. (B) If the page is only partially free, check the free area of the page, and if the subroutine is smaller than the free area of the page, assign the subroutine to the page,
Go to the next subroutine. If the subroutine is larger than the free space of the page, the subroutine is processed on the next page without being assigned to the page.
【請求項10】ページ割当ての際、サブルーチンを実行
頻度の高いものほど先頭になるように整列させ、整列さ
れたサブルーチンごとに、以下の処理(C)を行うことを
特徴とする請求項1記載のプログラムの圧縮方法。 (C)ページの空き領域を調べ、サブルーチンがページの
空き領域より大きい場合、サブルーチンを当該ページに
割当てて、割当てられずに残ったサブルーチンの一部
は、次のページで処理する。サブルーチンがページの空
き領域より小さい場合、サブルーチンを当該ページに割
り当てて、次のサブルーチンに進む。
10. When allocating pages, the subroutines are arranged so that the subroutines that are executed more frequently are arranged at the top, and the following processing (C) is performed for each of the arranged subroutines. How to compress the program. (C) Check the free area of the page, and if the subroutine is larger than the free area of the page, allocate the subroutine to the page, and process some of the remaining unallocated subroutines on the next page. If the subroutine is smaller than the free area of the page, the subroutine is assigned to the page and the process proceeds to the next subroutine.
【請求項11】ページ割り当て後、サブルーチンの中の
各命令のマクロ化による置換を行った後に圧縮を行うこ
とを特徴とする請求項1記載のプログラムの圧縮方法。
11. A program compression method according to claim 1, wherein after page allocation, each instruction in the subroutine is replaced by macro conversion and then compressed.
【請求項12】ページ毎に圧縮アルゴリズムが変更可能
であることを特徴とする請求項1記載のプログラムの圧
縮方法。
12. The method of compressing a program according to claim 1, wherein the compression algorithm can be changed for each page.
【請求項13】ページの圧縮率(圧縮前サイズ/圧縮後
サイズ)が一定値以上のページのみを圧縮し、そうでな
いページは圧縮を行わない請求項1記載のプログラムの
圧縮方法。
13. The program compression method according to claim 1, wherein only pages having a page compression ratio (size before compression / size after compression) of a certain value or more are compressed, and pages not so compressed are not compressed.
【請求項14】所定の言語で記述されたプログラムがJa
va(R)(米国サンマイクロシステムズ社の登録商標)ク
ラスファイルであって、Javaクラスファイルをi)サブル
ーチンであるメソッド部、ii)データであるutf8部、及
びiii)これら以外の基本情報部に分割し、i)ではa)高速
な辞書ベースの圧縮アルゴリズム、b)圧縮率の高い辞書
ベースと適応ハフマン表の組合せの圧縮アルゴリズム、
c) サブルーチン中の各命令のマクロ化による置換を行
った後にa)の圧縮アルゴリズムを適用する圧縮アルゴリ
ズム、d) サブルーチン中の各命令のマクロ化による置
換を行った後にb)の圧縮アルゴリズムを適用する圧縮ア
ルゴリズム、あるいはe) サブルーチン中の各命令のマ
クロ化による置換を行った後に固定ハフマン表の圧縮ア
ルゴリズムを適用する圧縮アルゴリズムを用いて圧縮を
行い、ii)ではa)初期辞書を用いた高速な辞書ベースの
圧縮アルゴリズムあるいはb)初期辞書を用いた圧縮率の
高い辞書ベースと適応ハフマン表の組合せの圧縮アルゴ
リズムを用いて圧縮を行い、iii)の圧縮を行うデータが
表す種類のシンボル数が前提である場合、使用頻度の高
いシンボルに短い符号を割り当て、使用頻度が小さくな
るに従い、より長い符号を割り当て圧縮を行い、iii)の
圧縮を行うデータが0〜nの数値の場合、データの下位
|log 2 n |(| |整数への丸め上げを表す)ビット
のみを符号化して圧縮を行うことを特徴とするプログラ
ムの圧縮方法。
14. A program written in a predetermined language is Ja
va (R) (registered trademark of Sun Microsystems, Inc.) class file, which is a Java class file in i) method part which is a subroutine, ii) utf8 part which is data, and iii) other basic information part In i), a) a high-speed dictionary-based compression algorithm, b) a compression algorithm with a high compression ratio that combines a dictionary-based and adaptive Huffman table,
c) The compression algorithm of a) is applied after each instruction in the subroutine is replaced by macro conversion, and d) The compression algorithm of b) is applied after each instruction in the subroutine is replaced by macro conversion. Compression algorithm, or e) compressing using a compression algorithm that applies fixed Huffman table compression algorithm after replacing each instruction in the subroutine by macro conversion, and in ii) a) using the initial dictionary Compression algorithm based on a simple dictionary or b) using a compression algorithm combining a dictionary base with a high compression rate using the initial dictionary and an adaptive Huffman table, and the number of symbols of the type represented by the data to be compressed in iii) is If this is a premise, assign shorter codes to the symbols that are used more frequently, and assign longer codes as the frequency of use decreases. Performs compression Te, when data to be compressed in iii) is a number of 0 to n, the lower the data
| Log 2 n | (| | represents rounding up to an integer) Only the bits are encoded and compressed.
【請求項15】所定の言語で記述されたプログラムがJa
va(R)(米国サンマイクロシステムズ社の登録商標)ク
ラスファイルのであって、Javaクラスファイルをi)サブ
ルーチンであるメソッド部、ii)データであるutf8部、
及びiii)これら以外の基本情報部に分割し、i)では請求
項1の方法に従いサブルーチンをページに分割し、ペー
ジをa)高速な辞書ベースの圧縮アルゴリズム、b)圧縮率
の高い辞書ベースと適応ハフマン表の組合せの圧縮アル
ゴリズム、c) サブルーチン中の各命令のマクロ化によ
る置換を行った後にa)の圧縮アルゴリズムを適用する圧
縮アルゴリズム、d) サブルーチン中の各命令のマクロ
化による置換を行った後にb)の圧縮アルゴリズムを適用
する圧縮アルゴリズム、あるいはe) サブルーチン中の
各命令のマクロ化による置換を行った後に固定ハフマン
表の圧縮アルゴリズムを適用する圧縮アルゴリズムを用
いて圧縮を行い、ii)では全てのutf8(データ)を複数
のページに分割し、複数のutf8(データ)からなる各前記
ページをページ単位でa)初期辞書を用いた高速な辞書ベ
ースの圧縮アルゴリズムあるいはb)初期辞書を用いた圧
縮率の高い辞書ベースと適応ハフマン表の組合せの圧縮
アルゴリズムを用いて圧縮を行い、iii)の圧縮を行うデ
ータが表す種類のシンボル数が前提である場合、使用頻
度の高いシンボルに短い符号を割り当て、使用頻度が小
さくなるに従い、より長い符号を割り当てる圧縮を行
い、iii)で圧縮を行うデータが0〜n (nはiii)に含まれ
る情報) の数値の場合、データの下位 |log 2 n |
(| |は整数への丸め上げを表す)ビットのみを符号
化して圧縮を行うことを特徴とするプログラムの圧縮方
法。
15. A program written in a predetermined language is Ja
va (R) (registered trademark of Sun Microsystems, Inc.) class file in which a Java class file is i) a method part that is a subroutine, ii) utf8 part that is data,
And iii) divide into basic information parts other than these, i) divide the subroutine into pages according to the method of claim 1, and divide the page into a) a fast dictionary-based compression algorithm, b) a dictionary base with a high compression rate. Adaptive Huffman table combination compression algorithm, c) A compression algorithm that applies the compression algorithm of a) after replacing each instruction in the subroutine by macro conversion, and d) Replaces each instruction in the subroutine by macro conversion. After that, compression is performed using the compression algorithm of b) or e) the compression algorithm of applying the fixed Huffman table compression algorithm after replacing each instruction in the subroutine by macro conversion, and ii) Then, divide all utf8 (data) into multiple pages, and make each page consisting of multiple utf8 (data) page by page a) Initial dictionary A high-speed dictionary-based compression algorithm or b) a compression algorithm that uses a combination of a dictionary-based and an adaptive Huffman table with a high compression ratio using the initial dictionary, and the symbol of the type represented by the data to be compressed in iii) If the number is a prerequisite, assign shorter codes to frequently used symbols, assign longer codes as less frequently used, perform compression, and compress data in iii) from 0 to n (n is iii). (Information contained in), the lower part of the data | log 2 n |
A compression method for a program, wherein only bits (| | represents rounding up to an integer) are encoded and compressed.
JP2001261916A 2001-08-30 2001-08-30 Program compression method Pending JP2003076606A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001261916A JP2003076606A (en) 2001-08-30 2001-08-30 Program compression method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001261916A JP2003076606A (en) 2001-08-30 2001-08-30 Program compression method

Publications (1)

Publication Number Publication Date
JP2003076606A true JP2003076606A (en) 2003-03-14

Family

ID=19088890

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001261916A Pending JP2003076606A (en) 2001-08-30 2001-08-30 Program compression method

Country Status (1)

Country Link
JP (1) JP2003076606A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007501450A (en) * 2003-08-01 2007-01-25 シンビアン ソフトウェア リミテッド Method for accessing data on a computer device
JP2014522023A (en) * 2011-07-01 2014-08-28 アップル インコーポレイテッド Technology for moving data between memory types

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319658A (en) * 1996-05-24 1997-12-12 Nec Corp Memory managing system for variable page size
JP2001166945A (en) * 1999-12-09 2001-06-22 Mitsubishi Electric Corp Semiconductor device and method for generating compressed program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319658A (en) * 1996-05-24 1997-12-12 Nec Corp Memory managing system for variable page size
JP2001166945A (en) * 1999-12-09 2001-06-22 Mitsubishi Electric Corp Semiconductor device and method for generating compressed program

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007501450A (en) * 2003-08-01 2007-01-25 シンビアン ソフトウェア リミテッド Method for accessing data on a computer device
JP4815346B2 (en) * 2003-08-01 2011-11-16 ノキア コーポレイション Method for accessing data on a computer device
JP2014522023A (en) * 2011-07-01 2014-08-28 アップル インコーポレイテッド Technology for moving data between memory types
US9195581B2 (en) 2011-07-01 2015-11-24 Apple Inc. Techniques for moving data between memory types

Similar Documents

Publication Publication Date Title
US8838551B2 (en) Multi-level database compression
JP2002529849A (en) Data compression method for intermediate object code program executable in embedded system supplied with data processing resources, and embedded system corresponding to this method and having multiple applications
JP4699580B2 (en) Method for static initialization of data processing system array, data processing method, and computer-readable storage medium storing data processing system and program for causing computer to execute control procedure thereof
KR100528278B1 (en) Memory management with compaction of data blocks
US20050028155A1 (en) Java execution device and Java execution method
JP2003044334A (en) Data structure for storing data in computer memory
JP2002536743A (en) Object Oriented Instruction Set for Resource Constrained Devices
US8448158B2 (en) Program code generation support device and method, program execution device and method, and program code compression processing device and method and program thereof
US20120259822A1 (en) Method for compressing identifiers
JP6467937B2 (en) Document processing program, information processing apparatus, and document processing method
CN112070652A (en) Data compression method, data decompression method, readable storage medium and electronic device
CN112732321A (en) Firmware modification method and device, computer readable storage medium and equipment
EP2645578A2 (en) Method, system and apparatus for data compression and decomression
JP2003076606A (en) Program compression method
Appel et al. Efficient extensional binary tries
US11055328B2 (en) Non-transitory computer readable medium, encode device, and encode method
JP4773143B2 (en) Storage management device and computer program
JP4864287B2 (en) Identification method, recording medium, and computer system
AU2019250125A1 (en) Information processing apparatus, information processing method, and information processing program
Ročkai et al. Techniques for memory-efficient model checking of C and C++ code
JP2009277062A (en) Data rewriting system, new version data creation device, differential data creation device, new version data creation program and differential data creation program
Capon et al. The MU5 compiler target language and autocode
US7565646B2 (en) Method for compression of object code interpreted by tree-structured expression factorization
US8775453B2 (en) System and method for reducing memory usage of tree-based data structures
Torosyan et al. Runtime and compiler support for HAMTs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080611

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111020

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120301