JPS64725B2 - - Google Patents

Info

Publication number
JPS64725B2
JPS64725B2 JP17231579A JP17231579A JPS64725B2 JP S64725 B2 JPS64725 B2 JP S64725B2 JP 17231579 A JP17231579 A JP 17231579A JP 17231579 A JP17231579 A JP 17231579A JP S64725 B2 JPS64725 B2 JP S64725B2
Authority
JP
Japan
Prior art keywords
psv
instruction
program
perform
intermediate language
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
Application number
JP17231579A
Other languages
English (en)
Other versions
JPS5697152A (en
Inventor
Takaaki Ikeda
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP17231579A priority Critical patent/JPS5697152A/ja
Publication of JPS5697152A publication Critical patent/JPS5697152A/ja
Publication of JPS64725B2 publication Critical patent/JPS64725B2/ja
Granted legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 本発明は、COBOLのPERFORM命令における
目的プログラムの最適化方式に関するものであ
る。
COBOLのPERFORM命令には書き方がいくつ
かあるが、以下の説明では書き方の違いは依存し
ないので、基本的な書き方のみを示す。

PERFORM手続き名―1〔THRU―手続き名―
2〕 PERFORM命令の機能は、手続き名―1に制
御を移し、手続き名―1(または手続き名―2)
に属する最後の命令を実行した後に制御を
PERFORM命令の次に戻すことである。IBM、
OS F2/F4/X3では共に第1図に示すように1
つのPERFORM命令で指定された手続きの実行
中に、それと出口を共有する他のPERFORM命
令の実行を許している。図中、,,…は制
御の移行順序を示している。
PERFORM命令をコンパイルする従来の方法
は、基本的には出口に行先変更可能な分岐命令を
生成し、PERFORMでは出口の行先に復帰アド
レスを設定して飛べばよいが、それだけでは第1
図の第2番目のPERFORM命令で第1番目の
PERFORMの設定した復帰アドレスを破壊して
しまうので、実際には先ず出口の行先を退避して
から復帰アドレスを設定して飛び、帰つてきたあ
と出口の行先を復元するという作業が行われる。
第2図において、PSV1とPSV2は退避域、VNは
分岐先アドレス、GN1とGN2は復帰先アドレス
GO VNは分岐命令をそれぞれ示している。第2
図に示すようにPERFORM A THRU Cは PSV1←VN VN←GN1 GO A GN1 VN←PSV1 という命令列に変換される。
PSV1←VNでは出口の分岐先アドレスが退避
域PSV1に退避され、VN←GN1では復帰点アド
レスが分岐先アドレスで指定された記憶場所に格
納され、GO AではアドレスAに飛び、GN1
VN←PSV1は退避域PSV1の内容が分岐先アドレ
スVNで指定された記憶場所にセツトされること
を示している。
PERFORM B THRU Cも PSV2←VN VN ←GN2 GO B GN2 VN←PSV2 という命令列に変換される。
従来技術においては、PERFORM命令が入れ
子になつているかを翻訳時に検出できなかつたた
め、常に上記のような展開形が生成されていた。
このため、第3図のような単純の場合には冗長な
オブジエクトを生成していることになり、改善の
余地があつた。第3図において〓印は不要な命令
を示している。
本発明は、PERFORM命令を含むプログラム
を展開するとき、不要な命令を含まないように目
的プログラムに展開できるようになつた目的プロ
グラムの最適化方式を提供することを目的として
いる。そしてそのため、本発明の目的プログラム
の最適化方式は、PERFORM A THRU Cな
るPERFORM命令を PSV←VN VN ←GN GO A GN VN←PSV なる中間言語の命令列に展開すると共に、上記
PERFORM命令で指定されたプログラム・ルー
チンに対応する中間言語のプログラム・ルーチン
の出口に自動復帰機構GO VNを配置して、
PERFORM命令を含むCOBOLのプログラムを中
間言語のプログラムに展開し、該中間言語のプロ
グラムを最適化し最適化された中間言語のプログ
ラムを機械語の目的プログラムに変換する目的プ
ログラムの最適化方式において、 (イ) 自動復帰機構に到るすべてのパスでVN←
GN又はVN←PSVが存在すること、 (ロ) そのパス上で最後に実行されるのはVN←
GNであること、 の2条件を共に満すとき、その自動復帰機構を使
用するPERFORMの展開形の中のPSV←VNお
よびVN←PSVなる中間言語の命令を削除するこ
とを特徴とするものである。
以下、本発明を図面を参照しつつ説明する。
第3図の〓印の命令は、下記の2条件が共に満
たされるとき不要であり、削除してもプログラム
の論理には何らの影響も与えない。
(イ) 自動復帰機構に到る全てのパスでVN←GNx
またはVN←PSVnが存在する。
(ロ) そのパス上で最後に実行されるのは、VN←
GNxである。
なお、自動復帰機構とは第3図のGO VNのこと
である。
次に、上記2条件を満たすか否かの判定方法を
述べる。
(a) プログラムを、1入力・1出力でその中では
制御が記述順に流れるような命令の集まり(以
下、ブロツクという)に分割する。
(b) 各ブロツクごとに、各VNに対して1ビツト
対応するビツト・ベクトル〓bを以下のように
定義する。たゞし、Vbは〓bの成分である。
Vb=0:bの出口でVNは VN←GNxの結果を持つ 1:bの出口でVNは初期値または VN←PSVxの結果を持つ (c) ブロツクbに対して関数fbを次のように定義
する。
fb(V)=0:b中にVNの代入があり、 最後が VN←GNx 1:b中にVNの代入があり、 最後がVN←PSVx V:b中にVNの代入がない (d) ブロツクbに制御が渡つてくる直前のブロツ
ク(Immediate Predecessorと呼ぶ)をb1,b2
…,bnとするとき Vb=fb(Vb1∨Vb2∨…∨Vbn) … によつてVb1…,VbnからVbが求まる。たゞ
し、プログラムの入口ブロツクでは Vb=fb (1) とする。
(e) 式をプログラムの入口から順に適用するこ
とにより、すべてのブロツクでVbが求まる。
自動復帰機構GO VNの存在するブロツクにお
いてVb=0であれば条件(1)、(2)が満されてお
り、Vb=1ならば満されていない。
第4図は一般的なコンパイラの構成図である。
ソース・プログラム(原始プログラム)は中間言
語への展開フエーズによつて中間言語(VN←
PSVやGO VN)に展開され、最適化フエーズに
よつて以下に述べる最適化が行われ、コード生成
フエーズにおいて機械命令(ロードやストア)な
どに展開され、目的プログラムとなる。
第5図は最適化フエーズの処理を示すフローチ
ヤートである。ブロツク分割段階でプログラムを
ブロツクに分割すると共に、各ブロツク内での各
VNへの代入の存否を調べて、関数fb(V)の形
式を定める。フローグラフ作成段階ではブロツク
内の制御の移行を解析し、第6図の左側のような
フローグラフを作成する。ビツト・ベクトル〓b
の計算段階では、入口から順に各ブロツクについ
ての関数fb(V)を適用することによりVbの値を
求める。
以上が終つたら、各VNについてGO VNのあ
るブロツクでのVbの値を調べ、VNのPSVへの
退避(PSV←VN)や回復(VN←PSV)が不要
であるのでこれらを全て削除することにより最適
化を行う。
第6図はフローグラフ、fb(V)の値およびVb
の値の1例を示している。
第7図は自動復帰機構の存在するブロツクにお
いてVbが零であるか否かを検出する装置のブロ
ツク図である。第7図において、1ないし6は単
位計算回路、7は論理「0」の定数発生回路、8
は論理「1」の定数発生回路、9はOR回路、1
0は切換スイツチ、11は出力端子をそれぞれ示
している。関数fbの値はこの切換スイツチ10の
位置に対応する。フローグラフのブロツクb1
b2,…b6のそれぞれに単位計算回路1,2,…6
のそれぞれを対応させ、関数fbの値に従つて切換
スイツチ10の位置を設定する。そして、これら
の単位計算回路1,2,…,6をフローグラフに
従つて結線し入口の単位計算回路1に定数「1」
を入力する。GO VNの存在するブロツクに対応
する単位計算回路3の出力が論理「0」であれば
最適化可能である。実際にはこの最適化処理はソ
フトウエアにより行われるが、その機能は第7図
の装置の機能と同等である。
第8図は第6図の中間言語のプログラムを最適
化した結果を示している。
以上の説明から明らかなように、本発明によれ
ば、PERFORM命令を含むソース・プログラム
を命令数の少ない効率的な機械語命令のプログラ
ムに展開することが出来る。
【図面の簡単な説明】
第1図はPERFORM命令が入れ子構造になつ
ているCOBOLプログラムの1例を示す図、第2
図はPERFORM命令の中間言語への展開の従来
例を示す図、第3図はPERFORM命令を含むプ
ログラムにおいて出口アドレスの退避および出口
アドレスの回復不要の場合を示す図、第4図は一
般的なコンパイラの構成図、第5図は第4図の最
適化フエーズの処理を示すフローチヤート、第6
図はフローグラフとfbの値とVbの値の1例を示
す図、第7図は最適化フエーズの処理を行う装置
のブロツク図、第8図は第6図の中間言語のプロ
グラムを最適化した結果を示す図である。 1ないし6…単位計算回路、7…論理「0」の
定数発生回路、8…論理「1」の定数発生回路、
9…OR回路、10…切換スイツチ、11…出力
端子。

Claims (1)

  1. 【特許請求の範囲】 1 PERFORM A THRU CなるPERFORM
    命令を PSV←VN VN ←GN GO A GN VN←PSV なる中間言語の命令列に展開すると共に、上記
    PERFORM命令で指定されたプログラム・ルー
    チンに対応する中間言語のプログラム・ルーチン
    の出口に自動復帰機構GO VNを配置して、
    PERFORM命令を含むCOBOLのプログラムを中
    間言語のプログラムに展開し、該中間言語のプロ
    グラムを最適化し、最適化された中間言語のプロ
    グラムを機械語の目的プログラムに変換する目的
    プログラムの最適化方式において、 (イ) 自動復帰機構に到るすべてのパスでVN←
    GN又はVN←PSVが存在すること、 (ロ) そのパス上で最後に実行されるのはVN←
    GNであること、 の2条件を共に満すとき、その自動復帰機構を使
    用するPERFORM命令の展開形の中のPSV←
    VNおよびVN←PSVなる中間言語の命令を削除
    することを特徴とするCOBOLのPERFORM命令
    における目的プログラムの最適化方式、 ただし、VNは自動復帰機構の復帰先アドレス
    を示す変数、GNはPERFORM命令の展開形の中
    に定義される自動復帰機構からの復帰点を示すア
    ドレス、PSVはPERFORM命令毎に確保された
    復帰先アドレスの退避域、PSV←VNは変数VN
    を退避域PSVに退避する命令、VN←GNはアド
    レスGNを変数VNに代入する命令、GO Aはア
    ドレスAにジヤンプする命令、VN←PSVは退避
    域PSVの内容を変数VNに代入する命令を示して
    いる。
JP17231579A 1979-12-29 1979-12-29 Optimizing system for objective program Granted JPS5697152A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17231579A JPS5697152A (en) 1979-12-29 1979-12-29 Optimizing system for objective program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17231579A JPS5697152A (en) 1979-12-29 1979-12-29 Optimizing system for objective program

Publications (2)

Publication Number Publication Date
JPS5697152A JPS5697152A (en) 1981-08-05
JPS64725B2 true JPS64725B2 (ja) 1989-01-09

Family

ID=15939630

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17231579A Granted JPS5697152A (en) 1979-12-29 1979-12-29 Optimizing system for objective program

Country Status (1)

Country Link
JP (1) JPS5697152A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11006926B2 (en) 2018-02-27 2021-05-18 Siemens Medical Solutions Usa, Inc. Region of interest placement for quantitative ultrasound imaging

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4567574A (en) * 1983-03-14 1986-01-28 International Business Machines Corporation Optimizing cobol object code instruction path length with respect to perform statements
JPS62207390A (ja) * 1986-03-07 1987-09-11 Mitsubishi Heavy Ind Ltd 赤熱コ−クス乾式消火設備におけるコ−クス装入ホツパ内の可燃ガス処理制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11006926B2 (en) 2018-02-27 2021-05-18 Siemens Medical Solutions Usa, Inc. Region of interest placement for quantitative ultrasound imaging

Also Published As

Publication number Publication date
JPS5697152A (en) 1981-08-05

Similar Documents

Publication Publication Date Title
JPH0522936B2 (ja)
JPS64725B2 (ja)
JPH0528088A (ja) ハードウエア構成情報の自動作成方法
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
JPS6022373B2 (ja) プログラマブル制御装置のプログラム変換機構
US20240202522A1 (en) Device and method for generating deep learning model graph and abstract syntax tree for integrated compiler
US12373195B2 (en) Method of programming a software module associated with a firmware unit of a device
JP2585793B2 (ja) コンパイラシステム
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
JPH0117175B2 (ja)
JPS6126692B2 (ja)
JP3240647B2 (ja) コンピュータ言語の構造化処理方式
JPH0228174B2 (ja)
JPS63269229A (ja) 文字列操作系命令コンパイル処理方式
JPH05100866A (ja) コンパイル・リンク方式
JPH01287486A (ja) テストパターンプログラム生成装置
JPH06103113A (ja) 差分テストデバック支援方法
JPH04205422A (ja) プログラム自動翻訳結合及び選択方法
JP2004139369A (ja) 定数アドレス領域を指示するポインタ解析方法
JPS62219129A (ja) コンパイラにおける和計算の部分展開処理方式
JPH0128414B2 (ja)
JPH06119203A (ja) デバック行削除装置
JPS60126735A (ja) コンパイル方式
JPS60220468A (ja) ベクトル演算制御方式
JPS62182843A (ja) 高速コンパイル/リンク方式