JPS5960641A - 呼出し関係解析方法 - Google Patents

呼出し関係解析方法

Info

Publication number
JPS5960641A
JPS5960641A JP57172113A JP17211382A JPS5960641A JP S5960641 A JPS5960641 A JP S5960641A JP 57172113 A JP57172113 A JP 57172113A JP 17211382 A JP17211382 A JP 17211382A JP S5960641 A JPS5960641 A JP S5960641A
Authority
JP
Japan
Prior art keywords
call
procedure
called
procedures
vector
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.)
Granted
Application number
JP57172113A
Other languages
English (en)
Other versions
JPH0351007B2 (ja
Inventor
Tadashi Kusama
草間 正
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 JP57172113A priority Critical patent/JPS5960641A/ja
Publication of JPS5960641A publication Critical patent/JPS5960641A/ja
Publication of JPH0351007B2 publication Critical patent/JPH0351007B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

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)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔発明の技術分野〕 本発明は、翻訳中に呼出し関係リストを作成し、再帰呼
出しされる手続きや呼出されることのない手続きを検出
できるようにしたコンパイラにおける呼出し関係解析方
式に関するものである。
〔従来技術と問題点〕
従来のコンパイラにおいては、入力されるプログラムの
構分チェックなどを行っているが、呼出し関係のチェッ
クを行っていない。例えばA : PROC: CALLB; CALLC; CALLD; RETURN : B:PROC; CALL  C: END  B: C: PROC; END  C; D : PROC; END  D; E  :  PROC; ENDE  : ENDA  : というプログラムにおいては1手続きEは呼出さしてい
ないので、不用である。また、再#吐出しされる手a@
については、入口コードおよび出口コードを付加するこ
とが心安である。しかし、従来のコンパイラは、上記の
ようなチェックを行っていない。また、上記のプログラ
ムにおいては1手続きBとDは同一タイミングで行われ
ることはないので、データ域を共用できるが、従来のコ
ンパイラにおいては、このようなチェックも行っていな
い。
〔発明の目的〕
本発明は、上記の考eVC基づくものでおって。
手続きの呼出し関係のチェックを行い、効率的でエラー
のない実行プログラムを作成できるようにしたコンバイ
ンにおける手続きの呼出し関係解析方式を提供すること
を目的としている。
〔発明の構成〕
そしてそのため、本発明のコンパイラにおける呼出し関
係解析方式は、入力プログラムをオブジェクト−プログ
ラムに変換するコンパイラにおいて、入力されるプログ
ラムに関して手続き毎に呼出している手続きを表わす呼
出ベクトルを作成すきの呼出レベルを表わす初期呼出レ
ベル・リストを作成し、しかる後に上記呼出ベクトルお
よび初期呼出レベル・リストを基に・して、呼出される
ことのない手続きおよび再帰的に呼出される手続きを見
付は出すことを特徴とするものである。
〔発明の実施例〕
以下、本発明を具体的に説明する。本発明の呼出し関係
解析方式は、前処理として下記の処理を行う。
■ 手続き (メイン・ルーチンとサブルーチン)毎に
、呼出している手続きを表わすビット・ベクトルを作成
する。
■ 手続きの呼出しのレベルを表わすリストを作成する
。ただし、メイン−ルーチンと外部から直接呼ばれるサ
ブ・ルーチンは、予めレベル1に設定しておく。
上記の前処理を行った後、下記の処理を行う。
レベル1の手続きから呼ばれる手続きのレベルを2とし
、レベルnの手続きから呼ばれる手続きのレベルをn 
+1とする。レベルmの手続きから呼ばれる手続きがな
くなったら終りとする。このトキ、レベルOのま\で残
っている手続きは、どこからも呼出さ扛ない手続きでお
る。もし、mが手続きの数よりも大きい時は再帰呼出し
があるので、次のようにして再帰呼出しをしている手続
きを検出する。n番目の手続きが呼出す手続きのベクト
ルを初期値とする。呼出された手続きが呼出す手続きも
ベクトルに加える。ベクトルの値が変化しなくなったら
終りとする。もし、そのベクトルの中にn番目の手続き
が含″!、nているならば、n番目の手続きは再帰的に
呼出されている。
以下、本発明を具体例で説明する0いま、下記のような
プログラムがめったとする。
M:PROC; CALL   Sl; RETURN Sl:PROC; CALLS2; CALLS3; RETURN ; S2:PROC; ALLS3 ENDS  2  : S3:PROC; ENDS3 ENDSI: ENDM  : 第1図はこのようなプログラムの呼出し関係解析方法を
説明するものでおる。手続@Mは手続きSlのみを呼出
しているので、その吐出ベクトル(ピント嗜ベクトル)
は、rolooJとなる0手続き81は手続@S2と8
3を呼び出しているので、その呼出ベクトルはrool
lJとなる。手続S2は1手続S3のみを呼出している
ので、その呼出ベクトルはrooolJである。手続s
3は何も呼出してい々いので、その呼出ベクトルはro
oooJである。手続@Mの呼出レベルは1ときれ、初
期状態では呼出レベル・リストは「1000」である。
呼出ベクトルおよび呼出レベル・リストの初期設定が完
了した後、下記の■ないし■の処理が行われる。
■ レベル1の処理 呼出レベル・リストの値がrloooJ、手続@Mの呼
出ベクトルはrolooJであるので、呼出レベル・リ
ストはr1200Jとはれる0 ■ レベル2の処理 呼出レベル・リストの値がr1200J、手続S1の呼
出ベクトルがroollJであるので、呼出レベル・リ
ストはr1233Jとこれる○ ■ レベル3の処理 呼出レベル・リストの値がr1233J、手続S2の呼
出ベクトルがroooIJであるので、呼出レベル・リ
ーストはr1234Jとをれる0 ■ レベル4の処理 呼出レベルΦリストの値がr1234J、手続S2の呼
出ベクトルがroooOJであるのテ、呼出しヘル・リ
ストはr1234」のま\でるる。
上記のプログラムにおいては、手続S1ないしS3の呼
出レベルはゼロではないので、これらの手続きは全て他
の手続きから呼出さ扛ていることが判る。
第2図は再帰呼出しがある場合における手続きの呼出関
係解析方法を説明するものである。いま。
M : PROC: CALL ; RETURN; S:PROC CALLM; ENDS; ENDM  ; なるプログラムがあるとする。手続きMの呼出ベクトル
は「01」でおり、手続きSの呼出ベクトルは「01」
である。第1図と同様に、レベル1の処理を行うと、呼
出レベル・リストは「12」となり、レベル2の処理を
行うと、呼出レベル・リストは「32」となる。呼出レ
ベル・リストの手続Mに対応する位置の数値は3となっ
ているが、手続の数は2であるので、再帰呼出しがらる
ことが判る。このような場合には手続Mの呼出ベクトル
「10」に手続Sの呼出ベクトル「01」を論理的に加
算する。論理的に加算とは、ピット対応に論理和を取る
ことを意味している。手続きMの呼出ベクトル「01」
に、手続tSの呼出ベクトル「10」を加えると、「1
1」となる。呼出さnる手続きのパターンは「11」で
固定でおり。
しかも手続きMが含壕れているので、手続Mは再帰的に
呼出さnている。
次に複数の手続きでデータ領域を共用できる例について
述べる。いま、 M : PROC: CALL  81; CALL  S2: RETURN: Sl:PROC: END  Sl: S2:PROC: END  52 END  M: というプログラムがあったとする。このようなプログラ
ムにおいては、手続きSlとs2は同じ呼出レベルをも
つので、絶対に同じタイミングで使用されることはない
。し友がって、手続@slと82でそれぞれローカルに
使用される領域(例えばレジスタのセーブ・エリア)を
、同じ場所に割付けても問題はない。
コンパイラは、構文解析部、最適化処理部およびコード
生成部から構成はnている。手続きの呼出関係を解析す
る機能は、上記の最適化処理部に設けられる。呼出され
ることのない手続や再帰的に呼出される手続きが検出さ
れた場合には、メツセージが出力さ扛る。プログラム作
成者は、このメツセージを見て心安に応じてコーディン
グの修正を行90 〔発明の効果〕 以上の説明から明らかなように、本発明によれば、プロ
グラムのエラーの検出およびオブジェクト・プログラム
の最適化に役立つ情報をプログラム作成者に提供するこ
とが出来る。
【図面の簡単な説明】
第1図は本発明による手続きの呼出し関係解析方法を説
明する図、第2図は再帰呼出しがある場合における手続
きの呼出し関係解析方法を説明する図でおる。 特許出願人 富士通株式′会社 代理人弁理士  京 谷 四 部

