JPH03105628A - 未定義変数引用検査処理方法 - Google Patents

未定義変数引用検査処理方法

Info

Publication number
JPH03105628A
JPH03105628A JP24458289A JP24458289A JPH03105628A JP H03105628 A JPH03105628 A JP H03105628A JP 24458289 A JP24458289 A JP 24458289A JP 24458289 A JP24458289 A JP 24458289A JP H03105628 A JPH03105628 A JP H03105628A
Authority
JP
Japan
Prior art keywords
variable
library
undefined
management table
registered
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
JP24458289A
Other languages
English (en)
Inventor
Yuuji Tsujimori
辻森 誘二
Akihide Tanihira
谷平 明英
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 JP24458289A priority Critical patent/JPH03105628A/ja
Publication of JPH03105628A publication Critical patent/JPH03105628A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔概要〕 実行時に未定義変数の引用検査を行うことができる言語
仕様を持つFORTRAN等の計算機言語を翻訳するコ
ンパイラを備えた計算機システムにおける未定義変数引
用検査処理方法に関し.余分なライブラリ呼び出しの回
数を削減し,翻訳されたプログラムの実行スピードを向
上させることを目的とし. 変数が値の定義される位置で使用されているとき.その
変数を管理テーブルに登録する処理過程と,変数が引用
されているとき,その変数が管理テーブルに登録済みで
あるかどうかを調べ.登録済みであれば,未定義変数引
用検査用のライブラリの呼び出しを不要とし,登録され
ていないときにのみ.未定義変数引用検査用のライブラ
リを呼び出すオブジェクトプログラムを生成する処理過
程とを備えるように構威する。
〔産業上の利用分野〕
本発明は.実行時に未定義変数の引用検査を行うことが
できる言語仕様を持つFORTRAN等の計算機言語を
翻訳するコンパイラを備えた計算機システムにおける未
定義変数引用検査処理方法に関する. 〔従来の技術〕 FORTRANコンパイラ等では,デバッグ(DEBU
G)オプションにより,添字の検査,未定義変数の検出
,・・・など.各種の動作確認が可能なオブジェクトプ
ログラムを生成することができるようになっている. 従来,このデバッグオプシッンのサブパラメタで未定義
変数の検出が指定された場合,コンパイラ内の処理機構
として,未定義変数引用検査(以下,UNDEF検査と
いう)の管理機構を持たないため,オブジェクトプログ
ラムでは,未定義検査対象の変数に対して.必ずUND
EF検査用のライブラリを呼び出すようにしていた.〔
発明が解決しようとする課題〕 従来技術では,各変数に対して,常にUNDEF検査用
ライブラリを呼び出しているので.そのライブラリ呼び
出しのためのオーバヘッドが大きく,実行スピードが遅
いという問題があった.本発明は上記問題点の解決を図
り,余分なライブラリ呼び出しの回数を削減し,翻訳さ
れたプログラムの実行スピードを向上させることを目的
としている. 〔課題を解決するための手段〕 第l図は本発明の構戒例を示す。
第1図において,11は人力装置,12は翻訳対象とな
るソースプログラム,13はCPUおよびメモリなどか
らなる処理装置,14はソースプログラムl2を機械語
に翻訳するコンパイラ,l5はコンパイラ14が使用す
る作業領域.16は定義されている変数を記憶する管理
テーブル,17は翻訳結果の機械語命令などからなるオ
ブジェクトプログラム.18は未定義変数の引用検査を
行うUNDEF検査用ライブラリ,PIおよびP2はコ
ンパイラl4によるUNDEF検査の管理のための処理
過程を表す. UNDEF検査のデバッグオプシヲンが指定されて,コ
ンパイラ14が起動された場合,本発明では.コンパイ
ラl4は,次の処理を行う.処理過程PIにより,現在
注目している中間テキスト化されたソースプログラム1
2中の変数について,その変数が値の定義される位置で
使用されているかどうかを調べる.そして.定義される
位置で使用されているとき.その変数を,コンパイラ1
4の作業領域l5中に設けた管理テーブル16に登録す
る。
変数が値の定義される位置ではなく,引用される位置で
使用されているとき,処理過程P2により,その変数が
管理テーブル16に登録済みであるかどうかを調べる,
登録済みであれば,未定義変数の引用検査用のためのU
NDEF検査用ライブラリ1日の呼び出しを不要とし,
登録されていないときにのみ,UNDEF検査用ライブ
ラリ18を呼び出すオブジェクトプログラム17を生或
する. 〔作用〕 従来技術では,UNDEF検査の対象となるすべての変
数について.毎回.オブジェクトプログラム17の中か
ら,UNDEF検査用ライブラリ18を呼び出すように
.ライブラリの呼び出し命令をオブジェクトプログラム
l7中に組み込んでいた. これに対し,本発明では,同じ翻訳単位中に定義されて
いる変数については.コンパイラl4による翻訳処理時
に検査し,UNDEF検査用ライブラリ18の呼び出し
を行わないオブジェクトプロクラム17を生或するので
,オブジェクトプログラムl7の実行スピードが向上す
る。
〔実施例〕
第2図は本発明の実施例で使用する管理テーブルの構戒
例,第3図は本発明の実施例によるONDEF検査の管
理処理フローを示す. 値が定義されている変数を管理するために,例えば第2
図に示すような管理テーブル16A.16B,・・・を
使用する.各管理テーブル16A,16B,・・・は,
各変数の変数記憶域20A,20B,・・・を指すポイ
ンタと,次の管理テーブルへの連鎖のポインタとを記憶
するようになっている.ある変数が,管理テーブルに登
録済みであるか否かは.検査の対象となっている入力変
数のポインタが.各管理テーブルにおける変数のポイン
タと一致するかどうかで調べることができる.第1図に
示すコンパイラl4におけるUNDEF検査のための管
理ルーチンによる処理は.例えば第3図に示すように行
われる.以下の説明における■〜■は.第3図に示す処
理■〜■に対応する. ■ 管理ルーチンへの入力変数が,テキストの構文にお
けるどの位置で使用されているかを調べる. ■ 入力変数が,値の定義される位置で使用されている
とき.処理■へ,値の定義ではなく,引用であるとき,
処理■へ移る. ■ 入力変数が.管理テーブルに登録済みであるかどう
かを調べる.なお,登録済みの検査は,後述する処理■
〜■と同じ処理内容である。登録済みであれば,処理を
終了し,υNDEF検査の管理ルーチンから抜け出す. ■ 未登録である場合.作業領域内に管理テーブルを設
けて,その入力変数を登録する.その後.処理を終了す
る. ■ 入力変数が引用である場合,登録済みであるかどう
かを調べるために,管理テーブルへのポインタを得る. ■ 変数へのポインタから,入力変数と登録済みの変数
が,同じ変数であるかどうかを調べる.同じ変数であれ
ば,入力変数は登録済みであるので.そのまま処理を終
了する. ■ 同じ変数でない場合,次の管理テーブルを調べるた
めに.管理テーブルの連鎖があるかどうかを判定する.
連鎖がある場合,処理■へ戻り.その連鎖から.次の管
理テーブルのポインタを得る.連鎖がない場合,入力変
数は未登録と判断する. ■ 入力変数が未登録の場合.第1図に示すUNDEF
検査用ライブラリ18を呼び出すようにする. 以下,具体例に従って.処理の例を説明する.ソースプ
ログラムのテキスト中において, UNDEF検査の対
象となるものは,例えば,以下のものである. 関係式 代入文 入出力文 実変数に現れた式 (例l) ■ A冒l ■ B−A このようなプログラムの場合は,以下のようになる. ■ 変数Aは.代入文の左辺であるので.未定義になる
ことはない.そこで,変数Aが未定義ではないことを示
すために.管理テーブルに八の名前もしくはその記憶域
へのポインタを登録する. ■ 変数Bは,代入文の左辺であるので.未定義になる
ことはない.そこで,変数Bが未定義ではないことを示
すために,管理テーブルにBの名前もしくはその記憶域
へのポインタを登録する.この式における変数Aは,代
入文の右辺にある.そこで.既に管理テーブルに変数A
が登録されているかを検索する.検索の結果,この例で
は,変数Aは.既に登録されている(値が定義されてい
る)ので,UNDEF検査の対象とはせず.第1図に示
すUNDEF検査用ライブラリ18の呼び出しは行わな
い. (例2) ■ A=B ■ B−1 ■ C−B このようなプログラムの場合は,以下のようになる. ■ 変数Aは,代入文の左辺であるので,未定義になる
ことはない.そこで,変数Aが未定義ではないことを示
すために,管理テーブルにAの名前もしくはその記憶域
へのポインタを登録する.変数Bは,代入文の右辺にあ
る。そこで,既に管理テーブルに変数Bが登録されてい
るかを検索する.検索の結果.変数Bは,登録されてい
ない.すなわち2値が未定義である。したがって,UN
DEF検査の対象となり,第1図に示すUNDEF検査
用ライブラリ18を呼び出すことにする. ■ 変数Bは,代入文の左辺であるので,未定義になる
ことはない.そこで.変数Bが未定義ではないことを示
すために.管理テーブルにBの名前もしくはその記憶域
へのポインタを登録する. ■ 変数Cは,代入文の左辺であるので,未定義になる
ことはない。そこで,変数Cが未定義ではないことを示
すために.管理テーブルにCの名前もしくはその記憶域
へのポインタを登録する。この式における変数Bは,代
入文の右辺にある.そこで9既に管理テーブルに変数B
が登録されているかを検索する.検索の結果,変数Bは
.既に登録されている(値が定義されている)ので,U
NDEF検査の対象とはせず,第1図に示すUNDEF
検査用ライブラリ18の呼び出しは行わない. なお,第1図に示すUNDEF検査用ライブラリ18内
の処理については.従来と同様でよく,未定義変数の検
査,エラー処理などを行うが.周知であるので,内部処
理についての詳細な説明は省略する. 〔発明の効果〕 以上説明したように.本発明によれば,余分なライブラ
リ呼び出しの回数を削減し,翻訳されたプログラムの実
行スピードを向上させることが可能になる。
【図面の簡単な説明】
第1図は本発明の構戒例. 第2図は本発明の実施例で使用する管理テーブルの構戒
例, 第3図は本発明の実施例によるUNDEF検査の管理処
理フローを示す.

