JPH05158706A - 中間言語の最適化処理方式 - Google Patents

中間言語の最適化処理方式

Info

Publication number
JPH05158706A
JPH05158706A JP35028091A JP35028091A JPH05158706A JP H05158706 A JPH05158706 A JP H05158706A JP 35028091 A JP35028091 A JP 35028091A JP 35028091 A JP35028091 A JP 35028091A JP H05158706 A JPH05158706 A JP H05158706A
Authority
JP
Japan
Prior art keywords
intermediate language
language
program
optimization
optimizing
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
JP35028091A
Other languages
English (en)
Inventor
Motohide Tajiri
元秀 田尻
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.)
NIPPON DENKI MICOM TECHNOL KK
Original Assignee
NIPPON DENKI MICOM TECHNOL KK
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 NIPPON DENKI MICOM TECHNOL KK filed Critical NIPPON DENKI MICOM TECHNOL KK
Priority to JP35028091A priority Critical patent/JPH05158706A/ja
Publication of JPH05158706A publication Critical patent/JPH05158706A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 中間言語レベルでの最適化を中間言語最適化
プログラムとしてコード生成部とは独立させる。 【構成】 コンパイラ1が起動されると、意味解析部1
1は、高級言語プログラム2を入力して意味解析を行
い、第1の最適化手段111で最適化を行った上でプロ
グラムの記述が可能であるような記号表現である中間言
語12を出力する。コード生成部13は、中間言語12
を入力し、中間言語最適化記述構文に従って記述された
中間言語最適化プログラム14に基づいて中間言語12
を最適化し、中間言語12を低級言語のオブジェクトコ
ードに変換し、第2の最適化手段132で低級言語レベ
ルでの最適化を行った上で低級言語プログラム3を出力
する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は中間言語の最適化処理方
式に関し、特に高級言語プログラムを低級言語プログラ
ムに変換するコンパイラにおける中間言語の最適化処理
方式に関する。
【0002】
【従来の技術】従来、コンパイラは、高級言語プログラ
ムの名標の解析や構文の解析を行う意味解析部(または
前半部と呼ばれる)と、アセンブラなどの低級言語のオ
ブジェクトコードを生成するコード生成部(または後半
部と呼ばれる)と、意味解析部からコード生成部への情
報の受け渡しのためのデータ構造である中間言語とによ
って構成され、意味解析部で最適化(以下、第1の最適
化という)を行うとともに、コード生成部でも最適化
(以下、第2の最適化という)を行っていた。なお、第
1の最適化に関しては、文献「情報処理シリーズ7,コ
ンパイラ」(A.V.エイホ・J.D.ウルマン著/土
居範久訳,1986年3月,培風館発行)p.15を参
照し、第2の最適化に関しては、同文献p.499を参
照のこと。
【0003】図6は、従来のコンパイラ61の一例を示
すブロック図である。このコンパイラ61は、第1の最
適化手段6111を有する意味解析部611と、中間言
語612と、第2の最適化手段6131を有するコード
生成部613とから構成されている。意味解析部611
は、高級言語プログラム62を入力し、第1の最適化手
段6111により、より速いかより小さいオブジェクト
コードを生成するための第1の最適化を行って中間言語
612を出力する。コード生成部613は、中間言語6
12を入力し、第2の最適化手段6131により、ピー
プホール最適化等の第2の最適化を行って低級言語プロ
グラム63を出力する。
【0004】
【発明が解決しようとする課題】上述した従来のコンパ
イラでは、コード生成部613に記述された第2の最適
化手段6131(最適化プログラム)はハードウェアの
機種に依存する低級言語で記述されていたので、最適化
の記述が面倒であるとともに、異機種への流用性がなく
コンパイラ61の汎用性を向上させる上で障害になると
いう問題点があった。
【0005】なお、中間言語612は意味解析部611
からコード生成部613に渡されるデータ構造として設
計されていたので、中間言語612自身を最適化の記述
に利用することはできなかった。
【0006】本発明の目的は、上述の点に鑑み、中間言
語をプログラムの記述が可能であるような記号表現とし
て設計して中間言語の最適化を記述するための構文(以
下、中間言語最適化記述構文という)を与え、コード生
成部を中間言語最適化記述構文に従って記述された中間
言語最適化プログラムを処理できるように設計して、中
間言語レベルでの最適化を中間言語最適化プログラムと
してコード生成部とは独立させるようにした中間言語の
最適化処理方式を提供することにある。
【0007】
【課題を解決するための手段】本発明の中間言語の最適
化処理方式は、高級言語プログラムを低級言語プログラ
ムに変換するコンパイラにおいて、高級言語プログラム
を入力し意味解析を行いプログラムの記述が可能である
ような記号表現である中間言語を出力する意味解析部
と、前記中間言語を入力し中間言語最適化記述構文に従
って記述された中間言語最適化プログラムに基づいて前
記中間言語を最適化し低級言語プログラムに変換して出
力するコード生成部とを有する。
【0008】
【作用】本発明の中間言語の最適化処理方式では、意味
解析部が高級言語プログラムを入力し意味解析を行いプ
ログラムの記述が可能であるような記号表現である中間
言語を出力し、コード生成部が中間言語を入力し中間言
語最適化記述構文に従って記述された中間言語最適化プ
ログラムに基づいて中間言語を最適化し低級言語プログ
ラムに変換して出力する。
【0009】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
【0010】図1は、本発明の一実施例に係る中間言語
の最適化処理方式が適用されたコンパイラ1の構成を示
すブロック図である。このコンパイラ1は、第1の最適
化手段111を含む意味解析部11と、中間言語12
と、中間言語最適化手段131および第2の最適化手段
132を含むコード生成部13と、中間言語最適化プロ
グラム14とから構成されている。
【0011】意味解析部11は、高級言語プログラム2
を入力して意味解析を行い、第1の最適化手段111に
より第1の最適化を行ってプログラムの記述が可能であ
るような記号表現である中間言語12を出力する。
【0012】コード生成部13は、中間言語12を入力
し、中間言語最適化手段131により中間言語最適化記
述構文に従って記述された中間言語最適化プログラム1
4に基づいて中間言語レベルでの最適化を行ってから、
第2の最適化手段132により第2の最適化を行って低
級言語プログラム3を出力する。コード生成部13が中
間言語最適化記述構文で記述された中間言語最適化プロ
グラム14を処理できるように設計されているため、中
間言語最適化記述構文のみを用いて中間言語レベルの最
適化を中間言語最適化プログラム14として記述するこ
とが可能となる。
【0013】図2は、中間言語最適化プログラム14の
一例を示す図である。この中間言語最適化プログラム1
4は、中間言語最適化記述構文の命令名「define
−instruction」を用いて記号表現により記
述されている。1行目において、中間言語最適化プログ
ラム14に関する宣言を行う。すなわち、(1) 名前
「$block−move」が中間言語最適化プログラ
ム14の中間言語最適化記述の名前であること、(2)
引数の名前「from」,引数の名前「to」および
引数の名前「size」が中間言語最適化プログラム1
4への引数であることを宣言している。
【0014】2行目から6行目までが中間言語最適化記
述構文に従って記述された中間言語最適化プログラム1
4である。この中間言語最適化プログラム14は、
(1) 2行目において、命令名「cond」および命
令名「equal」を用いて、引数の名前「from」
の値と引数の名前「to」の値とが同一のときに値を出
力しないこと、(2) 3行目において、命令名「eq
ual」を用いて、名前「size」の値が0のときに
4行目の値を出力すること、(3) 4行目において、
中間言語命令「($nop)」を出力すること、(4)
5行目において、命令名「t」を用いて、2行目と3
行目との条件に一致しないときに、6行目の値を出力す
ること、(5) 6行目において、中間言語命令「($
bmov from to size)」を出力するこ
とを記述している。
【0015】次に、このように構成された本実施例の中
間言語の最適化処理方式の動作について説明する。
【0016】図3は、中間言語12中の中間言語命令
「($block−move from to siz
e)」の引数の名前「to」の値が引数の名前「fro
m」の値と同一であるときの、中間言語最適プログラム
14に基づいた中間言語12の最適化例を示す図であ
る。すなわち、(1) 意味解析部11は、中間言語1
2中に中間言語命令「($block−move fr
om from size)」121を出力し、(2)
コード生成部13は、中間言語命令「($block
−move from from size)」121
の引数の名前「to」の値と引数の名前「from」の
値とが同一であるので、中間言語最適化手段131によ
り中間言語最適化プログラム14の2行目の記述に従っ
て中間言語命令「($block−move from
from size)」121に最適化を施し、より
新たな中間言語命令を出力せず(符号133参照)、
(3) コード生成部13は、新たな中間言語命令が存
在しないので、中間言語命令「($block−mov
e from from size)」121に対応す
る低級言語命令列を低級言語プログラム3中に出力しな
いこと(符号31参照)を表している。
【0017】ちなみに、図7は、従来のコンパイラ61
において中間言語612中の中間言語命令「($blo
ck−move from to size)」の引数
の名前「to」の値が引数の名前「from」の値と同
一であるときの出力例であり、(1) 意味解析部61
1は、中間言語612中に中間言語命令「($bloc
k−move from from size)」61
21を出力し、(2) コード生成部613は、中間言
語命令「($block−movefrom from
size)」6121の最適化の処理を行わず、
(3) コード生成部613は、中間言語命令「($b
lock−movefrom from size)」
6121を低級言語命令列631に変換して低級言語プ
ログラム63中に出力することを表している。
【0018】図4は、中間言語12中の中間言語命令
「($block−move from to siz
e)」の引数の名前「size」の値が0であるとき
の、中間言語最適化プログラム14に基づいた中間言語
12の最適化例を示す図である。すなわち、(1) 意
味解析部11は、中間言語12中に中間言語命令「($
block−move from to 0)」122
を出力し、(2) コード生成部13は、中間言語命令
「($block−move from to 0)」
122における引数の名前「size」の値が0である
ので、中間言語最適化手段131により中間言語最適化
プログラム14の3行目および4行目の記述に従って中
間言語命令「($block−move fromto
0)」122に最適化を施し、より小さな中間言語命
令(「$nop」)134を出力し、(3) コード生
成部13は、中間言語命令(「$nop」)134を低
級言語命令列32に変換して低級言語プログラム3中に
出力することを表している。
【0019】ちなみに、図8は、従来のコンパイラ61
において中間言語612中の中間言語命令「($blo
ck−move from to size)」の引数
の名前「size」の値が0であるときの出力例を示す
図であり、(1) 意味解析部611は、中間言語61
2中に中間言語命令「($block−move fr
om to 0)」6122を出力し、(2) コード
生成部613は、中間言語命令「($block−mo
vefrom to 0)」6122に最適化の処理を
行わず、(3) コード生成部613は、中間言語命令
「($block−movefrom to 0)」6
122を低級言語命令列632に変換して低級言語プロ
グラム63中に出力することを表している。
【0020】図5は、図2の中間言語最適化プログラム
14に基づいても中間言語12中の中間言語命令「($
block−move from to size)」
が最適化されない一例を示す図である。すなわち、
(1) 意味解析部11は、中間言語命令「($blo
ck−move from to size)」123
を出力し、(2) コード生成部13は、中間言語最適
化プログラム14の5行目および6行目の記述に従って
中間言語命令「($block−move from
to size)」123から中間言語命令「($bm
ov from to size)」135を出力し、
(3)コード生成部13は、中間言語命令「($bmo
v from tosize)」135を低級言語命令
列33に変換して低級言語プログラム3中に出力するこ
とを表している。
【0021】ちなみに、図9は、従来のコンパイラ61
において中間言語612中の中間言語命令「($blo
ck−move from to size)」が最適
化されない場合の出力例であり、(1) 意味解析部6
11は、中間言語612中に中間言語命令「($blo
ck−move from to size)」612
3を出力し、(2) コード生成部613は、中間言語
命令「($block−movefrom to si
ze)」6123に最適化の処理を行わず、(3) コ
ード生成部613は、中間言語命令「($block−
movefrom to size)」6123を低級
言語命令列633に変換して低級言語プログラム63中
に出力することを表している。
【0022】
【発明の効果】以上述べたように本発明は、中間言語を
プログラムの記述が可能であるような記号表現として設
計して中間言語最適化記述構文を与え、コード生成部を
中間言語最適化記述構文に従って記述された中間言語最
適化プログラムを処理できるように設計したことによ
り、中間言語レベルでの最適化を中間言語最適化記述構
文に従って中間言語最適化プログラムとして容易に記述
することができるという効果がある。
【0023】また、中間言語レベルでの最適化を中間言
語最適化プログラムとしてコード生成部から独立させる
ことが可能となり、機種依存性があるコード生成部が小
さくてすむので、コンパイラの汎用性が向上するという
効果がある。
【0024】さらに、中間言語最適化プログラムを異な
る機種のハードウェア上で流用することが可能となるの
で、この点からもコンパイラの汎用性が向上するという
効果がある。
【0025】さらにまた、異なる高級言語間で中間言語
の共通化が可能となり、中間言語レベルでの最適化のイ
ンタフェースが容易になるので、多言語間コンパイラの
実現が容易になるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例に係る中間言語の最適化処理
方式が適用されたコンパイラの構成を示すブロック図で
ある。
【図2】図1中の中間言語最適化プログラムの一例を示
す図である。
【図3】図2の中間言語最適化プログラムに基づく中間
言語の最適化の一例を示す図である。
【図4】図2の中間言語最適化プログラムに基づく中間
言語の最適化の他の例を示す図である。
【図5】図2の中間言語最適化プログラムに基づいても
中間言語が最適化されない一例を示す図である。
【図6】従来のコンパイラの一例を示すブロック図であ
る。
【図7】従来のコンパイラにおける出力の一例を示す図
である。
【図8】従来のコンパイラにおける出力の他の列を示す
図である。
【図9】従来のコンパイラにおける出力の別の例を示す
図である。
【符号の説明】
1 コンパイラ 2 高級言語プログラム 3 低級言語プログラム 11 意味解析部 12 中間言語 13 コード生成部 14 中間言語最適化プログラム 32,33 低級言語命令列 111 第1の最適化手段 121,122,123 中間言語命令 131 中間言語最適化手段 132 第2の最適化手段 134,135 中間言語命令

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 高級言語プログラムを低級言語プログラ
    ムに変換するコンパイラにおいて、 高級言語プログラムを入力し意味解析を行いプログラム
    の記述が可能であるような記号表現である中間言語を出
    力する意味解析部と、 前記中間言語を入力し中間言語最適化記述構文に従って
    記述された中間言語最適化プログラムに基づいて前記中
    間言語を最適化し低級言語プログラムに変換して出力す
    るコード生成部とを有することを特徴とする中間言語の
    最適化処理方式。