Claims (1)

  1. 【特許請求の範囲】 入力プログラムをオブジェクト・プログラムに変換する
    コンパイラにおいて、入力ざnるプログラムに関して、
    手続き毎に呼出している手続きを衆わす呼出ベクトルを
    作成すると共に、メインやルーチンの手続き又は外部か
    ら直接呼ば扛るサブ、、  ;)i−〜アイ、hい一+
    、よ。オ、ツィ7.ヶよ△ わす初期呼出レベル・リストを作成し、しかる後に上記
    呼出ベクトルおよび初期呼出レベル・リストを基にして
    、呼出さnることのない手続きおよび再帰的に呼出され
    る手続きを見付は出すことを特徴とする呼出し関係解析
    方式。
JP57172113A 1982-09-30 1982-09-30 呼出し関係解析方法 Granted JPS5960641A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP57172113A JPS5960641A (ja) 1982-09-30 1982-09-30 呼出し関係解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP57172113A JPS5960641A (ja) 1982-09-30 1982-09-30 呼出し関係解析方法

Publications (2)

Publication Number Publication Date
JPS5960641A true JPS5960641A (ja) 1984-04-06
JPH0351007B2 JPH0351007B2 (ja) 1991-08-05

Family

ID=15935790

Family Applications (1)

Application Number Title Priority Date Filing Date
JP57172113A Granted JPS5960641A (ja) 1982-09-30 1982-09-30 呼出し関係解析方法

