JP2786689B2 - コンパイラ処理方法 - Google Patents

コンパイラ処理方法

Info

Publication number
JP2786689B2
JP2786689B2 JP24063789A JP24063789A JP2786689B2 JP 2786689 B2 JP2786689 B2 JP 2786689B2 JP 24063789 A JP24063789 A JP 24063789A JP 24063789 A JP24063789 A JP 24063789A JP 2786689 B2 JP2786689 B2 JP 2786689B2
Authority
JP
Japan
Prior art keywords
machine language
instruction
data
language instruction
address
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 - Lifetime
Application number
JP24063789A
Other languages
English (en)
Other versions
JPH03103928A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP24063789A priority Critical patent/JP2786689B2/ja
Publication of JPH03103928A publication Critical patent/JPH03103928A/ja
Application granted granted Critical
Publication of JP2786689B2 publication Critical patent/JP2786689B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は命令を高速に実行するため、アクセスするメ
モリアドレスを制限し、これに適合しないと実行を中断
する計算機のコンパイラ処理方法に係り、特に、プログ
ラムの実行を中断させることなく処理を行う機械語命令
群を生成するのに好適なコンパイラの処理方法に関す
る。
〔従来の技術〕
従来ハードウェアでサポートされていない命令および
命令実行時の制限事項にあてはまる使用をした場合に
は、これをハードウェアで検出し該当する命令の実行が
中断されてしまう。これを救済する方法としてはソフト
ウェアによる擬似命令処理(エミュレーション処理)を
特開昭63−247834号公報に記載のようにハードウェアの
命令として実行する必要がある。
〔発明が解決しようとする課題〕
上記従来技術は実行時における命令実行時間がハード
ウェアで直接実行した場合に比べて大幅にかかってしま
うことが考慮されておらず、プログラムの実行性能を低
下させてしまう問題があった。
本発明はソフトウェアでエミュレーションを実行する
のではなく、プログラムをコンパイルする時点でコンパ
イラによりエラーとなるケースを検出して、コンパイル
段階でエアーが発生しない命令群に変換するコパイラ処
理方法を提供することを目的とする。
〔課題を解決するための手段〕
上記目的を達成するために、本発明はコンパイラの処
理中にコンパイル対象のプログラム中で定義されている
データおよびプログラムを実行するために作用する作業
エリアを参照および設定する命令を作成する時点で、該
当するエリアに対して直接的にアクセスしないような命
令群に変換することにしたものである。
即ち、本発明では、コンパイラで作成されるある機械
語命令(1)で実行できない場合に、コンパイル中でこ
の状態を検出して別の機械語命令(2)を作成させる。
この別の機械語命令(2)を作成する例には、 (イ)機械語命令(1)を使用してデータ領域より内容
を取出す場合(請求項1)。
(ロ)機械語命令(1)を使用してデータ領域へ値を設
定する場合(請求項2)。
ここで、請求項1のある機械語命令(1)とは、コン
パイラによりソースプログラムに対応して作成される機
械語命令であり、データの格納アドレス関係なく該当す
るエリアの内容を参照および設定するために使用する機
械語命令。本特許の対象とする計算機システムでは、参
照および設定するデータの格納アドレスに制限が設けら
れており、通常、コンパイラで出力する機械語命令
(1)では正常に該当エリアに対してアクセスすること
ができなくなる場合がある。
更に請求項1の別の機械語命令(2)の意味は以下と
なる。機械語命令(1)で実行した場合、計算機システ
ムの制限により正しく実行できない場合には別の機械語
命令(機械語(2))を作成することにより本来実行す
べき機械語命令(1)に相当する処理を行わせる。この
場合、機械語命令(1)では1命令で実行できていた処
理が複雑の命令群に展開され、実行される。
機械語(1),(2)の考え方は請求項2についても
同様となる。
従って、請求項1では、データを読み出す場合が正し
く行えないために読み出し処理を機械語命令(1)に替
わり機械語命令(2)で実施するもの,請求項2では、
データを書き込む場合が正しく行えないために書き込み
処理を機械語命令(1)に替わり機械語命令(2)で実
施するもの,但し、請求項1,2ではいずれも読み出しま
たは書き込みのいずれかが機械語命令(1)にて実行で
きるものとなる。
本発明によれば、コンパイラの処理にてプログラムを
コンパイルする段階でプログラム中でアクセスするメモ
リアドレスがこれを実行する計算機システムで実行でき
ないことを検出した場合には、該当するエリアに対して
直接的にアクセスすることをしないような命令群に変換
する。それによって、コンパイルされたプログラムはエ
ラーが検出されずに正しく実行し、かつエミュレーショ
ンで実行する場合に比べ大幅な実行性能の低下を防止す
ることができる。
〔実施例〕
以下図面を参照して本発明の一実施例を説明する。第
1図は本発明を適用したFORTRANコンパイラの処理ブロ
ック図を示す。1aはFORTRANコンパイラの起動制御を実
行するドライバ3aに対する起動要求情報を示し、1b,1d,
1fはそれぞれドライバ3aからの起動要求情報を示し、1
c,1e,1gはそれぞれ1b,1d,1fの起動要求情報を受け付け
たのち、各それぞれの処理3b,3c,3dを実行してドライバ
3aに対して処理の終了を示す情報である。ドライバ3aは
1bに対して1cの情報が戻るまで次の処理を起動せずこれ
らの情報を順次発行することによりFORTRANコンパイラ
を実行させている。各処理終了後、コンパイラの終了情
報である1gがドライバ3aで検出した場合にはすべてのコ
ンパイル処理が終了したものとしてFORTRANの処理終了
情報1hをシステムに戻す。ここで3はドライバ3aにより
制御されるFORTRANコンパイラ本体を示し、3bは構文解
析フェーズでありディスク2に格納されているソースフ
ァイル2aよりFORTRANで記述されたプログラムを入力し
そのプログラムが文法的に正しいかを判定して、正しい
場合にはンコンパイラ内部で処理しやすい中間語データ
ファイル2bに変換し、3cはコード生成フェーズであり3b
で作成した中間語データファイル2bを入力して機械語命
令を作成するための共通オブジェクトデータファイル2c
に変換し、3dはオブジェクト作成フェーズであり3cで作
成した共通オブジェクトデータファイル2cを入力して最
終的な機械語命令ファイル2dに変換する処理を示す。
第2図は構文解析フェーズの処理フローを示した図で
ある。構文解析処理フェーズでは、ディスク2よりソー
スファイル2aを入力(4a)し文法的な誤り、すなわち構
文誤りチェックを実施(4b)したのち、正しく記述され
ている場合にはユーザ定義名称の登録(4c)、ユーザ定
義エリア情報の登録(4d)を行い、これらの情報に従っ
て中間語情報を作成(4e)後、つぎの処理フェーズで使
用できるようにディスク2へ中間語データをファイル2b
として出力(4f)する。この時4c,4dの処理で作成した
情報はファイル2bへ中間語データとして出力される。
第3図はコード生成フェーズの処理フローを示したも
のである。コード生成処理フェーズではディスク2より
中間語ファイル2bを入力(5a)した後、これら中間語デ
ータ中の命令作成情報を検出して機械語命令を作成する
がこれらの命令が参照しているユーザ定義名称情報がど
のメモリ上に配置されているかを示すユーザ定義エリア
情報を調査して直接そのエリアアドレスが参照できるか
を調べ、参照できないエリア配置(ミスアライン)とな
っている場合にはエリアを直接命令に指定すると命令は
正しく実行されないためこれを検出(5b)する。もしミ
アラインのエリアを参照している場合にはミスアライン
の回避命令処理を行う一連の命令群を作成(5c)し、ミ
スアラインのエリアを参照しない場合には直接に該当エ
リアを参照する正常命令を作成(5d)する。このような
処理を行い中間語データを共通オブジェクト中間語情報
データとしてファイル2cへ出力(5e)する。
第4図はオブジェクト作成フェーズの処理フローを示
したものである。オブジェクト作成フェーズではディス
ク2より共通オブジェクト中間語情報データファイル2c
を入力(6a)した後、共通オブジェクト中間語情報デー
タを機械語命令であるオブジェクトフォーマットに変換
(6b)し、ディスク2へオブジェクトファイル2dとして
出力(6c)する。
第5図は本発明を実現したFORTRANコンパイラにおい
て具体的な例を示したものであり、(イ)図の7はFORT
RANプログラムを示し、変数A,Cは整数型2バイトのエリ
アを確保することを定義(7a)し、B,Dは実数型4バイ
トのエリアを確保することを定義(7b)し、それぞれCO
MMON変数として定義(7c)されていることを示す。ま
た、プログラム7では実数型の変数BをDに代入する文
を実行(7d)している。(ロ)図の8は7で示したFORT
RANプログラムを機械語命令(8a〜8e)で表示したもの
であり、FMOVE.X,Y,ZはYで示されるエリアまたはハー
ドウェアレジスタよりZで示されるエリアまたはハード
ウェアレジスタにXで指定されたサイズ、Lは4バイト
サイズで、Wは2バイトサイズでデータを転送すること
を示す。但し、FMOVE命令Y,Zは必ず4バイトアドレス上
(4バイトアドレスの整数倍)に配置されている必要が
ある。また、SRA命令はハードウェアレジスタ中のデー
タを右に算術シフトする命令であり、「SRA 16」は2
バイト右シフト(この例では第6図でB2をCの位置に移
動)する。ここで4×n+0はメモリ上のアドレスを示
し、d0,d1はハードウェアレジスタを示す。
第6図は8に示す機械語命令の処理を図式したもので
あり、9はメモリエリアを示し、9a,9b,9c,9eはそれぞ
れA,B,C,Dの変数エリアを、9dはD=Bを実施するため
に使用する作業エリアを示す。また、10,11はハードウ
ェアのレジスタを示し、10aはレジスタ10の上2バイト
を、10bはレジスタの下2バイトを示す。11a,11bについ
ても同様。D=Bを実行するとき、Bのエリアはメモリ
上では4×n+2から4×n+5までの4バイトのエリ
アを占有する。このときBの先頭アドレスを示す4×n
+2は4バイトアドレス境界に配置されていないためFM
OVE命令では正しく実行できない。このためBの上2バ
イトを含む4バイトのエリアの内容をレジスタd0に転送
(8a)し、Bの下2バイトを含む4バイトのエリアの内
容をレジスタd1に転送(8b)する。次にこれらのレジス
タよりそれぞれBの上下2バイトを作業エリアに設定
(8c),(8d)する。次に作業エリアに格納されたデー
タをDのエリアに設定(8e)する。このようにしてミス
アラインのエリアよりデータの転送が可能となる。
また、B=Dを実行する場合には上記例と逆の方法に
てDのエリアの内容を上記で述べたd0およびd1と同様な
状態に配置したのち、d0およびd1の内容をBのメモリに
転送することによりB=Dの処理を実施する。なお、上
記例においてBおよびDのいずれもが4バイトアドレス
上にない場合にはd0およびd1レジスタに読み出したのち
設定したいエリタに対してのみ内容を設定する命令を使
用してデータ設定を行う。
なお、作業エリア9dは本実施例ではメモリアドレス上
に確保しているが、ハードウェアレジスタ上に確保する
ことも可能である。
〔発明の効果〕
本発明によれば、命令を高速に実行するためアクセス
するメモリアドレスを制限し、これに適合しないと実行
を中断する計算システムでも、コンパイル時点でエラー
とならない命令群を作成することにより命令実行時間の
大幅な低下が図れる。
【図面の簡単な説明】
第1図は本発明の一実施例におけるFORTRNコンパイラの
処理ブロックを示す図、第2図は構文解析処理フェーズ
を示す図、第3図はコード生成処理フェーズを示す図、
第4図はオブジェクト生成フェーズの処理フロー図、第
5図,第6図はFORTRANコンパイラが出力した結果を説
明した図である。 1a〜1h……起動および終了情報、2a〜2d……ソース、中
間語およびオブジェクトファイル、3……FORTRANコン
パイラ本体、4a〜4f……構文解析処理フェーズの処理フ
ロー、5a〜5e……コード生成処理フェーズの処理フロ
ー、6a〜6c……オブジェクト生成フェーズの処理フロ
ー、7……FORTRANプログラム例、8……機械語命令
例、9a〜9e……変数および作業エリアのメモリエリア、
10,11……ハードウェアレジスタ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 笠嶋 広和 茨城県日立市大みか町5丁目2番1号 株式会社日立製作所大みか工場内 (56)参考文献 特開 昭61−187343(JP,A) 「インターフェース」 No.101 (1985−10) P.232−245 (58)調査した分野(Int.Cl.6,DB名) G06F 9/45 G06F 9/06

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】メモリにアクセス可能なアドレスが制限さ
    れ許容されないアドレスへのメモリアクセスが発生した
    とき命令処理が中断してしまう計算機で実行処理される
    ソフトウェアプログラムを機械語命令群に変換するコン
    パイラの処理方法において、コンパイル時点で、機械語
    命令が前記許容されないアドレスのデータを参照するか
    否かを判断し、許容されないアドレスのデータを参照す
    ると判断した場合には、当該機械語命令に代えて、前記
    データをメモリの当該アドレス領域から別の場所に移す
    と共にこの移したデータを参照する別の機械語命令を生
    成することを特徴とするコンパイラ処理方法。
  2. 【請求項2】メモリにアクセス可能なアドレスが制限さ
    れ許容されないアドレスへのメモリアクセスが発生した
    とき命令処理が中断してしまう計算機で実行処理される
    ソフトウェアプログラムを機械語命令群に変換するコン
    パイラの処理方法において、コンパイル時点で、機械語
    命令が前記許容されないアドレスにデータを書き込むか
    否かを判断し、許容されないアドレスにデータを書き込
    むと判断した場合には、当該機械語命令に代えて、前記
    データを一旦別の場所に格納することで該データの位置
    をずらしその後に該場所から前記許容されないアドレス
    への書き込みを行う別の機械語命令を生成することを特
    徴とするコンパイラ処理方法。