JP35028091A 1991-12-09 1991-12-09 中間言語の最適化処理方式 Pending JPH05158706A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP35028091A JPH05158706A (ja) 1991-12-09 1991-12-09 中間言語の最適化処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP35028091A JPH05158706A (ja) 1991-12-09 1991-12-09 中間言語の最適化処理方式

Publications (1)

Publication Number Publication Date
JPH05158706A true JPH05158706A (ja) 1993-06-25

Family

ID=18409427

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35028091A Pending JPH05158706A (ja) 1991-12-09 1991-12-09 中間言語の最適化処理方式

Country Status (1)

Country Link
JP (1) JPH05158706A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014516A (en) * 1996-12-27 2000-01-11 Nec Corporation Language processing system which generates debugging source file corresponding to optimization image and method therefor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014516A (en) * 1996-12-27 2000-01-11 Nec Corporation Language processing system which generates debugging source file corresponding to optimization image and method therefor

Similar Documents

Publication Publication Date Title
WO2009098739A1 (ja) プログラム最適化装置およびプログラム最適化方法
JP3494376B1 (ja) プログラム解析装置およびプログラム
JPH05158706A (ja) 中間言語の最適化処理方式
JP2002268896A (ja) 制御プログラム作成方法とその装置
JPH10187461A (ja) 言語処理方式
JP3003459B2 (ja) プログラム作成支援装置
JP4698943B2 (ja) プログラム生産方法、プログラム生産装置、プログラム自動変換方法、およびプログラム
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置
JPH0210429A (ja) プログラム構造化処理方式
JPH07121379A (ja) 複数言語混在コンパイラ
JP3019874B2 (ja) プログラム生成/合成装置および方法
JPS6361329A (ja) プログラム作成装置
JP3034582B2 (ja) コンパイル処理方式
JP3141945B2 (ja) コンパイル装置
JP2005038212A (ja) プログラム変換方法及び装置及びプログラム変換プログラム及びプログラム変換プログラムを格納した記憶媒体
JPH11195011A (ja) 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体
JPH04248624A (ja) プログラム変換処理装置
JP2674489B2 (ja) ベクトル化処理装置
JP2797777B2 (ja) 言語処理装置
JPS62235643A (ja) プログラム言語トランスレ−タ
JP2613907B2 (ja) コンパイル装置
JPH0561687A (ja) コンパイラの処理方式
JPH0535494A (ja) 高級プログラム言語の対話型最適化コンパイル方式
JPH05341973A (ja) プログラム解析装置
JPH02253443A (ja) プログラム生成方法