JP2655614B2 - 添字の不正使用検査方式 - Google Patents

添字の不正使用検査方式

Info

Publication number
JP2655614B2
JP2655614B2 JP63303790A JP30379088A JP2655614B2 JP 2655614 B2 JP2655614 B2 JP 2655614B2 JP 63303790 A JP63303790 A JP 63303790A JP 30379088 A JP30379088 A JP 30379088A JP 2655614 B2 JP2655614 B2 JP 2655614B2
Authority
JP
Japan
Prior art keywords
subscript
unauthorized use
loop
loop structure
use inspection
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 - Fee Related
Application number
JP63303790A
Other languages
English (en)
Other versions
JPH02148330A (ja
Inventor
緑 藤巻
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
Nippon Electric 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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP63303790A priority Critical patent/JP2655614B2/ja
Publication of JPH02148330A publication Critical patent/JPH02148330A/ja
Application granted granted Critical
Publication of JP2655614B2 publication Critical patent/JP2655614B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は言語処理システムのコンパイラに関し、特に
配列要素の添字が定数でないときの添字の不正使用検査
方式に関する。
(従来の技術) 従来、配列要素の添字の値が、配列の上限値および下
限値を超えて不正に使用されているか否かの検査は、次
のようにして行つていた。まず、引用された添字の値
と、配列の宣言による添字の上限値および下限値とを比
較し、検査する実行時ルーチンを用意しておく。続い
て、コンパイラは添字が引用されている箇所がループ構
造内に含まれているか否かとは無関係に、添字が引用さ
れたときに、上記実行時ルーチンが呼出されるようなオ
ブジエクトプログラムを生成する。
最後に、プログラムが実行されたときには、コンパイ
ラは添字が引用されるたびに上記実行時ルーチンを呼出
す。
例えば、第4図に示すようなFORTRANソースプログラ
ムの場合、第5図に示すような実行順序のオブジエクト
プログラムが生成されていた。
つまり、ループ構造内に含まれている配列要素Aの添
字式I*4−3に対する添字の不正使用検査は、その添
字が引用されるごとに、ループ回数分だけ行われてい
た。
(発明が解決しようとする課題) 上述した従来の方式では、翻訳時にループ長が不定の
ループ構造内に含まれている配列要素の添字の不正使用
検査は、ループの指標変数が初期値の値ならびに終値の
値のみの検査を行えばよいような場合でも、第3図の実
行順序に示すように、添字が引用されるごとに、添字の
不正使用を検査するための実行時ルーリンがループ回数
分だけ呼出されてしまう。このため、ループ長が大きく
なればなる程、プログラムの実行時間が長くなつてしま
うという欠点がある。
本発明の目的は、言語処理システムのコンパイラにお
いてソースプログラムを解析し、配列要素の添字のうち
で添字式が定数でない添字を検出したとき、翻訳時に添
字のループ長が不定のループ構造内に含まれているか否
かを検査するとともに、翻訳時にそのループ長が不定の
ループ構造内に含まれていると判定された場合には、添
字の値が配列の範囲内であるか否かの検査をループ構造
の直前で行うように制御するための情報を生成し、生成
された添字の不正使用検査情報をもとに、添字の不正使
用検査をループ構造の直前で行うオブジエクトプログラ
ムを生成することによつて上記欠点を除去し、プログラ
ムの実行時間を短縮できるように構成した添字の不正使
用検査方式を提供することにある。
(課題を解決するための手段) 本発明による添字の不正使用検査方式は添字式検出手
段と、ループ構造検査手段と、添字の不正使用検査情報
生成手段と、添字の不正使用検査コード生成手段とを具
備して構成したものである。
添字式検出手段は、言語処理システムのコンパイラに
おいてソースプログラムを解析し、配列要素の添字のう
ちで添字式が定数ではない添字を検出するためのもので
ある。
ループ構造検査手段は、翻訳時な添字式検出手段で検
出された添字のループ長が不定のループ構造内に含まれ
ているかを検査するためのものである。
添字の不正使用検査情報生成手段は、翻訳時に添字式
検出手段で検出された添字のループ長が不定のループ構
造内に含まれていると判定された場合には、添字の値が
配列の範囲内であるか否かの検査をループ構造の直前で
行うように制御する情報を生成するためのものである。
添字の不正使用検査コード生成手段は、添字の不正使
用検査情報生成手段により生成された添字の不正使用検
査情報をもとにループの指標変数が初期値のときと終値
のときにそれぞれ添字の不正使用検査を行う実行時ルー
チンを呼び出し、添字の不正使用検査を前記ループ構造
の直前で行うオブジェクトプログラムを生成するための
ものである。
(実 施 例) 次に、本発明について図面を参照して詳細に説明す
る。
第1図は、本発明による添字の不正使用検方式の一実
施例であるコンパイラのブロツク図である。
第1図において、1はソースプログラム、2はコンパ
イラ、3は添字式検出手段、4はループ構造検査手段、
5は添字の不正使用検査情報生成手段、6は添字の不正
使用検査コード生成手段、7はオブジエクトプログラム
である。
第1図において、コンパイラ2は添字式検出手段3
と、ループ構造検査手段4と、添字の不正使用検査情報
生成手段5と、添字の不正使用検査コード生成手段6と
を具備して構成されている。コンパイラ2はソースプロ
グラム1を読込み、オブジエクトプログラム7を生成す
るように構成されている。
添字式検出手段3はソースプログラム1を解析して、
配列要素の添字のなかで、添字式が定数ではない線形の
添字式を検出する。
ループ構造検査手段4はソースプログラム1を解析
し、添字式検出手段3により検出された添字のループ長
が不定のループ構造内に含まれているか否かを検査す
る。
添字式検出手段3で検出された添字のループ長が不定
のループ構造内に含まれているとループ構造検査手段4
において判定された場合、添字の不正使用検査情報生成
手段5は、添字の値が配列の範囲内であるか否かの検査
を翻訳時にループ構造の直前で行うように制御するため
の情報を生成する。
添字の不正使用検査情報生成手段5において生成され
た添字の不正使用検査情報をもとにして添字の不正使用
検査コード生成手段6は添字の不正使用検査をループ構
造の直前で行うオブジエクトプログラム7を生成する。
次に、このように構成された本実施例の添字の不正使
用検査方式の動作について説明する。
例えば、第2図に示すようなFORTRANソースプログラ
ムがソースプログラム1として読込まれると、添字式検
出手段3は、添字式が定数ではない配列要素Aの添字式
I*4−3を検出する。
次に、ループ構造検査手段4は、添字式検出手段3で
検出された配列要素Aの添字式I*4−3が、翻訳時に
ループ長が不定のループ構造内に含まれているか否かを
検査する。この例の場合、添字式I*4−3は、第2図
のに示す翻訳時にループ長が不定なループ内に含まれ
ているものと判定される。
ループ構造検査手段4で、添字式I*4−3は第2図
のに示す翻訳時にループ長が不定なループ内に含まれ
ているものと判定されたことから、続いて、添字の不正
使用検査情報生成手段5は、添字の値が配列の範囲内で
あるか否かを調べる。添字の不正使用検査をループ構造
の直前で行うように制御するための情報、ならびに配列
の宣言による配列の大きさ、配列の上限値および下限値
などの情報を生成する。
添字の不正使用検査情報生成手段5で生成された添字
の不正使用検査情報をもとに、最後に添字の不正使用検
査コード生成手段6は、第3図に示されるような処理順
序で、添字の不正使用検査をループ構造の直前で行うた
めのオブジエクトプログラム7を生成する。
この場合、配列要素Aの添字式I*4−3に対する添
字の不正使用検査においては、第2図のに示すループ
が評価される直前に、ループの指標変数であるIが初期
値Mのときと、終値Nのときとに、それぞれ添字の不正
使用検査を行う実行時ルーチンが呼出される。
添字の値が配列の範囲外であると判定された場合に
は、実行時に警告エラーメツセージが出力される。
(発明の効果) 以上説明したように本発明は、翻訳時にループ長が不
定なループ構造内に含まれている配列要素の添字が定数
でない添字式の値が配列の範囲内であるか否かを調べる
添字の不正使用検査を、ループ構造の直前で行うように
制御することにより、添字が引用されるごとに添字の不
正使用検査のための実行時ルーチンがループ回数分だけ
呼出されることがなく、プログラムの実行時間を短縮で
きると云う効果がある。
【図面の簡単な説明】
第1図は、本発明による添字の不正使用検査方式の一実
施例を示すブロツク図である。 第2図および第4図は、それぞれFORTRANソースプログ
ラムの一例を示す説明図である。 第3図は、第2図に示すFORTRANソースプログラムに対
して本発明を適用する処理の流れを示すフローチヤート
である。 第5図は、第4図に示すFORTRANソースプログラムに対
して従来の処理の流れを示すフローチヤートである。 1……ソースプログラム 2……コンパイラ 3……添字式検出手段 4……ループ構造検査手段 5……添字の不正使用検査情報手段 6……添字の不正使用検査コード生成手段 7……オブジエクトプログラム

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】言語処理システムのコンパイラにおいて、 ソースプログラムを解析し、配列要素の添字のうちで添
    字式が定数ではない添字を検出するための添字式検出手
    段と、 前記添字式検出手段で検出された添字のループ長が不定
    のループ構造内に含まれているか否かを翻訳時に検査す
    るためのループ構造検査手段と、 前記添字式検出手段で検出された前記添字のループ長が
    不定のループ構造内に含まれていると前記翻訳時に判定
    された場合には前記添字の値が配列の範囲内であるか否
    かの検査を前記ループ構造の直前で行うように制御する
    情報を生成するための添字の不正使用検査情報生成手段
    と、 前記添字の不正使用検査情報生成手段により生成された
    前記添字の不正使用検査情報をもとにループの指標変数
    が初期値のときと終値のときにそれぞれ添字の不正使用
    検査を行う実行時ルーチンを呼び出し、前記添字の不正
    使用検査を前記ループ構造の直前で行うオブジェクトプ
    ログラムを生成するための添字の不正使用検査コード生
    成手段とを具備して構成したことを特徴とする添字の不
    正使用検査方式。
JP63303790A 1988-11-30 1988-11-30 添字の不正使用検査方式 Expired - Fee Related JP2655614B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63303790A JP2655614B2 (ja) 1988-11-30 1988-11-30 添字の不正使用検査方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63303790A JP2655614B2 (ja) 1988-11-30 1988-11-30 添字の不正使用検査方式

Publications (2)

Publication Number Publication Date
JPH02148330A JPH02148330A (ja) 1990-06-07
JP2655614B2 true JP2655614B2 (ja) 1997-09-24

Family

ID=17925325

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63303790A Expired - Fee Related JP2655614B2 (ja) 1988-11-30 1988-11-30 添字の不正使用検査方式

Country Status (1)

Country Link
JP (1) JP2655614B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6164054B2 (ja) 2013-11-08 2017-07-19 富士通株式会社 情報処理装置、コンパイル方法およびコンパイラプログラム
KR102222023B1 (ko) * 2019-12-19 2021-03-03 손기명 전자파 차폐용 파우치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6398031A (ja) * 1986-10-14 1988-04-28 Nec Corp 添字式の値検査方式

Also Published As

Publication number Publication date
JPH02148330A (ja) 1990-06-07

Similar Documents

Publication Publication Date Title
JP7164017B2 (ja) フォールトツリー分析を使用して機能安全のため制御フローグラフを最適化するシステム及び方法
Vokolos et al. Empirical evaluation of the textual differencing regression testing technique
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
US20050114839A1 (en) Testing flow control at test assertion level
US20240121261A1 (en) Automated Security Analysis of Software Libraries
US7036111B2 (en) Code verification system and method
EP3495978B1 (en) Method for detecting vulnerabilities in software
JPH0748182B2 (ja) プログラム・エラー検出方法
JP2655614B2 (ja) 添字の不正使用検査方式
Kettl et al. The static analyzer Infer in SV-COMP (competition contribution)
Hammer et al. Intransitive noninterference in dependence graphs
Süßkraut et al. Safe program execution with diversified encoding
JPH0736734A (ja) アーギュメント値のチェック方法
Nakagawa et al. How compact will my system be? A fully-automated way to calculate Loc reduced by clone refactoring
Chen et al. Slicing tagged objects in Ada
WO2022022279A1 (en) Systems, methods and media for dynamically shaped tensors using liquid types
KR100248435B1 (ko) 칠 언어에 대한 위험한 제어 이동 탐지방법
KR20240066072A (ko) 프로그램 정적 분석 방법 및 시스템
JPH01155438A (ja) コンパイラ試験方式
Imran et al. Using Agent Technology for Security Testing of WEB Based Applications
KR20240088450A (ko) 보안체크코드의 유효성 점검 장치, 보안체크코드의 유효성 점검 방법 및 컴퓨터 프로그램
JPH07271605A (ja) C言語プログラムデバッグ方式
JP2001034715A (ja) Icカード用プログラム実行時検証システム、icカード用プログラム実行時検証方法およびicカード
JP2864589B2 (ja) 関数値差異出力システム
JPH03235135A (ja) プログラムの自動検査方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees