[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP3599888B2 - Object generation apparatus and method - Google Patents

Object generation apparatus and method Download PDF

Info

Publication number
JP3599888B2
JP3599888B2 JP9841596A JP9841596A JP3599888B2 JP 3599888 B2 JP3599888 B2 JP 3599888B2 JP 9841596 A JP9841596 A JP 9841596A JP 9841596 A JP9841596 A JP 9841596A JP 3599888 B2 JP3599888 B2 JP 3599888B2
Authority
JP
Japan
Prior art keywords
branch
syntax
branch destination
determination
index
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.)
Expired - Lifetime
Application number
JP9841596A
Other languages
Japanese (ja)
Other versions
JPH09288581A (en
Inventor
裕 太田
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP9841596A priority Critical patent/JP3599888B2/en
Publication of JPH09288581A publication Critical patent/JPH09288581A/en
Application granted granted Critical
Publication of JP3599888B2 publication Critical patent/JP3599888B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータシステムにて用いられるオブジェクト生成装置及びその方法に関し、特に、多分岐判断構文を有する高級言語を機械命令(オブジェクト)に変換する際に、オブジェクト効率を向上させることのできるオブジェクト生成装置及びその方法に関する。
【0002】
【従来の技術】
高級言語の多分岐判断構文のオブジェクト生成については従来からコンパイラで様々な方法が試みられている。数学的には、多分岐の比較の対象となる定数の値をすべて集めて一つの集合とすると、ある変数に格納された値がその集合の中の一つに一致しているかどうかを調べる問題は、検索アルゴリズムに帰着する。検索にはさまざまな数学的アルゴリズムが存在するため、検索に対応する機械命令を出力する多分岐判断構文のオブジェクト生成も、さまざまな方式が考えられる。
【0003】
検索のアルゴリズムを多分岐判断構文のオブジェクト生成に応用する場合、検索の結果、変数に格納された値が集合の中にあったかどうかの情報の他に、分岐すべき分岐先アドレスの情報も得られるような機械命令を出力しなければならない。
【0004】
検索と分岐先アドレスの決定の両方を同時に行い、実行速度効率、オブジェクト効率の両方を損なわない機械命令を出力するため、従来では多分岐判断構文のオブジェクトを生成する際の最適化処理の方法として、比較命令と条件分岐命令をすべて出力する方法(以下、比較命令列を用いた最適化処理と記す)や、範囲を限定して分岐先テーブルを出力する方法(以下、分岐先テーブルを用いた最適化処理と記す)といったものが利用されている。各分岐の比較の対象となる定数が連続した整数値である場合は、範囲を限定して分岐先テーブルを出力する方法の方がより効率的な機械命令を出力することが出来る。
【0005】
一般的なオブジェクト生成装置のブロック図を図4に示す。このオブジェクト生成装置は、高級言語100に記述された字句の置き換えを行うマクロ展開部210と、高級言語100の文法の解析を行う構文解析部220と、この解析された高級言語100から高級言語の種類に依存しないコードである中間コードを生成する中間コード生成部230と、この生成された中間コードの各種の最適化を行う中間コード最適部240と、この最適化された中間コードからアセンブラコード(機械命令)を生成するアセンブラコード生成部250と、この生成されたアセンブラコードをオブジェクトコード(機械語)300に翻訳するアセンブラコードコンパイル部260と、を備えるものである。
【0006】
ここで、中間コード最適化部240における最適化処理には、上述した多分岐判断構文の最適化処理が含まれる。この多分岐判断構文とは、所定の条件により分岐する先が2以上の構文であり、代表的なものとして、ある整数型の変数に格納された値により、指定された定数と一致した場合にその定数ラベルへ分岐する構文であるC言語のswitch文を挙げることができる。以下、多分岐判断構文として、C言語のswitch文を例に取りC言語からのオブジェクトの生成方法について説明する。
【0007】
まず、比較命令列を用いた最適化処理について説明する。この最適化処理は、最も簡潔な方法で、整数型の変数に格納された値を、指定されたすべての定数と次々に比較して行き、一致した場合にその定数ラベルの実行式文に相当する機械命令列へ分岐するような機械命令を出力する方法である。指定されたどの定数も一致しなかった場合はdefaultラベルの実行式文に相当する機械命令列へ分岐するような機械命令を出力する。この比較命令列を用いた最適化処理は中間コード生成部230にて行われる中間コードの生成の過程で行ってもよいが(すなわち、最適化処理として取り扱わずに中間コードの生成処理として取り扱うこともできるが)、ここでは以下の説明の便宜上最適化処理として取り扱う。
【0008】
この比較命令列を用いた最適化処理にて最適化された中間コードについてのアセンブラコードの典型例を以下に示す。
【0009】

Figure 0003599888
この出力機械命令の性能については次のようになる。整数型の変数に格納された値が、指定された定数を確率的に均等に取り得るものと仮定すると、switch文に入ってから一致した定数ラベルへ分岐までに要する平均実行時間は、
(Tbcc* n)/2
である。但し、Tbccは比較命令と条件分岐命令の2命令に要する実行時間、nは指定された定数ラベルの総個数である。
【0010】
また、一致した定数ラベルへ分岐する処理に対応する部分の機械命令の静的なオブジェクトサイズは、
(Sbcc* n)+Sbra
である。但し、Sbccは比較命令と条件分岐命令の2命令の命令長、Sbraは無条件分岐の命令長である。従って、平均実行時間、静的オブジェクトサイズともにnの増加に伴なって増加する。
【0011】
図5に示すC言語のswitch文について、比較命令列を用いた最適化処理方法でオブジェクト生成を行った結果を図6に示した。
【0012】
次に、分岐先テーブルを用いた最適化処理について説明する。指定された定数が連続している場合には、分岐先テーブルを作成し、そのテーブルを参照する機械命令を出力するこの最適化処理が利用できる。
【0013】
まず、整数型の変数に格納された値が、指定された定数の中の最小値と最大値の間に含まれているかを調べる命令列を出力する。その間に含まれない場合は、defaultラベルの実行式文に相当する機械命令列へ分岐するような命令列を出力する。その間に含まれていた場合は、整数型の変数に格納された値から、指定された定数の中の最小値を減算し、その結果の値をインデックスとして分岐先テーブルから対応する分岐先を取り出す命令列を出力する。
【0014】
なお、インデックスとは、テーブルに格納されたデータのうち、何番目のデータを示すかを意味する値である。又、分岐先テーブルには、指定された定数の中の最小値とそれぞれのインデックスを加えた値に相当する定数ラベルへの分岐先アドレスが格納されているデータの列である。
【0015】
この分岐先テーブルを用いた最適化処理にて最適化された中間コードについてのアセンブラコードの典型例を以下に示す。
【0016】
Figure 0003599888
上記のS0ラベルは、分岐先テーブルの先頭アドレスを示す。分岐先テーブルには順番に、定数0,1,2,に対応する定数ラベルへの分岐先アドレスが格納されている。
【0017】
この出力機械命令の性能については次のようになる。整数型の変数に格納された値が、指定された定数を確率的に均等に取り得るものと仮定すると、switch文に入ってから一致した定数ラベルへ分岐までに要する平均実行時間は、
Tbcc+Tld+Tjmp
である。但し、Tbccは比較命令と条件分岐命令の2命令に要する実行時間、Tldは分岐先テーブルからアドレスデータをロードするのに要する時間、TjmpはPC相対分岐に要する時間である。
【0018】
また、一致した定数ラベルへ分岐する処理に対応する部分の機械命令の静的なオブジェクトサイズは、
Sbcc+Sld+Sjmp+(Saddr* n)
である。但し、Sbccは比較命令と条件分岐命令の2命令の命令長、Sldは分岐先テーブルからアドレスデータをロードする命令の命令長、SjmpはPC相対分岐命令の命令長、Saddrは分岐先アドレスに必要なバイト数で、(Saddr* n)は分岐先テーブルのデータサイズを表す。
【0019】
図6に示すC言語のswitch文について、分岐先テーブルを用いた最適化処理方法でオブジェクト生成を行った結果を図7に示した。
【0020】
【発明が解決しようとする課題】
しかしながら、従来の多分岐判断構文のオブジェクト生成方法においては、出力機械命令の動的実行速度効率の向上を重点においてきたため、出力機械命令のオブジェクト効率の向上が不十分である。とくに分岐先テーブルを出力する場合、すべての分岐についての分岐先アドレスのテーブルを出力するのは、オブジェクトサイズが増加する恐れがある。
【0021】
多分岐判断構文の例として、図8のようなC言語のswitch文を取り上げ、分岐先テーブルを用いて最適化処理を行った結果を図9に示す。図8のように分岐の数が多いにも関わらず、分岐先の種類の数が少ない場合であっても、インデックスを各々持つため、オブジェクトの効率が悪かった。例えば、オブジェクトを格納するための装置(メモリ装置等)の容量に制限がある等の理由の出力機械命令のオブジェクト効率を重視する場合は、従来のオブジェクト生成方法だけでは不十分であった。
【0022】
本発明は上記事情に鑑みて成されたものであり、その目的とするところは、高級言語の多分岐判断構文のコンパイル結果である機械命令のオブジェクトコードの効率を図ることのできるオブジェクト生成装置及びその方法を提供することにある。
【0023】
【課題を解決するための手段】
上記目的を達成するため、第1の発明の特徴は、高級言語から生成された中間コードに対して最適化を行う中間コード最適化部と、この最適化された中間コードから生成されたアセンブラコードのコンパイルを行いオブジェクトコードを生成するアセンブラコードコンパイル部とを備えたオブジェクトコード生成装置において、前記中間コード最適化部は、多分岐判断構文の中間コードに対し、前記多分岐判断構文の各分岐の分岐先のうち、互いに異なる分岐先のみが登録される分岐先テーブルと、前記多分岐判断構文の各分岐の分岐先のインデックスが登録されるインデックステーブルと、を具備させ、前記分岐先を段階的に示すようにすることである。
ここで、前記中間コード最適化部は、前記多分岐判断構文に関する情報を収集する多分岐判断構文情報収集手段と、この多分岐判断構文情報収集手段にて収集された情報により分岐先テーブルを作成するか否かの判断を行う分岐先テーブル作成判断手段と、この分岐先テーブル作成判断手段にて分岐先テーブルを作成すると判断された多分岐判断構文に対し、前記多分岐判断構文情報収集手段にて収集された情報によりインデックステーブルを作成するか否かの判断を行うインデックステーブル作成判断手段と、このインデックステーブル作成判断手段にてインデックステーブルを作成すると判断された多分岐判断構文に対して、前記多分岐判断構文の各分岐の分岐先のうち、互いに異なる分岐先のみが登録される分岐先テーブルと、前記多分岐判断構文の各分岐の分岐先のインデックスを示すインデックステーブルと、により分岐先を段階的に示すように最適化処理を行う第1の最適化処理手段と、を備えることが好ましい。
【0024】
また、前記分岐先テーブル作成判断手段にて分岐先テーブルを作成しないと判断された多分岐判断構文に対して比較命令列を用いた最適化処理を行う第2の最適化処理手段と、前記インデックステーブル作成判断手段にてインデックステーブルを作成しないと判断された多分岐判断構文に対して分岐先テーブルを用いた最適化処理を行う第3の最適化処理手段と、をさらに備えることが好ましい。
【0025】
上記目的を達成するため、第2の発明の特徴は、コンピュータを用いて、高級言語から生成された中間コードに対して最適化を行い、この最適化された中間コードから生成されたアセンブラコードのコンパイルを行いオブジェクトコードを生成するオブジェクトコード生成方法において、前記最適化の際に、多分岐判断構文の中間コードに対し、前記多分岐判断構文の各分岐の分岐先のうち、互いに異なる分岐先のみが登録された分岐先テーブルと、前記多分岐判断構文の各分岐の分岐先のインデックスが登録されるインデックステーブルと、を具備させ、前記中間コードが前記分岐先を段階的に示すようにする最適化処理を前記コンピュータが行うことである。
【0026】
ここで、コンピュータを用いた前記最適化の際に多分岐判断構文の中間コードに対し、コンピュータが、前記多分岐判断構文に関する情報を収集する多分岐判断構文情報収集ステップと、この多分岐判断構文情報収集ステップにて収集された情報により分岐先テーブルを作成するか否かの判断をコンピュータが行う分岐先テーブル作成判断ステップと、この分岐先テーブル作成判断ステップにて分岐先テーブルを作成すると判断された多分岐判断構文に対し、前記多分岐判断構文情報収集ステップにて収集された情報によりインデックステーブルを作成するか否かの判断をコンピュータが行うインデックステーブル作成判断ステップと、このインデックステーブル作成判断ステップにてインデックステーブルを作成すると判断された多分岐判断構文に対して、前記多分岐判断構文の各分岐の分岐先のうち、互いに異なる分岐先のみが登録される分岐先テーブルと、前記多分岐判断構文の各分岐の分岐先のインデックスを示すインデックステーブルとを具備させ分岐先を段階的に示すようにする最適化処理をコンピュータが行う最適化処理ステップと、を含むことが好ましい。
【0027】
【発明の実施の形態】
以下、本発明に係るオブジェクト生成装置及びその方法の実施の形態について、図面を参照しながら説明する。
【0028】
第1の実施形態
図1は本実施形態に係るオブジェクト生成装置のブロック図を示したものである。このオブジェクト生成装置は、図4にて説明した中間コード最適化部240のうち、多分岐判断構文最適化部241の構成を示したものである。この多分岐判断構文最適化部241は、多分岐判断構文に関する情報を収集する多分岐判断構文情報収集手段1と、この多分岐判断構文情報収集手段1にて収集された情報により分岐先テーブルを作成するか否かの判断を行う分岐先テーブル作成判断手段3と、この分岐先テーブル作成判断手段3にて分岐先テーブルを作成すると判断された多分岐判断構文に対し、多分岐判断構文情報収集手段1にて収集された情報によりインデックステーブルを作成するか否かの判断を行うインデックステーブル作成判断手段5と、このインデックステーブル作成判断手段5にてインデックステーブルを作成すると判断された多分岐判断構文に対して、多分岐判断構文の各分岐の分岐先のうち、互いに異なる分岐先のみが登録される分岐先テーブルと、前記多分岐判断構文の各分岐の分岐先のインデックスを示すインデックステーブルと、により分岐先を段階的に示すように最適化処理を行う最適化処理手段7と、を備えるものである。
【0029】
多分岐判断構文情報収集手段1は、以降の各手段における判断に用いるための各種の情報を収集する。ここで、情報とは、例えば、分岐判断構文の定数ラベルの総数や、その各ラベルの定数値に関するものである。
分岐先テーブル作成判断手段3は、分岐先テーブルを作成するか否かの判断を行う。ここで、この判断は、従来のオブジェクト生成装置でも様々な方法が試みられているが、基本的な基準としては、オブジェクト効率優先の機械命令を出力したければ、
{(Sbcc* n)+Sbra}−{Sbcc+Sld+Sjmp+(Saddr* n)}=(Sbcc−Saddr)* n−(Sbcc+Sld+Sjmp−Sbra)
の正負によって分岐先テーブルを作成するか否かを決定できる。また、実行速度効率優先の機械命令を出力したければ、
{(Tbcc* n)/2}−{Tbcc+Tld+Tjmp}
の正負によって分岐先テーブルを作成するか否かの判断を行うことができる。
【0030】
インデックステーブル作成判断手段5は、分岐先テーブルを作成すると判断された多分岐判断構文に対して、多分岐判断構文情報収集手段1にて収集された情報によりインデックステーブルを作成するか否かの判断を行う。
【0031】
ここで、多分岐判断構文にて指定された定数ラベルのうち、複数の定数ラベルが同じ分岐先アドレスをもつ場合は、分岐先テーブルに登録される分岐先アドレスの中に同じデータが現れることになる。次のようなswitch文を例にして説明を行う。
【0032】
Figure 0003599888
まず、これを従来の分岐先テーブルを用いた方法で機械命令を出力すると次のようになる。
【0033】
Figure 0003599888
この出力機械命令の性能はすでに述べたように静的オブジェクトサイズは、
Sbcc+Sld+Sjmp+(Saddr* n)
であり、平均実行時間は、
Tbcc+Tld+Tjmp
である。上記の場合、分岐先テーブルには2種類の分岐先アドレスしかない。
【0034】
次に、分岐先テーブル及びインデックステーブルを用いた最適化処理により、分岐先テーブルは2種類の分岐先テーブルだけのテーブルとし、各定数ラベルに対するテーブルとしては、分岐先テーブルへのインデックスを登録したテーブルへの参照を利用するようした場合には、出力機械命令は次のようになる。
【0035】
Figure 0003599888
この出力機械命令の性能は次のようになる。静的オブジェクトサイズは、
Sbcc+Sld+Sldb+Sjmp+(Sddr* kind)+n
である。但し、Sldbはインデックステーブルから1バイトデータをロードする命令の命令長、kindは定数ラベルの分岐先のうち、異なった分岐先の種類を示す数である。分岐先の種類が255以下ならばインデックスの値は1バイトで済むため、オブジェクトサイズは指定された定数ラベルの数と1バイトを掛けたものとなる。平均実行時間は、
Tbcc+Tld+Tldb+Tjmp
である。但し、Tldbはインデックステーブルから1バイトデータをロードする命令に要する実行時間である。
【0036】
分岐先テーブルのみを用いた場合と分岐先テーブル及びインデックステーブルを用いた場合の性能について比較して見ると、
(分岐先テーブルのみの場合の実行時間)−(分岐先テーブル及びインデックステーブルを用いた場合の実行時間)
であるから、
={Tbcc+Tld+Tldb+Tjmp}−{Tbcc+Tld+Tjmp}=Tldb
となり、実行時間ではわずかに悪くなるが、この値は定数ラベルの数や、異なった分岐先の種類などに依存しない。オブジェクトサイズでは、
(分岐先テーブルを用いた最適化処理のオブジェクトサイズ)−(分岐先テーブル及びインデックステーブルを用いた最適化処理のオブジェクトサイズ)={Sbcc+Sld+Sldb+Sjmp+(Saddr* kind)+n}−{Sbcc+Sld+Sjmp+(Saddr* n)}=Sldb+kind−(Saddr−1)* (n−kind)
となる。これは正にも負にもなり得るが、kindに比べてnが非常に大きい場合はnが大きければ大きいほどオブジェクトサイズが削減されることになる。
【0037】
(分岐先テーブルのみの場合のオブジェクトサイズ)<(分岐先テーブル及びインデックステーブルを用いた場合のオブジェクトサイズ)となる条件をkindについて解くと、
kind<{(Saddr−1)* n−Sldb}/Saddr
という解を得る。分岐先の種類kindが、定数ラベルの総数nに対して上式の条件を満たす場合、分岐先テーブルのみのような機械命令を出力した方がオブジェクトサイズが有利になる。
【0038】
最適化処理手段7は、インデックステーブル作成判断手段5にてインデックステーブルを作成すると判断された多分岐判断構文に対して分岐先テーブル及びインデックステーブルを用いた最適化処理を行う。以下、この分岐先テーブル及びインデックステーブルを用いた最適化処理を説明する。
【0039】
多分岐判断構文の例として、図8に示したようなC言語のswitch文を取り上げ、本手段により最適化処理を行った結果を図3に示す。図示の如く、多分岐判断構文の各分岐の分岐先のうち、互いに異なる分岐先のみが登録される分岐先テーブルと、多分岐判断構文の各分岐の分岐先のインデックスが登録されるインデックステーブルとにより分岐先を段階的に示すようにしてある。このような最適化処理を行うことで、所定の場合にはオブジェクトのサイズを小さくすることができるのである。
【0040】
本実施形態によれば、自動的に分岐先テーブル及びインデックステーブルを用いた場合のオブジェクト生成装置及びその方法を実施することにより、オブジェクト効率の向上が実現する。
【0041】
また、本実施形態のオブジェクト生成装置はC言語のswitch文だけでなく、多分岐判断構文をもつ言語のコンパイラで使用することができる。
【0042】
第2の実施形態
上記第1の実施形態においては、インデックステーブルを作成すると判断された多分岐判断構文のみに対して最適化のための処理を行う説明を行ったが、分岐先テーブル作成判断手段3及びインデックステーブル作成判断手段5の判断によって最適化処理の内容を変えるようにすることもできる。この場合の処理のフローチャートを図2に示す。このフローチャートを用いて本実施形態に係るオブジェクト生成装置の動作を説明する。
【0043】
まず、定数ラベルの総数と各ラベルの定数値の情報収集を行う(ステップS101)。続いて、この情報収集により、分岐先テーブルの作成が可能か否かの判断を行う(ステップS102)。この判断は、上述の分岐先テーブル作成判断手段3で説明したような手法により判断を行うことができる。これにより、分岐先テーブルの作成を行うと判断しない場合には、比較命令列を用いた最適化処理を行う(ステップS103)。この最適化処理の説明は上述したので、ここでは省略する。
【0044】
続いて、分岐先テーブルの作成が可能と判断された場合には、多分岐判断構文のラベルと分岐先の対応付けを行う(ステップS104)。この対応付けにより、分岐先の種類の個数を調べてインデックステーブルの作成が可能か否かの判断を行う(ステップS105)。この判断は、上述のインデックステーブル作成判断手段5で説明したような手法により判断を行うことができる。これにより、分岐先テーブルの作成を行うと判断しない場合には、分岐先テーブルを用いた最適化処理を行う(ステップS106)。この最適化処理の説明は上述したので、ここでは省略する。
【0045】
続いて、インデックステーブルの作成が可能と判断された場合には、分岐先テーブル及びインデックステーブルを用いた最適化処理を行う(ステップS107)。
【0046】
このように、本実施形態によれば、自動的に最適なオブジェクトを生成することができる。また、本実施形態では高級言語の多分岐判断構文の最適化が強力になるため、出力機械命令のオブジェクト効率が向上する。
【0047】
これにより、コンパイラの出力結果の機械命令をROMに記録した場合、ROMの使用量が削減できるなどの利点がある。
【0048】
【発明の効果】
以上説明してきたように、本発明に係るオブジェクト生成装置及びその方法によれば、高級言語の多分岐判断構文のコンパイル結果である機械命令のオブジェクトコードの効率を図ることができる。
【図面の簡単な説明】
【図1】本発明に係るオブジェクト生成装置の多分岐判断構文最適化部を示すブロック図である。
【図2】本発明に係るオブジェクト生成方法の多分岐判断構文最適化の処理フローを示す図である。
【図3】図8のswitch文を本発明の方式でコンパイルした結果である。
【図4】一般的なオブジェクト生成装置を示すブロック図である。
【図5】多分岐判断構文の一例であるC言語のswitch文である。
【図6】図5のswitch文をCコンパイラでコンパイルした結果の一例である。
【図7】図5のswitch文をCコンパイラでコンパイルした結果の一例である。
【図8】本実施形態を説明するために用いた多分岐判断構文である。
【図9】図8のswitch文を従来の方式でコンパイルした結果の一例である。
【符号の説明】
1 多分岐判断構文情報収集手段
3 分岐先テーブル作成手段
5 インデックステーブル作成手段
7 最適化処理手段
11 中間コード
13 最適化済中間コード
100 高級言語
200 オブジェクトコード生成部
210 マクロ展開部
220 構文解析部
230 中間コード生成部
240 中間コード最適化部
241 多分岐判断構文最適化部
250 アセンブラコード生成部
260 アセンブラコードコンパイル部
300 オブジェクトコード[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to an object generation apparatus and method used in a computer system, and more particularly to object generation that can improve object efficiency when converting a high-level language having a multi-branch decision syntax into machine instructions (objects). The present invention relates to an apparatus and a method thereof.
[0002]
[Prior art]
Conventionally, various methods have been tried by compilers for generating objects of a multi-branch decision syntax of a high-level language. Mathematically, when all values of constants to be compared in a multi-branch comparison are collected into one set, the problem of checking whether the value stored in a variable matches one of the sets Results in a search algorithm. Since various mathematical algorithms exist for searching, various methods can be considered for generating a multi-branch decision syntax object that outputs a machine instruction corresponding to the searching.
[0003]
When the search algorithm is applied to the generation of a multi-branch decision syntax object, the search results include information on whether a value stored in a variable is in a set and information on a branch destination address to be branched. Must output such machine instructions.
[0004]
In order to output both machine speed and object efficiency without losing both execution speed efficiency and object efficiency, both search and branch destination address determination are performed at the same time. , A method of outputting all comparison instructions and conditional branch instructions (hereinafter, referred to as optimization processing using a comparison instruction sequence), and a method of outputting a branch destination table with a limited range (hereinafter, using a branch destination table) Optimization processing) is used. When the constants to be compared in each branch are continuous integer values, a method of outputting a branch destination table with a limited range can output a more efficient machine instruction.
[0005]
FIG. 4 shows a block diagram of a general object generation device. The object generating apparatus includes a macro expansion unit 210 for replacing a lexical element described in the high-level language 100, a syntax analysis unit 220 for analyzing the grammar of the high-level language 100, and a high-level language An intermediate code generation unit 230 that generates an intermediate code that is a code independent of the type, an intermediate code optimization unit 240 that performs various optimizations of the generated intermediate code, and an assembler code ( An assembler code generation unit 250 that generates a machine instruction) and an assembler code compilation unit 260 that translates the generated assembler code into an object code (machine language) 300.
[0006]
Here, the optimization processing in the intermediate code optimization unit 240 includes the above-described optimization processing of the multi-branch determination syntax. This multi-branch judgment syntax is a syntax that branches to two or more according to a predetermined condition, and is typically used when a value stored in a certain integer-type variable matches a specified constant. A switch statement in C language, which is a syntax for branching to the constant label, can be given. Hereinafter, a method of generating an object from the C language will be described using a C language switch statement as an example of the multi-branch determination syntax.
[0007]
First, an optimization process using a comparison instruction sequence will be described. This optimization is the simplest way to compare the value stored in an integer variable with all the specified constants one after another, and if they match, it is equivalent to the execution statement of the constant label. This is a method of outputting a machine instruction that branches to a sequence of machine instructions. If none of the specified constants match, a machine instruction that branches to a machine instruction sequence corresponding to the executable expression statement of the default label is output. The optimization process using the comparison instruction sequence may be performed in the process of generating the intermediate code performed by the intermediate code generation unit 230 (that is, the optimization process is not performed as the optimization process but is performed as the intermediate code generation process). However, here, it is handled as optimization processing for the convenience of the following description.
[0008]
A typical example of the assembler code for the intermediate code optimized by the optimization process using the comparison instruction sequence is shown below.
[0009]
Figure 0003599888
The performance of this output machine instruction is as follows. Assuming that the value stored in the integer type variable can take the specified constant stochastically equally, the average execution time required from entering the switch statement to branching to the matched constant label is:
(Tbcc * n) / 2
It is. Here, Tbcc is the execution time required for two instructions, a comparison instruction and a conditional branch instruction, and n is the total number of designated constant labels.
[0010]
The static object size of the machine instruction corresponding to the process of branching to the matched constant label is
(Sbcc * n) + Sbra
It is. Here, Sbcc is the instruction length of two instructions, a comparison instruction and a conditional branch instruction, and Sbra is the instruction length of an unconditional branch. Therefore, both the average execution time and the static object size increase as n increases.
[0011]
FIG. 6 shows the result of object generation for the switch statement in the C language shown in FIG. 5 by the optimization processing method using a comparison instruction sequence.
[0012]
Next, optimization processing using the branch destination table will be described. When the specified constants are continuous, this optimization processing of creating a branch destination table and outputting a machine instruction referring to the table can be used.
[0013]
First, an instruction sequence for checking whether a value stored in an integer type variable is included between a minimum value and a maximum value in a specified constant is output. If not included, an instruction sequence that branches to a machine instruction sequence corresponding to the executable expression statement of the default label is output. If it is included in the meantime, the minimum value in the specified constant is subtracted from the value stored in the integer type variable, and the corresponding branch destination is extracted from the branch destination table using the resulting value as an index. Output instruction sequence.
[0014]
Note that the index is a value indicating the number of data among the data stored in the table. The branch destination table is a data column in which the branch destination address to a constant label corresponding to the value obtained by adding the minimum value of the designated constants and the respective indexes is stored.
[0015]
A typical example of the assembler code for the intermediate code optimized by the optimization processing using the branch destination table is shown below.
[0016]
Figure 0003599888
The S0 label indicates the start address of the branch destination table. The branch destination table stores the branch destination addresses to the constant labels corresponding to the constants 0, 1, 2, and 2 in order.
[0017]
The performance of this output machine instruction is as follows. Assuming that the value stored in the integer type variable can take the specified constant stochastically equally, the average execution time required from entering the switch statement to branching to the matched constant label is:
Tbcc + Tld + Tjmp
It is. Here, Tbcc is an execution time required for two instructions of a comparison instruction and a conditional branch instruction, Tld is a time required to load address data from a branch destination table, and Tjmp is a time required for a PC relative branch.
[0018]
The static object size of the machine instruction corresponding to the process of branching to the matched constant label is
Sbcc + Sld + Sjmp + (Saddr * n)
It is. However, Sbcc is the instruction length of the comparison instruction and the conditional branch instruction, Sld is the instruction length of the instruction for loading address data from the branch destination table, Sjmp is the instruction length of the PC relative branch instruction, and Saddr is the branch destination address. (Saddr * n) represents the data size of the branch destination table.
[0019]
FIG. 7 shows the result of object generation for the switch statement in the C language shown in FIG. 6 by the optimization processing method using the branch destination table.
[0020]
[Problems to be solved by the invention]
However, in the conventional object generation method of the multi-branch decision syntax, the improvement of the dynamic execution speed efficiency of the output machine instruction has been emphasized, and the improvement of the object efficiency of the output machine instruction is insufficient. In particular, when outputting a branch destination table, outputting a table of branch destination addresses for all branches may increase the object size.
[0021]
As an example of the multi-branch determination syntax, a switch statement in C language as shown in FIG. 8 is taken up, and the result of performing an optimization process using a branch destination table is shown in FIG. Even if the number of branches is small, as shown in FIG. 8, even if the number of types of branch destinations is small, the efficiency of the object is low because each index is provided. For example, when emphasizing the object efficiency of an output machine instruction due to a limitation in the capacity of a device (memory device or the like) for storing an object, the conventional object generation method alone is not sufficient.
[0022]
The present invention has been made in view of the above circumstances, and an object of the present invention is to provide an object generation apparatus and an object generation apparatus capable of improving the efficiency of object code of a machine instruction which is a result of compiling a multi-branch judgment syntax of a high-level language. It is to provide the method.
[0023]
[Means for Solving the Problems]
In order to achieve the above object, a first aspect of the present invention is an intermediate code optimizing unit for optimizing an intermediate code generated from a high-level language, and an assembler code generated from the optimized intermediate code. And an assembler code compiling unit that compiles the multi-branch decision syntax with respect to the intermediate code of the multi-branch decision syntax. A branch destination table in which only different branch destinations among the branch destinations are registered; and an index table in which an index of a branch destination of each branch of the multi-branch determination syntax is registered. As shown in FIG.
The intermediate code optimizing unit creates a multi-branch decision syntax information collecting unit that collects information on the multi-branch decision syntax, and creates a branch destination table based on the information collected by the multi-branch decision syntax information collecting unit. Branch destination table creation determining means for determining whether or not to perform branching; and a multi-branch determination syntax information collection means for a multi-branch determination syntax determined to create a branch destination table by the branch destination table creation determining means. Index table creation determining means for determining whether or not to create an index table based on the information collected by the above, and a multi-branch determination syntax determined to create an index table by the index table creation determining means. A branch destination table in which only different branch destinations among the branch destinations of each branch of the multi-branch determination syntax are registered; It is preferable to provide the index table indicating an index of a branch destination of the branch Toki determined syntax, a first optimization processing means for performing optimization processing to indicate the branch target stepwise manner, the.
[0024]
A second optimization processing unit that performs an optimization process using a comparison instruction sequence for a multi-branch determination syntax determined not to create a branch destination table by the branch destination table creation determination unit; It is preferable to further include third optimization processing means for performing optimization processing using a branch destination table for a multi-branch determination syntax determined not to create an index table by the table creation determination means.
[0025]
In order to achieve the above object, a feature of the second invention is that an intermediate code generated from a high-level language is optimized using a computer, and an assembler code generated from the optimized intermediate code is optimized. In the object code generation method of compiling and generating an object code, in the optimization, only the different branch destinations among the branch destinations of the respective branches of the multi-branch determination syntax are compared with the intermediate code of the multi-branch determination syntax. And an index table in which an index of a branch destination of each branch of the multi-branch judgment syntax is registered, and the intermediate code indicates the branch destination in a stepwise manner. The computer performs the conversion process.
[0026]
A multi-branch decision syntax information collecting step in which a computer collects information on the multi-branch decision syntax with respect to the intermediate code of the multi-branch decision syntax at the time of the optimization using a computer; A branch destination table creation determining step in which a computer determines whether to create a branch destination table based on the information collected in the information collecting step, and it is determined that the branch destination table is created in the branch destination table creation determining step. An index table creation determining step in which a computer determines whether or not to create an index table based on the information collected in the multi-branch determination syntax information collecting step for the multi-branch determination syntax information; Multi-branch format judged to create an index table by For the syntax, a branch destination table in which only different branch destinations among the branch destinations of each branch of the multi-branch determination syntax are registered, and an index table indicating an index of a branch destination of each branch of the multi-branch determination syntax And an optimization processing step in which a computer performs an optimization processing for indicating a branch destination in a stepwise manner.
[0027]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, an embodiment of an object generation device and a method thereof according to the present invention will be described with reference to the drawings.
[0028]
First Embodiment FIG. 1 shows a block diagram of an object generating apparatus according to the present embodiment. This object generation device shows the configuration of the multi-branch decision syntax optimization unit 241 of the intermediate code optimization unit 240 described with reference to FIG. The multi-branch decision syntax optimizing unit 241 includes a multi-branch decision syntax information collecting unit 1 for collecting information on the multi-branch decision syntax, and a branch destination table based on the information collected by the multi-branch decision syntax information collecting unit 1. Branch destination table creation determining means 3 for determining whether or not to create a branch destination table; and multi-branch determination syntax information collection for a multi-branch determination syntax determined to be created by the branch destination table creation determining means 3 An index table creation determining means 5 for determining whether or not to create an index table based on the information collected by the means 1, and a multi-branch determination syntax determined by the index table creation determining means 5 to create an index table. A branch destination table in which only different branch destinations among the branch destinations of each branch of the multi-branch decision syntax are registered, And index table indicating an index of a branch destination of the branch of a multi-branch decision syntax, the optimization processing unit 7 for performing an optimization process to indicate the branch target stepwise by, those comprising a.
[0029]
The multi-branch judgment syntax information collecting means 1 collects various information to be used for judgment in each of the following means. Here, the information relates to, for example, the total number of constant labels in the branch decision syntax and the constant value of each label.
The branch destination table creation determining means 3 determines whether to create a branch destination table. Here, various methods have been tried in the conventional object generation device for this determination, but as a basic criterion, if a machine instruction with priority on object efficiency is to be output,
{(Sbcc * n) + Sbra}-{Sbcc + Sld + Sjmp + (Saddr * n)} = (Sbcc-Saddr) * n- (Sbcc + Sld + Sjmp-Sbra)
Whether or not to create a branch destination table can be determined according to the sign. Also, if you want to output a machine instruction that gives priority to execution speed efficiency,
{(Tbcc * n) / 2}-{Tbcc + Tld + Tjmp}
It can be determined whether or not to create a branch destination table based on the sign of.
[0030]
The index table creation determining means 5 determines whether or not to create an index table based on the information collected by the multi-branch determination syntax information collecting means 1 for the multi-branch determination syntax determined to create a branch destination table. I do.
[0031]
Here, among the constant labels specified in the multi-branch judgment syntax, when multiple constant labels have the same branch destination address, the same data appears in the branch destination address registered in the branch destination table. Become. The following description is given using a switch statement as an example.
[0032]
Figure 0003599888
First, this is output as a machine instruction according to a conventional method using a branch destination table, as follows.
[0033]
Figure 0003599888
The performance of this output machine instruction is, as already mentioned, the static object size is
Sbcc + Sld + Sjmp + (Saddr * n)
And the average execution time is
Tbcc + Tld + Tjmp
It is. In the above case, the branch destination table has only two types of branch destination addresses.
[0034]
Next, by the optimization process using the branch destination table and the index table, the branch destination table is a table of only two types of branch destination tables, and the table for each constant label is a table in which an index to the branch destination table is registered. If a reference to is used, the output machine instruction would be:
[0035]
Figure 0003599888
The performance of this output machine instruction is as follows. The static object size is
Sbcc + Sld + Sldb + Sjmp + (Sddr * kind) + n
It is. Here, Sldb is the instruction length of the instruction for loading 1-byte data from the index table, and kind is a number indicating the type of a different branch destination among the branch destinations of the constant label. If the type of the branch destination is 255 or less, the value of the index only needs to be 1 byte, and the object size is obtained by multiplying the number of designated constant labels by 1 byte. The average execution time is
Tbcc + Tld + Tldb + Tjmp
It is. Here, Tldb is the execution time required for an instruction to load 1-byte data from the index table.
[0036]
Comparing the performance when using only the branch destination table and the performance when using the branch destination table and the index table,
(Execution time when using only the branch destination table)-(Execution time when using the branch destination table and the index table)
Because
= {Tbcc + Tld + Tldb + Tjmp}-{Tbcc + Tld + Tjmp} = Tldb
And the execution time is slightly worse, but this value does not depend on the number of constant labels or the types of different branch destinations. In object size,
(Object size of optimization processing using branch destination table)-(Object size of optimization processing using branch destination table and index table) = {Sbcc + Sld + Sldb + Sjmp + (Saddr * kind) + n}-{Sbcc + Sld + Sjmp + (Saddr * n) } = Sldb + kind− (Saddr−1) * (n-kind)
It becomes. This can be positive or negative, but if n is very large compared to kind, the larger n is, the smaller the object size will be.
[0037]
Solving the condition of (object size in the case of only the branch destination table) <(object size in the case of using the branch destination table and the index table) for the kind,
kind <{(Saddr-1) * n-Sldb} / Saddr
Get the solution. When the kind kind of the branch destination satisfies the above equation with respect to the total number n of the constant labels, it is more advantageous to output a machine instruction such as only the branch destination table for the object size.
[0038]
The optimization processing unit 7 performs an optimization process using the branch destination table and the index table for the multi-branch determination syntax determined to create the index table by the index table creation determination unit 5. Hereinafter, optimization processing using the branch destination table and the index table will be described.
[0039]
As an example of the multi-branch determination syntax, a switch statement in the C language as shown in FIG. 8 is taken up, and the result of performing optimization processing by this means is shown in FIG. As shown in the figure, a branch destination table in which only different branch destinations among the branch destinations of each branch of the multi-branch determination syntax are registered, and an index table in which an index of each branch destination of each branch of the multi-branch determination syntax is registered. , The branch destination is indicated in a stepwise manner. By performing such optimization processing, the size of the object can be reduced in a predetermined case.
[0040]
According to the present embodiment, the object efficiency is improved by implementing the object generating apparatus and the method for automatically using the branch destination table and the index table.
[0041]
Further, the object generating apparatus according to the present embodiment can be used not only with a switch statement in the C language but also with a compiler in a language having a multi-branch determination syntax.
[0042]
Second Embodiment In the above-described first embodiment, the description has been given of the case where the processing for optimization is performed only on the multi-branch determination syntax determined to create the index table. 3 and the contents of the optimization processing can be changed by the judgment of the index table creation judging means 5. FIG. 2 shows a flowchart of the process in this case. The operation of the object generation device according to the present embodiment will be described using this flowchart.
[0043]
First, information on the total number of constant labels and the constant value of each label is collected (step S101). Subsequently, it is determined whether or not the branch destination table can be created by this information collection (step S102). This determination can be made by the method described in the branch destination table creation determining means 3 described above. As a result, when it is not determined that the branch destination table is to be created, the optimization process using the comparison instruction sequence is performed (step S103). Since the description of this optimization processing has been described above, it is omitted here.
[0044]
Subsequently, when it is determined that the branch destination table can be created, the label of the multi-branch determination syntax is associated with the branch destination (step S104). By this association, the number of branch destination types is checked to determine whether an index table can be created (step S105). This determination can be made by the method described in the index table creation determining means 5 described above. As a result, if it is not determined that a branch destination table is to be created, an optimization process using the branch destination table is performed (step S106). Since the description of this optimization processing has been described above, it is omitted here.
[0045]
Subsequently, when it is determined that an index table can be created, an optimization process using the branch destination table and the index table is performed (step S107).
[0046]
As described above, according to the present embodiment, an optimal object can be automatically generated. Further, in the present embodiment, since the optimization of the multi-branch judgment syntax of a high-level language is powerful, the object efficiency of the output machine instruction is improved.
[0047]
As a result, when the machine instruction output from the compiler is recorded in the ROM, there is an advantage that the amount of use of the ROM can be reduced.
[0048]
【The invention's effect】
As described above, according to the object generating apparatus and the method thereof according to the present invention, it is possible to improve the efficiency of the object code of the machine instruction that is the result of compiling the multi-branch judgment syntax of a high-level language.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a multi-branch decision syntax optimizing unit of an object generating apparatus according to the present invention.
FIG. 2 is a diagram showing a processing flow of a multi-branch decision syntax optimization of the object generation method according to the present invention.
FIG. 3 shows the result of compiling the switch statement in FIG. 8 by the method of the present invention.
FIG. 4 is a block diagram showing a general object generation device.
FIG. 5 is a C language switch statement which is an example of a multi-branch determination syntax.
FIG. 6 is an example of a result of compiling the switch statement in FIG. 5 with a C compiler.
FIG. 7 is an example of a result of compiling the switch statement in FIG. 5 with a C compiler.
FIG. 8 is a multi-branch judgment syntax used for describing the present embodiment.
FIG. 9 is an example of a result of compiling the switch statement in FIG. 8 by a conventional method.
[Explanation of symbols]
1 multi-branch judgment syntax information collecting means 3 branch destination table creating means 5 index table creating means 7 optimizing processing means 11 intermediate code 13 optimized intermediate code 100 high-level language 200 object code generating section 210 macro expanding section 220 syntax analyzing section 230 Intermediate code generator 240 Intermediate code optimizer 241 Multi-branch decision syntax optimizer 250 Assembler code generator 260 Assembler code compiler 300 Object code

Claims (5)

高級言語から生成された中間コードに対して最適化を行う中間コード最適化部と、
この最適化された中間コードから生成されたアセンブラコードのコンパイルを行いオブジェクトコードを生成するアセンブラコードコンパイル部とを備えたオブジェクトコード生成装置において、
前記中間コード最適化部は、多分岐判断構文の中間コードに対し、
前記多分岐判断構文の各分岐の分岐先のうち、互いに異なる分岐先のみが登録される分岐先テーブルと、
前記多分岐判断構文の各分岐の分岐先のインデックスが登録されるインデックステーブルと、
を具備させ、前記分岐先を段階的に示すようにする最適化処理を行うことを特徴とするオブジェクト生成装置。
An intermediate code optimizer for optimizing intermediate code generated from a high-level language,
An object code generation device comprising: an assembler code compiling unit that compiles assembler code generated from the optimized intermediate code to generate an object code.
The intermediate code optimization unit, for the intermediate code of the multi-branch decision syntax,
A branch destination table in which only different branch destinations among the branch destinations of the respective branches of the multi-branch judgment syntax are registered;
An index table in which a branch destination index of each branch of the multi-branch judgment syntax is registered;
And performing an optimization process to indicate the branch destination in a stepwise manner.
前記中間コード最適化部は、
前記多分岐判断構文に関する情報を収集する多分岐判断構文情報収集手段と、この多分岐判断構文情報収集手段にて収集された情報により分岐先テーブルを作成するか否かの判断を行う分岐先テーブル作成判断手段と、
この分岐先テーブル作成判断手段にて分岐先テーブルを作成すると判断された多分岐判断構文に対し、前記多分岐判断構文情報収集手段にて収集された情報によりインデックステーブルを作成するか否かの判断を行うインデックステーブル作成判断手段と、
このインデックステーブル作成判断手段にてインデックステーブルを作成すると判断された多分岐判断構文に対して、前記多分岐判断構文の各分岐の分岐先のうち、互いに異なる分岐先のみが登録される分岐先テーブルと、前記多分岐判断構文の各分岐の分岐先のインデックスを示すインデックステーブルと、により分岐先を段階的に示すように最適化処理を行う第1の最適化処理手段と、
を備えることを特徴とする請求項1記載のオブジェクト生成装置。
The intermediate code optimization unit,
A multi-branch judgment syntax information collecting means for collecting information on the multi-branch judgment syntax, and a branch destination table for determining whether to create a branch destination table based on the information collected by the multi-branch judgment syntax information collecting means Creation determination means,
For the multi-branch determination syntax determined to create a branch destination table by the branch destination table creation determining means, it is determined whether or not to create an index table based on the information collected by the multi-branch determination syntax information collecting means. Index table creation determining means for performing
A branch destination table in which only the different branch destinations among the branch destinations of each branch of the multi-branch determination syntax are registered for the multi-branch determination syntax determined to create an index table by the index table creation determining means. A first optimization processing means for performing an optimization process so as to indicate the branch destination step by step by using an index table indicating an index of a branch destination of each branch of the multi-branch determination syntax;
The object generation apparatus according to claim 1, further comprising:
前記オブジェクト生成装置は、
前記分岐先テーブル作成判断手段にて分岐先テーブルを作成しないと判断された多分岐判断構文に対して比較命令列を用いた最適化処理を行う第2の最適化処理手段と、
前記インデックステーブル作成判断手段にてインデックステーブルを作成しないと判断された多分岐判断構文に対して分岐先テーブルを用いた最適化処理を行う第3の最適化処理手段と、
をさらに備えることを特徴とする請求項2記載のオブジェクト生成装置。
The object generation device,
A second optimization processing unit that performs an optimization process using a comparison instruction sequence for a multi-branch determination syntax determined not to create a branch destination table by the branch destination table creation determination unit;
Third optimization processing means for performing an optimization process using a branch destination table for a multi-branch determination syntax determined not to create an index table by the index table creation determination means;
The object generating apparatus according to claim 2, further comprising:
コンピュータを用いて、高級言語から生成された中間コードに対して最適化を行い、この最適化された中間コードから生成されたアセンブラコードのコンパイルを行いオブジェクトコードを生成するオブジェクトコード生成方法において、
前記最適化の際に、多分岐判断構文の中間コードに対し、
前記多分岐判断構文の各分岐の分岐先のうち、互いに異なる分岐先のみが登録された分岐先テーブルと、
前記多分岐判断構文の各分岐の分岐先のインデックスが登録されるインデックステーブルと、
を具備させ、前記中間コードが前記分岐先を段階的に示すようにする最適化処理を前記コンピュータが行うことを特徴とするオブジェクト生成方法。
An object code generation method for optimizing intermediate code generated from a high-level language using a computer, compiling assembler code generated from the optimized intermediate code and generating object code,
At the time of the optimization, for the intermediate code of the multi-branch decision syntax,
A branch destination table in which, among the branch destinations of each branch of the multi-branch decision syntax, only different branch destinations are registered;
An index table in which a branch destination index of each branch of the multi-branch judgment syntax is registered;
Wherein the computer performs an optimization process for causing the intermediate code to indicate the branch destination in a stepwise manner.
コンピュータを用いた前記最適化の際に多分岐判断構文の中間コードに対し、
コンピュータが、前記多分岐判断構文に関する情報を収集する多分岐判断構文情報収集ステップと、
この多分岐判断構文情報収集ステップにて収集された情報により分岐先テーブルを作成するか否かの判断をコンピュータが行う分岐先テーブル作成判断ステップと、
この分岐先テーブル作成判断ステップにて分岐先テーブルを作成すると判断された多分岐判断構文に対し、前記多分岐判断構文情報収集ステップにて収集された情報によりインデックステーブルを作成するか否かの判断をコンピュータが行うインデックステーブル作成判断ステップと、
このインデックステーブル作成判断ステップにてインデックステーブルを作成すると判断された多分岐判断構文に対して、前記多分岐判断構文の各分岐の分岐先のうち、互いに異なる分岐先のみが登録される分岐先テーブルと、前記多分岐判断構文の各分岐の分岐先のインデックスを示すインデックステーブルとを具備させ分岐先を段階的に示すようにする最適化処理をコンピュータが行う最適化処理ステップと、
を含むことを特徴とする請求項4記載のオブジェクト生成方法。
For the intermediate code of the multi-branch decision syntax at the time of the optimization using a computer ,
A computer for collecting information on the multi-branch judgment syntax information collecting step;
A branch destination table creation determining step in which a computer determines whether to create a branch destination table based on the information collected in the multi-branch determination syntax information collecting step,
For the multi-branch determination syntax determined to create a branch destination table in the branch destination table creation determination step, it is determined whether or not to create an index table based on the information collected in the multi-branch determination syntax information collection step. An index table creation determining step performed by a computer ;
A branch destination table in which only different branch destinations among the branch destinations of each branch of the multi-branch determination syntax are registered for the multi-branch determination syntax determined to create an index table in the index table creation determining step. An optimization processing step in which a computer performs an optimization process for providing an index table indicating an index of a branch destination of each branch of the multi-branch determination syntax so as to indicate the branch destination in a stepwise manner;
5. The method according to claim 4, further comprising:
JP9841596A 1996-04-19 1996-04-19 Object generation apparatus and method Expired - Lifetime JP3599888B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9841596A JP3599888B2 (en) 1996-04-19 1996-04-19 Object generation apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9841596A JP3599888B2 (en) 1996-04-19 1996-04-19 Object generation apparatus and method

Publications (2)

Publication Number Publication Date
JPH09288581A JPH09288581A (en) 1997-11-04
JP3599888B2 true JP3599888B2 (en) 2004-12-08

Family

ID=14219199

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9841596A Expired - Lifetime JP3599888B2 (en) 1996-04-19 1996-04-19 Object generation apparatus and method

Country Status (1)

Country Link
JP (1) JP3599888B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5117029B2 (en) * 2006-10-17 2013-01-09 株式会社野村総合研究所 Program execution system
JP4989418B2 (en) * 2007-10-26 2012-08-01 三菱電機株式会社 Program conversion apparatus, program, and program conversion method
JP6193151B2 (en) * 2013-03-01 2017-09-06 株式会社東芝 Multi-branch decision syntax optimization processor

Also Published As

Publication number Publication date
JPH09288581A (en) 1997-11-04

Similar Documents

Publication Publication Date Title
JP4118456B2 (en) Program language processing system, code optimization method, and machine-readable storage medium
US5920723A (en) Compiler with inter-modular procedure optimization
JP2755154B2 (en) Program conversion processing device and program conversion processing method
US6817013B2 (en) Program optimization method, and compiler using the same
JP3190773B2 (en) Compile processing method of language processing program
JPH11212797A (en) Program conversion method, program converter and medium for storing program conversion program
JP2004234126A (en) Compiler and compiling method
JPH0814817B2 (en) Automatic vectorization method
US20040128660A1 (en) Efficient dead code elimination
JPH02205929A (en) Compiling system
US7784039B2 (en) Compiler, compilation method, and compilation program
JP3606387B2 (en) Compilation device
JP3599888B2 (en) Object generation apparatus and method
JP4044756B2 (en) Program conversion device, program conversion method, and program for realizing the program conversion device
KR20080045545A (en) Method of pre-processing conditional region
JP5385103B2 (en) Macro expansion method and preprocessor
JP4754909B2 (en) Compiler device, compiling method, compiler program
JPH0756745A (en) Compiler processing system for language processing program
JP4019361B2 (en) Parallelization conversion system, parallelization conversion method, program, and compiler
JP2956591B2 (en) Method and apparatus for parallelizing a loop having a conditional jump out of the loop
JP3675166B2 (en) Program processing apparatus and recording medium
KR20010037625A (en) Method and apparatus for binary program translation
JP2789977B2 (en) Execution information collection program generation device
JPH09160784A (en) Paralleled compiling system
JP2003162416A (en) Program conversion apparatus, program conversion method and computer program for realizing the apparatus

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040720

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040831

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040915

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070924

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080924

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080924

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090924

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090924

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100924

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110924

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110924

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120924

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120924

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130924

Year of fee payment: 9

EXPY Cancellation because of completion of term