JPH05324401A - 組込み関数誤差影響度出力方式 - Google Patents

組込み関数誤差影響度出力方式

Info

Publication number
JPH05324401A
JPH05324401A JP4153070A JP15307092A JPH05324401A JP H05324401 A JPH05324401 A JP H05324401A JP 4153070 A JP4153070 A JP 4153070A JP 15307092 A JP15307092 A JP 15307092A JP H05324401 A JPH05324401 A JP H05324401A
Authority
JP
Japan
Prior art keywords
function
built
value
line number
intermediate text
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
JP4153070A
Other languages
English (en)
Inventor
Emi Sato
恵美 佐藤
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP4153070A priority Critical patent/JPH05324401A/ja
Publication of JPH05324401A publication Critical patent/JPH05324401A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 組込み関数誤差影響度(組込み関数の関数値
の誤差のプログラムへの影響度)を認識するための利用
者における負担を軽減する。 【構成】 命令列生成手段13は、解析手段11により
生成された中間テキスト群7(組込み関数呼出し中間テ
キストに対応するソースコードの行番号を示す情報を有
する中間テキスト群)中の中間テキストが組込み関数呼
出し中間テキストである場合に、その組込み関数呼出し
中間テキストに対応する行番号付加組込み関数呼出し命
令列31を生成する。行番号・引数値・関数値出力手段
44は、関数値判定手段42による判定結果(基準組込
み関数ルーチンによって算出された関数値と比較組込み
関数ルーチンによって算出された関数値とが等しいか否
かの判定の結果)に基づき、両方の関数値が等しいか否
かを示す情報と両者が等しくない場合における行番号・
引数値・関数値を示す情報とを出力する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、FORTRAN等の高
級言語で記述されたソースプログラムをコンパイル方式
によって計算機で実行する際における組込み関数誤差影
響度出力方式に関する。
【0002】
【従来の技術】高級言語で記述されたソースプログラム
のいくつか(FORTRANプログラム等)では、組込
み関数(平方根を求めるための関数や三角関数や対数関
数等)の使用が許されている。
【0003】組込み関数を算出するルーチン(以下、組
込み関数ルーチンという)は近似計算によって組込み関
数の関数値を算出しているので、算出される関数値にお
ける誤差の発生は避けられない。
【0004】ここで、組込み関数ルーチンの性能(計算
精度等)の向上等に起因して、従来のバージョンの組込
み関数ルーチンによって算出される関数値の誤差と新し
いバージョンの組込み関数ルーチンによって算出される
関数値の誤差とが許容範囲内で変化することが生じ得
る。
【0005】精度に敏感なプログラムでは、上述の「組
込み関数の関数値の誤差の許容範囲内での変化」によっ
てプログラムの実行結果が異なってしまう可能性があ
る。
【0006】そのようなプログラムでは、プログラムの
実行結果の不正が、ソースプログラムの不正によるもの
であるのか、そのソースプログラムに対応するオブジェ
クトプログラムの不正によるものであるのか、上述の組
込み関数の関数値の誤差の変化の影響によるものである
のかを切り分けることが困難になる場合が多い。
【0007】このような場合に、2つの組込み関数ルー
チンによって算出される関数値の誤差の差異のプログラ
ム(上述のようなプログラム)への影響度を知りたいと
いう要求が生じ、このような影響度を利用者等に知らせ
るために「組込み関数誤差影響度出力方式」が必要にな
る。
【0008】なお、組込み関数誤差影響度出力方式は、
組込み関数の関数値の真値とみなせるような精度の高い
関数値(誤差が0と考えられるような関数値)を算出す
る組込み関数ルーチンと一般的に運用される組込み関数
ルーチンとの間の関数値(関数値の誤差)の差異を求め
て、一般的に運用される組込み関数ルーチンの性能を調
べる目的等にも利用される。
【0009】従来、この種の組込み関数誤差影響度出力
方式では、次のような処理が行われていた。
【0010】まず、基準となる組込み関数ルーチン(従
来のバージョンの組込み関数ルーチンや精度の高い関数
値を算出する組込み関数ルーチン等。以下、基準組込み
関数ルーチンという)がオブジェクトプログラム(組込
み関数誤差影響度の調査の対象となるプログラムに係る
オブジェクトプログラム)にリンクされ、基準組込み関
数ルーチンによって算出される関数値が求められる。
【0011】次に、基準組込み関数ルーチンと比較され
る組込み関数ルーチン(新しいバージョンの組込み関数
ルーチンや一般的に運用される組込み関数ルーチン等。
以下、比較組込み関数ルーチンという)が上述のオブジ
ェクトプログラムと同一のオブジェクトプログラムにリ
ンクされ、比較組込み関数ルーチンによって算出される
関数値(基準組込み関数ルーチンによって算出された関
数値に対応する関数値)が求められる。
【0012】さらに、両方の組込み関数ルーチンに係る
関数値の誤差の差異が利用者によって比較され、差異が
生じている場合には関数値の誤差の差異の影響度等(ど
の種類の組込み関数がどのくらい影響しているかという
内容等も含まれる)が利用者によって調査されていた。
【0013】
【発明が解決しようとする課題】上述した従来の組込み
関数誤差影響度出力方式では、基準組込み関数ルーチン
によって算出される関数値の誤差と比較組込み関数ルー
チンによって算出される関数値の誤差との差異に起因す
る影響度を出力するためにはリンク作業の繰返しや利用
者による比較・調査等が必要になるので、組込み関数の
関数値の誤差のプログラムへの影響度(組込み関数誤差
影響度)を認識するための利用者における負担が大きく
なるという問題点があった。
【0014】本発明の目的は、上述の点に鑑み、組込み
関数誤差影響度を示す情報を容易に出力することがで
き、組込み関数誤差影響度を認識するための利用者にお
ける負担を軽減することができる組込み関数誤差影響度
出力方式を提供することにある。
【0015】
【課題を解決するための手段】本発明の組込み関数誤差
影響度出力方式は、ソースプログラムを解析し組込み関
数呼出し中間テキストに対応するソースコードの行番号
を示す情報を有する中間テキスト群を生成するコンパイ
ラ内の解析手段と、この解析手段により生成された中間
テキスト群中の中間テキストが組込み関数呼出し中間テ
キストである場合にその組込み関数呼出し中間テキスト
に対応する行番号付加組込み関数呼出し命令列を生成す
る前記コンパイラ内の命令列生成手段と、前記コンパイ
ラによって生成されたオブジェクトプログラムを有する
ロードモジュールの実行時に前記命令列生成手段によっ
て生成された行番号付加組込み関数呼出し命令列から行
番号および引数値を受け取る組込み関数実行手続き内の
行番号・引数値受取り手段と、基準組込み関数ルーチン
によって算出された関数値と比較組込み関数ルーチンに
よって算出された関数値とが等しいか否かを判定する前
記組込み関数実行手続き内の関数値判定手段と、この関
数値判定手段による判定結果に基づき基準組込み関数ル
ーチンによって算出された関数値と比較組込み関数ルー
チンによって算出された関数値とが等しいか否かを示す
情報と両者が等しくない場合における行番号・引数値・
関数値を示す情報とを出力する前記組込み関数実行手続
き内の行番号・引数値・関数値出力手段とを有する。
【0016】
【作用】本発明の組込み関数誤差影響度出力方式では、
コンパイラ内の解析手段がソースプログラムを解析し組
込み関数呼出し中間テキストに対応するソースコードの
行番号を示す情報を有する中間テキスト群を生成し、コ
ンパイラ内の命令列生成手段が解析手段により生成され
た中間テキスト群中の中間テキストが組込み関数呼出し
中間テキストである場合にその組込み関数呼出し中間テ
キストに対応する行番号付加組込み関数呼出し命令列を
生成し、組込み関数実行手続き内の行番号・引数値受取
り手段がコンパイラによって生成されたオブジェクトプ
ログラムを有するロードモジュールの実行時に命令列生
成手段によって生成された行番号付加組込み関数呼出し
命令列から行番号および引数値を受け取り、組込み関数
実行手続き内の関数値判定手段が基準組込み関数ルーチ
ンによって算出された関数値と比較組込み関数ルーチン
によって算出された関数値とが等しいか否かを判定し、
組込み関数実行手続き内の行番号・引数値・関数値出力
手段が関数値判定手段による判定結果に基づき基準組込
み関数ルーチンによって算出された関数値と比較組込み
関数ルーチンによって算出された関数値とが等しいか否
かを示す情報と両者が等しくない場合における行番号・
引数値・関数値を示す情報とを出力する。
【0017】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
【0018】図1は、本発明の組込み関数誤差影響度出
力方式の一実施例の構成を示すブロック図である。本実
施例の組込み関数誤差影響度出力方式は、コンパイラ1
と、ソースプログラム2と、オブジェクトプログラム3
と、組込み関数実行手続き4と、リンケージエディタ5
と、ロードモジュール6と、中間テキスト群7とを含ん
で構成されている。
【0019】コンパイラ1は、解析手段11と、中間テ
キスト読込み手段12と、命令列生成手段13とを含ん
で構成されている。
【0020】オブジェクトプログラム3は、行番号付加
組込み関数呼出し命令列31を含んで構成されている。
【0021】組込み関数実行手続き4は、行番号・引数
値受取り手段41と、関数値判定手段42と、関数値返
却手段43と、行番号・引数値・関数値出力手段44と
を含んで構成されている。なお、リンケージエディタ5
によってロードモジュール6に組み込まれている組込み
関数実行手続き4は、1つだけとは限らない。
【0022】図2は、コンパイラ1の処理を示す流れ図
である。この処理は、ソースプログラム解析ステップ1
01と、中間テキスト読込みステップ102と、中間テ
キスト群読込み終了判定ステップ103と、組込み関数
呼出し中間テキスト判定ステップ104と、行番号付加
組込み関数呼出し命令列生成ステップ105と、通常命
令列生成ステップ106と、オブジェクトプログラム出
力ステップ107とからなる。
【0023】図3は、組込み関数実行手続き4の処理を
示す流れ図である。この処理は、行番号・引数値受取り
ステップ401と、基準組込み関数ルーチン呼出しステ
ップ402と、比較組込み関数ルーチン呼出しステップ
403と、関数値比較ステップ404と、行番号・引数
値・関数値出力ステップ405と、関数値返却ステップ
406とからなる。
【0024】次に、このように構成された本実施例の組
込み関数誤差影響度出力方式の動作について説明する。
【0025】コンパイラ1は、ソースプログラム2(F
ORTRAN等の高級言語で記述されたソースプログラ
ム)を入力し、次のような処理を行う(図2参照)。
【0026】コンパイラ1内の解析手段11は、ソース
プログラム2を解析してソースプログラム2に対応する
中間テキスト群7を生成する(この際に、組込み関数呼
出し中間テキスト(後述参照)に対応するソースプログ
ラム2中のソースコードの行番号を示す情報を中間テキ
スト群7中に設定する)(ステップ101)。
【0027】中間テキスト読込み手段12は、中間テキ
スト群7中の1つの中間テキストを読み込む(ステップ
102)。
【0028】命令列生成手段13は、ステップ102で
中間テキストを読み込むことができたか否か(中間テキ
スト群7の読込みが終了していないかどうか)を判定す
る(ステップ103)。
【0029】命令列生成手段13は、ステップ103で
「中間テキストを読み込むことができた」と判定した場
合には、当該中間テキストが組込み関数を呼び出してい
るソースコードに対応する中間テキスト(組込み関数呼
出し中間テキスト)であるか否かを判定する(ステップ
104)。
【0030】命令列生成手段13は、ステップ104で
「当該中間テキストが組込み関数呼出し中間テキストで
ある」と判定した場合には、行番号(当該中間テキスト
に対応するソースコードのソースプログラム2における
行番号)が付加され引数値を有し組込み関数ルーチンを
呼び出す命令列(オブジェクトプログラム3内の行番号
付加組込み関数呼出し命令列31に該当する命令列)を
生成し(ステップ105)、ステップ102に制御を戻
す。
【0031】命令列生成手段13は、ステップ104で
「当該中間テキストが組込み関数呼出し中間テキストで
ない」と判定した場合には、通常の命令列を生成し(ス
テップ106)、ステップ102に制御を戻す。
【0032】命令列生成手段13は、ステップ103で
「中間テキストを読み込むことができなかった」と判定
した場合には、それまでに生成した命令列(行番号付加
組込み関数呼出し命令列31および通常の命令列)を有
するオブジェクトプログラム3を出力する(ステップ1
07)。
【0033】リンケージエディタ5は、コンパイラ1に
よって生成されたオブジェクトプログラム3と組込み関
数実行手続き4とを入力し、それらがリンクされた実行
可能なロードモジュール6を出力する。
【0034】このようにして生成されたロードモジュー
ル6の実行時に、組込み関数実行手続き4は、基準組込
み関数ルーチンによって算出される関数値の誤差と比較
組込み関数ルーチンによって算出される関数値の誤差と
の差異に起因するプログラム(ソースプログラム2やオ
ブジェクトプログラム3に係るプログラム)への影響度
(組込み関数誤差影響度)を示す情報を出力するため
に、次のような処理を行う(図3参照)。
【0035】オブジェクトプログラム3内の行番号付加
組込み関数呼出し命令列31に呼び出された組込み関数
実行手続き4内の行番号・引数値受取り手段41は、行
番号付加組込み関数呼出し命令列31から組込み関数を
呼び出しているソースコード(組込み関数が記述されて
いるソースコード)のソースプログラム2における行番
号と引数値とを受け取る(ステップ401)。
【0036】関数値判定手段42は、ステップ401で
受け取られた引数値を伴って基準組込み関数ルーチンを
呼び出し、基準組込み関数ルーチンによって算出される
関数値を取得する(ステップ402)。
【0037】また、関数値判定手段42は、ステップ4
01で受け取られた引数値を伴って比較組込み関数ルー
チンを呼び出し、比較組込み関数ルーチンによって算出
される関数値を取得する(ステップ403)。
【0038】さらに、関数値判定手段42は、ステップ
402で取得した関数値とステップ403で取得した関
数値とを比較して、両者が等しいか否かを判定する(ス
テップ404)。
【0039】行番号・引数値・関数値出力手段44は、
ステップ404で「両者が等しくない」と判定された場
合に、ステップ401で受け取られた行番号および引数
値とステップ402で取得された関数値およびステップ
403で取得された関数値とを組込み関数誤差影響度を
示す情報として出力する(ステップ405)。なお、組
込み関数誤差影響度を示す情報としては、基準組込み関
数ルーチンによって算出された関数値と比較組込み関数
ルーチンによって算出された関数値とが等しいか否かを
示す情報と両者が等しくない場合における行番号・引数
値・関数値(上述のような行番号,引数値および関数
値)とを示す情報とが含まれていれば、その情報の形式
は任意である。
【0040】関数値返却手段43は、ステップ404で
「両者が等しい」と判定された場合またはステップ40
5の処理が終了した場合に、ステップ402で取得され
た関数値(ステップ403で取得された関数値でもよ
い)を行番号付加組込み関数呼出し命令列31を有する
オブジェクトプログラム3に返却する(ステップ40
6)。
【0041】
【発明の効果】以上説明したように本発明は、組込み関
数実行手続きの実行時に基準組込み関数ルーチンによっ
て算出される関数値の誤差と比較組込み関数ルーチンに
よって算出される関数値の誤差との差異を自動的に比較
し、差異の有無と差異がある場合の両者の行番号・引数
値・関数値とを出力することにより、組込み関数誤差影
響度を示す情報を容易に出力することができ(組込み関
数誤差影響度を容易に調査することができ)、組込み関
数誤差影響度を認識するための利用者における負担を軽
減することができ、プログラムの精度解析等のために益
を供することが可能になるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例の構成を示すブロック図であ
る。
【図2】図1中のコンパイラの処理を示す流れ図であ
る。
【図3】図1中の組込み関数実行手続きの処理を示す流
れ図である。
【符号の説明】
1 コンパイラ 2 ソースプログラム 3 オブジェクトプログラム 4 組込み関数実行手続き 5 リンケージエディタ 6 ロードモジュール 7 中間テキスト群 11 解析手段 12 中間テキスト読込み手段 13 命令列生成手段 31 行番号付加組込み関数呼出し命令列 41 行番号・引数値受取り手段 42 関数値判定手段 43 関数値返却手段 44 行番号・引数値・関数値出力手段

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムを解析し組込み関数呼
    出し中間テキストに対応するソースコードの行番号を示
    す情報を有する中間テキスト群を生成するコンパイラ内
    の解析手段と、 この解析手段により生成された中間テキスト群中の中間
    テキストが組込み関数呼出し中間テキストである場合に
    その組込み関数呼出し中間テキストに対応する行番号付
    加組込み関数呼出し命令列を生成する前記コンパイラ内
    の命令列生成手段と、 前記コンパイラによって生成されたオブジェクトプログ
    ラムを有するロードモジュールの実行時に前記命令列生
    成手段によって生成された行番号付加組込み関数呼出し
    命令列から行番号および引数値を受け取る組込み関数実
    行手続き内の行番号・引数値受取り手段と、 基準組込み関数ルーチンによって算出された関数値と比
    較組込み関数ルーチンによって算出された関数値とが等
    しいか否かを判定する前記組込み関数実行手続き内の関
    数値判定手段と、 この関数値判定手段による判定結果に基づき基準組込み
    関数ルーチンによって算出された関数値と比較組込み関
    数ルーチンによって算出された関数値とが等しいか否か
    を示す情報と両者が等しくない場合における行番号・引
    数値・関数値を示す情報とを出力する前記組込み関数実
    行手続き内の行番号・引数値・関数値出力手段とを有す
    ることを特徴とする組込み関数誤差影響度出力方式。
JP4153070A 1992-05-21 1992-05-21 組込み関数誤差影響度出力方式 Pending JPH05324401A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4153070A JPH05324401A (ja) 1992-05-21 1992-05-21 組込み関数誤差影響度出力方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4153070A JPH05324401A (ja) 1992-05-21 1992-05-21 組込み関数誤差影響度出力方式

Publications (1)

Publication Number Publication Date
JPH05324401A true JPH05324401A (ja) 1993-12-07

Family

ID=15554333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4153070A Pending JPH05324401A (ja) 1992-05-21 1992-05-21 組込み関数誤差影響度出力方式

Country Status (1)

Country Link
JP (1) JPH05324401A (ja)

Similar Documents

Publication Publication Date Title
CN111104335B (zh) 一种基于多层次分析的c语言缺陷检测方法及装置
US6253371B1 (en) Method for supporting parallelization of source program
US8185878B2 (en) Program maintenance support device, program maintenance supporting method, and program for the same
KR20180129623A (ko) 연관된 다중 파일 정적 분석 장치
EP0939366A2 (en) Programming supporting method and programming support device
JPH05324401A (ja) 組込み関数誤差影響度出力方式
US8108828B2 (en) System for generating optimized computer data field conversion routines
JP3049814B2 (ja) マイクロコンピュータの言語処理装置
JPH09288580A (ja) ソースプログラムの最適化装置および最適化方法
JP2864589B2 (ja) 関数値差異出力システム
JPH10289123A (ja) 最適化コードデバッグ方式
JP2002222099A (ja) プログラム開発支援装置、記録媒体、及びプログラム
JPH05324344A (ja) 関数呼出し時の引数処理最適化方法
JP3018783B2 (ja) コンパイル方式
JP3047418B2 (ja) ベクトル化処理方式
JPH1139155A (ja) コンパイル時の情報収集による実行時性能の静的解析方法
JPH11224185A (ja) 変数影響解析装置及び変数影響解析方法
JPH0370039A (ja) 関数値の不可避的な誤差に対する影響度出力方式
JPH10312312A (ja) 仕様によって動作が変わるc言語の計算機プログラム検査処理方法およびプログラム記憶媒体
JPH03116241A (ja) コンパイラ
JPH01274241A (ja) 命令列生成方式
JPH06208470A (ja) 目的コード最適化装置
JPH0667895A (ja) 関数呼び出し方式
JPH02190935A (ja) 構文解析ルールの組込機能を持つプログラムのコンパイル方式
JPH06161774A (ja) ソフトウェア開発支援システム