JPH0535491A - Fortran言語からc言語への変換における引数変換方法 - Google Patents

Fortran言語からc言語への変換における引数変換方法

Info

Publication number
JPH0535491A
JPH0535491A JP21470091A JP21470091A JPH0535491A JP H0535491 A JPH0535491 A JP H0535491A JP 21470091 A JP21470091 A JP 21470091A JP 21470091 A JP21470091 A JP 21470091A JP H0535491 A JPH0535491 A JP H0535491A
Authority
JP
Japan
Prior art keywords
argument
program
fortran
updated
address
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
JP21470091A
Other languages
English (en)
Inventor
Hajime Nishikaze
一 西風
Minoru Harada
稔 原田
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP21470091A priority Critical patent/JPH0535491A/ja
Publication of JPH0535491A publication Critical patent/JPH0535491A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 FORTRAN言語プログラムからC言語プ
ログラムに変換する際、各プログラム単位の引数を解析
し、引数をアドレスで渡すか、値で渡すかを適切に決め
効率のよいCプログラムに変換する方法を提供する。 【構成】 FORTRAN言語プログラムのプログラム
単位の呼出し関係を示す呼出しグラフb−1と、各プロ
グラム単位の引数の関係を示す結合グラフb−2を作成
し、各プログラム単位ごとに引数の更新の有無を調べ、
前記グラフを用いて全体として引数の更新の有無を決定
し、変換の際、引数としてアドレスを用いるか値を用い
るかを決め効率のよいC言語プログラムに変換する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、FORTRAN言語で
記述されたプログラムを解析しC言語のプログラムに変
換するコンバ−タにおいて、効率のよいC言語プログラ
ムに変換するための引数の変換方法に関するものであ
る。
【0002】
【従来技術】従来の技術によるFORTRAN言語で記
述されたソ−スプログラムをC言語のソ−スプログラム
に変換する方法を図2に示す。一般にFORTRANプ
ログラムは、主プログラム、複数個のサブルーチン副プ
ログラム、関数副プログラムのプログラム単位で構成さ
れ、その間のデ−タの授受は、引数や共通ブロックデ−
タを用いて行われる。引数の受渡しはアドレスで行うよ
うに文法で規定されているため、呼び出されたプログラ
ム単位での引数の更新(サブルーチン副プログラムとか
関数副プログラムから引数を通して呼び出した親プログ
ラムの変数を更新すること)の有無に関係なく引数の受
渡しをアドレスで行うC言語プログラムに変換してい
た。
【0003】
【発明が解決しようとする課題】しかしながら、C言語
プログラムでは、引数の受渡しをアドレスと値の両方で
行うことが出来るにもかかわらず、FORTRAN言語
からC言語に変換されたプログラムの引数の処理は、更
新のない引数の場合でも、受渡しをアドレスで行ってい
るため、次の問題が生じて効率のよいプログラムが得ら
れなかった。
【0004】実引数に定数又は式が指定された場合C
言語プログラムではテンポラリ変数を確保し一旦その変
数に代入しその変数のアドレスを実引数に指定しなけれ
ばならない。 仮引数の値を参照する場合、そのつど渡されたアドレ
スから値を取り出さなければならない。又このためCコ
ンパイラの最適化に適さないC言語プログラムとなる。
アドレスによる受渡しの問題の例をそれぞれ図2の、
に示す。
【0005】本発明は上述の点に鑑みてなされたもの
で、上記問題点を解決するために引数の受渡しを値で行
うことの出来る引数を検出し、引数の受渡しをアドレス
で行うか或いは、値で行うかを引数ごとに決定し効率の
よいC言語プログラムに変換する方法を提供することを
目的とする。
【0006】
【課題を解決するための手段】上記課題を解決するため
本発明は、図1(b)に示すように主プログラムから順
次呼出していくプログラム単位の関係を示す呼出しグラ
フと、各プログラム単位で使用される引数の名前との関
係を示す結合グラフを作成し、下位のプログラム単位か
ら上位のプログラム単位に向かって引数が更新されてい
るかどうかを調べ、C言語プログラムに変換する際に、
更新される引数には、その変数のアドレスを用い、更新
のない場合は値を用いる方式とした。
【0007】
【作用】本発明では、上述したように呼出しグラフと結
合グラフにより、引数の名前が途中で如何に変化して
も、相互の関係が明瞭になり、静的に解析することによ
り、使用される全プログラムを通して更新される引数を
見つけることが出来、それぞれの引数に対応した変換を
することにより効率のよいC言語プログラムに変換する
事が可能となる。
【0008】
【実施例】以下本発明の一実施例を図面に基づいて詳細
に説明する。図1は本発明の引数変換方法の処理手順を
示すブロック図である。まず主Nプログラムから順次下
位のプログラムに向かって呼出し命令(CALL又は、
関数名)を探索し、呼出し側のプログラム名と呼出され
たプログラム名をノ−ドとし呼出し側のプログラムと呼
出されたプログラムの呼出し関係をエッジとする有効グ
ラフを作成する(図1b−1)。FORTRANプログ
ラムでは、プログラム単位の再帰呼出しが許されないた
め、このグラフは戻りのないグラフとなる(ステップS
T1)。
【0009】次に仮引数の結合グラフを作成する。プロ
グラム単位呼出し時の仮引数の結合関係を記録し、呼出
し側の仮引数又は共通ブロックデ−タと呼ばれる側の仮
引数をノ−ドとし呼出し側のデータと呼ばれる側の仮引
数の結合関係をエッジとする結合グラフを作成する(ス
テップST2)。記録する結合関係は、実引数に共通ブ
ロックデ−タを指定することによって、共通ブロックデ
−タと仮引数の結合関係(*1)、同じプログラム単位
の異なる実引数に同じデ−タを指定することによる仮引
数どうしの結合関係(*2)、及び仮引数をそのままプ
ログラム単位の実引数にすることによる仮引数どうしの
結合関係がある(*3)。
【0010】仮引数及び共通ブロックデ−タのプログラ
ム単位内でのソ−ス上での更新を記録する。即ち、代入
文の左辺又は、入力文で引数の変数名が現れた場合は、
その引数は更新されたとして記録する。(ステップST
3)。
【0011】次にステップ1で作成した呼出しグラフの
下位より上位プログラムに向かって、そのプログラム単
位の仮引数の更新の有無を検証する。まず仮引数の更新
の有無をステップ3の記録より調べ、そのプログラム単
位での更新がなければ、仮引数と結合している結合グラ
フより取得し、そのデータのプログラム単位内での更新
の有無をステップ3の記録より調べ結合しているすべて
のデータに更新がなければ、その仮引数は、そのプログ
ラム単位で更新されない。そうでなければ更新されると
見做す。次に現プログラム単位でのデータの更新情報を
現プログラム単位を呼び出す親プログラム単位でのデー
タの更新情報に追加する。更新のある仮引数と結合する
親プログラム単位の実引数データは、親プログラム単位
で更新されたと見做す。現プログラム単位で更新のあっ
た共通ブロックデータは、親プログラム単位でも更新さ
れたと見做す。共通ブロックデ−タの更新情報は、一個
でも更新されるデ−タがあればその共通ブロック名に属
しているデ−タは、一括して更新されるとして扱う。以
上の検証の結果更新される仮引数に関しては、引数の受
渡しをアドレスで行い、更新のない仮引数については引
数の受渡しを値で行うと決定する。(ステップST
4)。
【0012】上記の決定に従いC言語プログラムに変換
の際、更新される引数に関しては、引数に&を付けアド
レスを渡し、関数側では、*を付けポインタ−変数とし
て受けるように変換し、更新のない引数に関しては、そ
のまま値で渡すように変換する。(ステップST5)。
【0013】
【発明の効果】以上、詳細に説明したように本発明によ
れば、下記のような効果が期待される。FORTRAN
プログラムを静的に解析することにより引数が直接その
プログラム単位で更新されるか又は、間接的に他の呼び
出したプログラム単位で更新されるかを把握することが
できるため、引数ごとに引数の受渡しをアドレスで行う
か又は、値で行うかを決定することが出来る。従って従
来の引数の受渡しをすべてアドレスで行う方法と比べる
と、効率のよいCプログラムに変換することができる。
【図面の簡単な説明】
【図1】図1(a)は本発明の引数変換方法の処理手順
を示すブロック図、同図(b)は呼出しグラフと結合グ
ラフを示す図、同図(c)はFORTRANソ−スプロ
グラムの例を示す図である。
【図2】従来方法による変換の例を示す図である。
【図3】本発明による変換の例を示す図である。

