JPH04178733A - プログラム言語処理方法 - Google Patents

プログラム言語処理方法

Info

Publication number
JPH04178733A
JPH04178733A JP30651790A JP30651790A JPH04178733A JP H04178733 A JPH04178733 A JP H04178733A JP 30651790 A JP30651790 A JP 30651790A JP 30651790 A JP30651790 A JP 30651790A JP H04178733 A JPH04178733 A JP H04178733A
Authority
JP
Japan
Prior art keywords
interpreter
language code
processing
arithmetic operation
executed
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
JP30651790A
Other languages
English (en)
Inventor
Tomoyoshi 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.)
Yokogawa Electric Corp
Original Assignee
Yokogawa Electric 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 Yokogawa Electric Corp filed Critical Yokogawa Electric Corp
Priority to JP30651790A priority Critical patent/JPH04178733A/ja
Publication of JPH04178733A publication Critical patent/JPH04178733A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〈産業上の利用分野〉 本発明は、コンピュータ・システム等にて、ソース・プ
ログラムを中間語コードに翻訳して実行するインタプリ
タと、この翻訳された中間語コードを格納したメモリ領
域を走査して機械語命令に変換するコンパイラとを共存
させたプログラム言語処理方法に関し、詳しくは、数値
演算時に発生するオーバーフローを考慮しようとするも
のである。
〈従来の技術〉 ファクトリ−・オートメーション等の分野に用いられる
コンピュータ・システムは、通常、BASICインタプ
リタ方式が採用され、ソース・プログラムを一旦、中間
品コードに翻訳してこれを実行する方式を採用するもの
が一般的である。
一方、このようなインタプリタ方式のコンピュータ・シ
ステムは、ソース・プログラムを機械語命令に変換する
コンパイラ方式のものより実行速度が遅く、インタプリ
タ方式のシステムにも一部の中間語コードをコンパイル
して機械語に変換して実行速度の高速化を図る、インタ
プリタ方式及びコンパイラ方式が共存するコンピュータ
・システムが最近提案されている。
ここで、プログラム処理中に発生する数値演算、例えば
、11=30000.12=30000゜l3=300
00の条件において、I=I 1+l2−I3という演
算を実行する場合を想定する。
但し、I、It、I2.I3は全て整数型データであり
、コンピュータ・システムの扱う整数範囲は−3276
8〜32767とする。
このような演算I=11+12−I3は、演算の途中(
11+I 2=60000>で演算オーバーフローする
ものである。
インタプリタ方式を採用するシステムの場合、演算の途
中でオーバーフローすると、データを一時的に精度の高
い単精度実数型に変換し、演算を再試行する。そして、
最終的な演算結果が上記の整数範囲におさまらない時の
み演算オーバーフローとする。また、このような演算再
試行はインタプリタ自身が実行するので、ユーザ・プロ
グラムの占めるメモリ・サイズには何ら影響を与えてい
ない。
コンパイラ方式を採用するシステムの場合は、次の3通
りの演算方式かある。
(1)演算の途中でオーバーフローが発生すると、実行
時エラーとみなしエラー・ストップする。
(2)はじめは整数型で演算を行い、演算オーバーフロ
ーが発生すると、精度の高い単精度実数型等にデータを
変換して再度演算を行う。
(3)はじめからデータを精度の高い倍精度実数型に変
換して再度演算を行う。
〈発明が解決しようとする課題〉 以上の方式を言語型、実行速度(正常時、オーバーフロ
ー時)、メモリ効率についてまとめると、第3図の表の
通りとなる。
この表から分かるように、インタプリタ方式は実行速度
は中速であるが、メモリ効率は良い。
また、コンパイラ方式(2)は実行速度は早いが演算再
試行の処理をユーザ・プログラム自身に含めなければな
らないので、メモリ・サイスの増大に影響を与える。
更に、コンパイラ方式(3)は、演算をはじめから精度
の高い倍精度実数型で行うので、通常の整数型の範囲内
で収まる演算でも処理速度が遅くなる。
尚、コンパイラ方式(1)はオーバーフロー時の演算が
ストップするため、考慮に入れないこととする。
本発明は、上記のような欠点を解決することを課題とし
、インタプリタ方式とコンパイラ方式のよい点を組み合
わせて演算時のオーバーフローに対策を施し、高速処理
かつメモリ効率を上げることを目的とする。
く課題を解決するための手段〉 以上の課題を解決した本発明は、ソース・プログラムを
中間語コードに翻訳して実行するインタプリタと、一旦
翻訳された前記中間語コードを走査しコンパイルして機
械語コードに変換するコンパイラとを有し、通常は前記
機械語コードの命令列を実行し、必要に応じて前記イン
タプリタを起動して中間語コードを実行するプログラム
言語処理方法において、前記機械語コードの命令列の実
行中に数値演算オーバーフローを発生した際に前記イン
タプリタを起動して前記数値演算に相当する中間語コー
ドに従って単精度実数型で前記数値演算を実行する手順
を設けたことを特徴とするプログラム言語処理方法であ
る。
く作用〉 本発明のプログラム言語処理方法は、通常はコンパイル
された機械語命令に従って演算処理等を実行し、数値演
算時にオーバーフローが発生するとインタプリタに処理
権を与える。
〈実施例〉 以下、図面を用いて本発明のプログラム言語処理方法の
実線例を説明する。
はじめに、第2図により本発明方法の動作概念を説明す
る。
本発明方法を具体的に実施するには、例えばBASIC
言語において、インタプリタ方式とコンパイラ方式の両
方の方式をサポートするコンピュータ・システムを使用
する。
第2図は、本発明方法で用いる、メモリ内のユーザ・プ
ログラム・エリアA1、システム・ブロダラム・エリア
A2を表わすものである。即ち、ソース・プログラムか
作成されると、BA、SICインタプリタにて中間語コ
ードに翻訳され、更に、この翻訳された中間語コードの
一部をコンパイラ(図示せず)で機械語コードに変換し
て配憶する。
ユーザ・プログラム・エリアA1は、プログラム管理情
報エリアA11、中間語コード・エリアA12、機械語
コード・エリアA13、ワーク・エリアA14よりなり
、システム・プログラム・エリアA2は、BASICイ
ンタプリタA21を有する。
通常、プログラムを実行する際は、機械語コード・エリ
アA13を走査して各処理を行い、必要な場合にBAS
ICインタプリタA21を起動し、中間語コード領域A
12より中間語コードを読み出して実行する。
次に、本発明方法を第1図(a>、(b)のフローチャ
ートを用いて説明する。
第1図(a)のフローチャートは、通常のシーケンスを
表わしたものであり、データI 1. = 1.000
0、l2=1.0OO0,13=10000の条件のも
とでI=11+l1−I3の数値演算を実行する場合を
想定する。但し、1.11.12゜I3は全て整数型デ
ータとする。
この場合は、演算途中、演算結果ともオーバーフローを
発生しない場合であり、はじめに、演算r i、 + 
r 2を整数型で実行し、その結果をAとする。続いて
、演算A−13を実行し、その結果をBとしてBを■に
代入する。
以上の演算は、全て機械語コードの命令列により実行さ
れる。
次に、演算途中でオーバーフローを発生する第1図(b
)のフローチャートを説明する。
ここで、データI’1=30000.l2=30000
、l3=30000の条件のもとでI=Il±l2−I
3の数値演算を実行する場合を想定する。但し、I、1
1.I2.I3は全て整数型データとする。
はじめに、Ill話語コードて演算■l+I2を整数型
で実行する。その結果は、オーバーフローであり、この
オーバーフロー信号により、BASICインタプリタを
起動する。
BASICインタプリタは、演算11+I2に相当する
中間語コードを参照し、この演算11+12を単精度実
数型で実行する。その結果をAとする。
続いて、演算A−13に相当する中間語コードを参照し
、この演$A−I3を単精度実数型で実行する。その結
果をBとする。
最後に、I=Bに対応する中間語コードを参照し、Bに
■を代入して演算I=I 1+12−I 3を終了する
そして、機械語コードの命令列の実行に戻る。
このようにして、本発明方法は、通常は機械語コードを
実行し、数値演算処理でオーバーフローが発生した場合
にのみサブルーチン的にインタプリタを起動して当該演
算を実行する。
〈発明の効果〉 以上述べたように、本発明方法によれば次の効果を得る
(1)演算時にオーバーフローを発生しない場合は、コ
ンパイルされた最適なI!l械語コードのみを実行する
ので、コンパイラ方式と同等の高速処理か保障される。
(2)演算時にオーバーフローを発生した場合は、エラ
ー発生として処理シーケンスを一時的にインタプリタ側
に渡すので、処理内容及びデータ値がインタプリタ方式
のものと同等のものが保障される。
(3)演算オーバーフロー等、エラー発生時の処理をイ
ンタプリタ側に任せているので、ユーザ・プログラムに
エラー処理を含める必要はなく、ユーザ・プログラムの
メモリ効率がよくなる。
【図面の簡単な説明】
第1図(a>は演算時にオーバーフローが発生しない場
合の本発明のプログラム言語処理方法の動作を表わすフ
ローチャート、第1図(b)は演算時にオーバーフロー
が発生した場合の本発明のプログラム言語処理方法の動
作を表わすフローチャート、第2図は本発明方法の動作
概念を表わす図、第3図はインタプリタ方式とコンパイ
ラ方式の実行速度及びメモリ効率を表わす図である。 A1・・・ユーザ・プログラム・エリア、A11・・・
プログラム管理情報エリア、A12・・・中間語コード
・エリア、 A13・・・機械語コード・エリア、 A14・・・ワーク・エリア、 A2・・・システム・プログラム・エリア、A21・・
・BAS ICコンパイラ。 代理人 弁理士  手沢 信助− ゝ( 第1図 (ム) 第1図 (し) Jつ一トメノ)−大ジゴ 第21(1

Claims (1)

    【特許請求の範囲】
  1. (1)ソース・プログラムを中間語コードに翻訳して実
    行するインタプリタと、一旦翻訳された前記中間語コー
    ドを走査しコンパイルして機械語コードに変換するコン
    パイラとを有し、通常は前記機械語コードの命令列を実
    行し、必要に応じて前記インタプリタを起動して中間語
    コードを実行するプログラム言語処理方法において、前
    記機械語コードの命令列の実行中に数値演算オーバーフ
    ローを発生した際に前記インタプリタを起動して前記数
    値演算に相当する中間語コードに従つて単精度実数型で
    前記数値演算を実行する手順を設けたことを特徴とする
    プログラム言語処理方法。
JP30651790A 1990-11-13 1990-11-13 プログラム言語処理方法 Pending JPH04178733A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP30651790A JPH04178733A (ja) 1990-11-13 1990-11-13 プログラム言語処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30651790A JPH04178733A (ja) 1990-11-13 1990-11-13 プログラム言語処理方法

Publications (1)

Publication Number Publication Date
JPH04178733A true JPH04178733A (ja) 1992-06-25

Family

ID=17957983

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30651790A Pending JPH04178733A (ja) 1990-11-13 1990-11-13 プログラム言語処理方法

Country Status (1)

Country Link
JP (1) JPH04178733A (ja)

Similar Documents

Publication Publication Date Title
NO924259D0 (no) Feilmelding ved utfoerelse av oversatt kode
ATE161980T1 (de) System zum betrieb von anwendungs-software in einer sicherheitskritischen umgebung
CA2082408A1 (en) System and method for preserving source instruction atomicity in translated program code
EP0340453A3 (en) Instruction handling sequence control system
US4660142A (en) Digital data processing system employing an object-based addressing system with a single object table
JPH04178733A (ja) プログラム言語処理方法
Baker et al. Implementing ada exceptions
DE69032835D1 (de) Prozedurzustandsdeskriptorsystem für digitale Datenprozessoren
EP0333365A3 (en) Method and apparatus for handling asynchronous memory management exceptions by a vector processor
JPH04178734A (ja) プログラム言語処理装置
JPH0512752B2 (ja)
JPS63158632A (ja) インタプリタシステムにおけるシステムプログラム実行方式
JPS61180344A (ja) 高級言語のステツプ実行システム
JPS6020275A (ja) マルチプロセサの簡易プログラミングシステム
JPH02137030A (ja) プログラムの実行処理システム及びその翻訳システム
JPS6330906A (ja) Nc装置
JPS62137641A (ja) 高級言語のコンパイラ
JPH0128414B2 (ja)
Wilkes Application of microprogramming to medium scale computer design
JPH0293947A (ja) 電子計算機
JPS62205434A (ja) 再帰呼出し可能プログラムのコンパイル処理方式
JPS6236576B2 (ja)
JPH04153741A (ja) 被デバッグプログラムのデバッグにおける逆方向実行方式
JPH02207343A (ja) デバッグ装置
JPS6325736A (ja) 仮想計算機システムにおける割込み制御方式