Country Status (1)

Country Link
JP (1) JPS5960641A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61188639A (ja) * 1985-02-15 1986-08-22 Fujitsu Ltd 制御文の処理方式
JP2018508088A (ja) * 2016-01-06 2018-03-22 スタジオ シード コリア インク グラフィックユーザーインターフェースのプロトタイプ製作方法及びその装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
F.E.ALLEN.PROGRAM OPTIMIZATION.ANNUAL REVIEW IN AUTOMATIC PROGRAMMING.PERGAMMON PRESS=1969 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61188639A (ja) * 1985-02-15 1986-08-22 Fujitsu Ltd 制御文の処理方式
JP2018508088A (ja) * 2016-01-06 2018-03-22 スタジオ シード コリア インク グラフィックユーザーインターフェースのプロトタイプ製作方法及びその装置
US10331322B2 (en) 2016-01-06 2019-06-25 Studio Xid Korea, Inc. Method and system for prototyping graphic user interface
US10628022B2 (en) 2016-01-06 2020-04-21 Studio Xid Korea, Inc. Method and system for prototyping graphic user interface

Also Published As

Publication number Publication date
JPH0351007B2 (ja) 1991-08-05

Similar Documents

Publication Publication Date Title
US5717933A (en) Interrupt handling that disables interrupts upon saving the registers
KR20080023728A (ko) 에뮬레이터 성능을 개선하기 위한 가상 코드의 선택적전처리 컴파일
JPS5960641A (ja) 呼出し関係解析方法
US5150474A (en) Method for transferring arguments between object programs by switching address modes according to mode identifying flag
EP0821306A2 (en) High-speed simulation method
US4455604A (en) Digital data processing system having addressing means for translating operands into descriptors identifying data, plural multilevel microcode control means, and ability to execute a plurality of internal language dialects
JP3785596B2 (ja) 関数実行方法、関数実行装置、コンピュータプログラム、及び記録媒体
JP2932812B2 (ja) 言語処理プログラム実行装置
JP2556148B2 (ja) ベクトルレジスタ割付け方式
JP3906669B2 (ja) 例外処理の翻訳方法
JPS58221447A (ja) デ−タ処理装置
JPH081608B2 (ja) プログラム実行解析ツール
JP2819668B2 (ja) 命令の最適化方式
JP2655613B2 (ja) 異種言語手続き混在方式
JPH0293947A (ja) 電子計算機
JPS5958550A (ja) 命令フエツチトラツプ制御方式
JPH06110702A (ja) 手続き呼出し翻訳装置
JPS62216042A (ja) デ−タ領域のメモリ割付方式
JPH031238A (ja) 情報処理装置のコンパイラ
JPS6338729B2 (ja)
KR20000032119A (ko) 어셈블러에서 조건부 분기코드의 분기범위 오류처리 방법.
JPH09190355A (ja) プログラム変換方法
JPS5892041A (ja) デ−タ処理装置
JPS60178544A (ja) プログラムエラ−処理方式
JPH0658632B2 (ja) デ−タ処理装置