Claims (1)

  1. 【特許請求の範囲】 【請求項1】 FORTRAN言語で記述されたソ−ス
    プログラムを解析しC言語で記述されたソ−スプログラ
    ムに変換するコンバ−タにおいて、 FORTRAN言語で記述されたプログラム単位を引数
    ごとに解析し、 引数の内容が更新される場合はC言語プログラムの引数
    としてアドレスを用い、更新されない場合は引数として
    値を用いることによって、効率のよいC言語プログラム
    に変換することを特徴とする引数変換方式。
JP21470091A 1991-07-31 1991-07-31 Fortran言語からc言語への変換における引数変換方法 Pending JPH0535491A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP21470091A JPH0535491A (ja) 1991-07-31 1991-07-31 Fortran言語からc言語への変換における引数変換方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21470091A JPH0535491A (ja) 1991-07-31 1991-07-31 Fortran言語からc言語への変換における引数変換方法

Publications (1)

Publication Number Publication Date
JPH0535491A true JPH0535491A (ja) 1993-02-12

Family

ID=16660159

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21470091A Pending JPH0535491A (ja) 1991-07-31 1991-07-31 Fortran言語からc言語への変換における引数変換方法

Country Status (1)

Country Link
JP (1) JPH0535491A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005182562A (ja) * 2003-12-22 2005-07-07 Matsushita Electric Ind Co Ltd コンパイル方法および装置、ならびにコンパイラ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005182562A (ja) * 2003-12-22 2005-07-07 Matsushita Electric Ind Co Ltd コンパイル方法および装置、ならびにコンパイラ
JP4652680B2 (ja) * 2003-12-22 2011-03-16 パナソニック株式会社 コンパイル方法および装置、ならびにコンパイラ

Similar Documents

Publication Publication Date Title
JP2003280924A (ja) 通信設備で階層構造を有するイベントの処理方法
JPH11212837A (ja) 言語処理方法及び言語処理装置並びに言語処理プログラムを記録した記憶媒体
CN115292058A (zh) 一种业务场景级别服务拓扑生成方法、装置及电子设备
US20020062478A1 (en) Compiler for compiling source programs in an object-oriented programming language
JPH0535491A (ja) Fortran言語からc言語への変換における引数変換方法
JP3318051B2 (ja) 翻訳処理方法
JP2002342078A (ja) プログラム開発システム及び方法
KR19990047339A (ko) 자동 객체 추출방법
CN114844784B (zh) 一种可重构扫描网络的拓扑建模方法
JPH07210397A (ja) プログラム変換方法およびそれを用いたプログラム実行方法
JPH0520093A (ja) モジユールのコンパイル方法およびコンパイル装置
JPH03240837A (ja) デバッグ情報生成装置
JPH07114516A (ja) プログラム並列化方法
CN117827663A (zh) 一种融合静态与动态分析的JavaScript代码回归精简方法
JP2002312167A (ja) 変数の値をコンピュータに算出させるためのプログラム、コンパイルプログラム、変数値確定方法およびプログラム生成方法
JP3278584B2 (ja) コンピュータプログラム生成装置及び方法
JP3450791B2 (ja) プログラムの関数管理装置および関数管理方法ならびに関数管理方法を実行するプログラムを記録した記録媒体
JPH04278632A (ja) ソフトウェア変換・再構成方法
JPH04243424A (ja) 動的リンク方式
CN115421700A (zh) 一种字段转换方法、装置、计算机设备以及存储介质
JPH10293691A (ja) レジスタ割り付け方法
JPH0561687A (ja) コンパイラの処理方式
JPH0351007B2 (ja)
JPH04336333A (ja) 原始プログラムの自動インライン展開方式
JPH05127945A (ja) プログラム実行状況解析方式