Claims (1)

  1. 【特許請求の範囲】 実行時に未定義変数の引用検査を行うことができる言語
    仕様を持つ計算機言語を翻訳するコンパイラ(14)を
    備えた計算機システムにおける未定義変数引用検査処理
    方法において、 変数が値の定義される位置で使用されているとき、その
    変数を管理テーブル(16)に登録する処理過程(P1
    )と、 変数が引用されているとき、その変数が管理テーブル(
    16)に登録済みであるかどうかを調べ、登録済みであ
    れば、未定義変数引用検査用のライブラリ(18)の呼
    び出しを不要とし、登録されていないときにのみ、未定
    義変数引用検査用のライブラリ(18)を呼び出すオブ
    ジェクトプログラム(17)を生成する処理過程(P2
    )と を備えたことを特徴とする未定義変数引用検査処理方法
JP24458289A 1989-09-20 1989-09-20 未定義変数引用検査処理方法 Pending JPH03105628A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP24458289A JPH03105628A (ja) 1989-09-20 1989-09-20 未定義変数引用検査処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24458289A JPH03105628A (ja) 1989-09-20 1989-09-20 未定義変数引用検査処理方法

Publications (1)

Publication Number Publication Date
JPH03105628A true JPH03105628A (ja) 1991-05-02