JP24063789A 1989-09-19 1989-09-19 コンパイラ処理方法 Expired - Lifetime JP2786689B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP24063789A JP2786689B2 (ja) 1989-09-19 1989-09-19 コンパイラ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24063789A JP2786689B2 (ja) 1989-09-19 1989-09-19 コンパイラ処理方法

Publications (2)

Publication Number Publication Date
JPH03103928A JPH03103928A (ja) 1991-04-30
JP2786689B2 true JP2786689B2 (ja) 1998-08-13

Family

ID=17062461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24063789A Expired - Lifetime JP2786689B2 (ja) 1989-09-19 1989-09-19 コンパイラ処理方法

Country Status (1)

Country Link
JP (1) JP2786689B2 (ja)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
「インターフェース」 No.101 (1985−10) P.232−245

Also Published As

Publication number Publication date
JPH03103928A (ja) 1991-04-30

Similar Documents

Publication Publication Date Title
US6363522B1 (en) Method and apparatus for handling exceptions as normal control flow
US5826088A (en) System for protecting computer software written in interpreted language
Abrahams et al. The LISP 2 programming language and system
JP2786689B2 (ja) コンパイラ処理方法
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
US20040064301A1 (en) Software development system, simulator, and recording medium
JP2943590B2 (ja) インタプリタ型シミュレーション方法
JP2672968B2 (ja) デバッグ用ソースリスト出力処理方式
JP3018783B2 (ja) コンパイル方式
JP3279706B2 (ja) オンライン・コンパイル方式
JP2932812B2 (ja) 言語処理プログラム実行装置
JP3424596B2 (ja) シンボル参照情報のキャッシュ方法ならびに装置
JP3200277B2 (ja) シーケンスプログラム処理方法及び装置
JPS58169637A (ja) コンパイル処理方式
JPS62200426A (ja) 高級言語のマクロ展開方法
JPH05224944A (ja) アラインメント整合方法
JP3192177B2 (ja) オブジェクト処理装置
JPH03268029A (ja) 構文チェッカ
JPH01209542A (ja) 論理検証装置
JPH01320547A (ja) プログラム実行情報の収集方式
JPH05233241A (ja) プログラム作成装置
MONICA INTERNATIONAL by DEVELOPMENT INC. 111 BDC CORPORATION
JPH05108372A (ja) コンパイラ最適化処理内容の出力方式
JPH02205930A (ja) インタフェースチェック処理方法
JPH0792757B2 (ja) 最適データ割付け方式