Family

ID=17120867

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24458289A Pending JPH03105628A (ja) 1989-09-20 1989-09-20 未定義変数引用検査処理方法

Country Status (1)

Country Link
JP (1) JPH03105628A (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62138932A (ja) * 1985-12-12 1987-06-22 Fujitsu Ltd コンパイラ処理方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62138932A (ja) * 1985-12-12 1987-06-22 Fujitsu Ltd コンパイラ処理方式

Similar Documents

Publication Publication Date Title
Naik et al. Effective static deadlock detection
Patenaude et al. Extending software quality assessment techniques to java systems
US8266608B2 (en) Post-compile instrumentation of object code for generating execution trace data
Petters et al. Making worst case execution time analysis for hard real-time tasks on state of the art processors feasible
US10902129B2 (en) Method for detecting vulnerabilities in software
US7552425B2 (en) Implementing enhanced compiled breakpoint analysis
JP6316120B2 (ja) テストケース生成システム及びテストケースを記録した記録媒体
CN103559123A (zh) 基于VxWorks操作系统的函数调用栈分析方法及装置
Hariri et al. Srciror: A toolset for mutation testing of c source code and llvm intermediate representation
Liang et al. MLSA: a static bugs analysis tool based on LLVM IR
JPH03188535A (ja) プログラム・エラー検出方法
Novikov et al. The approach to finding errors in program code based on static analysis methodology
CN116089302A (zh) 一种针对Rust编程语言中UNSAFE代码片段缺陷的检测方法
US5822589A (en) Method for locating errors in a computer program
JPH03105628A (ja) 未定義変数引用検査処理方法
US20050050524A1 (en) Generating software test information
JPH01177165A (ja) 配列の定義/引用関係検査方式
Fink et al. An interface language between specifications and testing
JPH0520093A (ja) モジユールのコンパイル方法およびコンパイル装置
Szalaya et al. Symbol Clustering: Resolving ambiguous symbol references of large-scale C/C++ projects based on linkage information
JP3213792B2 (ja) 論理シミュレ−ション検証方式
JPH03182935A (ja) プログラム間静的解析装置
US7627859B2 (en) Method for configuring non-script language library files to be run as scripts
Suchert et al. Check for updates STAMP-Rust: Language and Performance Comparison to C on Transactional Benchmarks
JPH01154256A (ja) プログラムのエラー位置検出方法