JPH031238A - 情報処理装置のコンパイラ - Google Patents

情報処理装置のコンパイラ

Info

Publication number
JPH031238A
JPH031238A JP13450389A JP13450389A JPH031238A JP H031238 A JPH031238 A JP H031238A JP 13450389 A JP13450389 A JP 13450389A JP 13450389 A JP13450389 A JP 13450389A JP H031238 A JPH031238 A JP H031238A
Authority
JP
Japan
Prior art keywords
address
subprogram
instruction
addresses
machine language
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
JP13450389A
Other languages
English (en)
Inventor
Tadahiko Maeda
忠彦 前田
Koji Masuda
益田 浩司
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP13450389A priority Critical patent/JPH031238A/ja
Publication of JPH031238A publication Critical patent/JPH031238A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は、データ処理mが少なくなるような機械語を生
成するコンパイラに関する。
(従来の技術) 第2図は、従来のコンパイラの機能の説明図である。
コンパイラ1は、ソースプログラム2を機械語3に変換
する。
ソースプログラム2は、フォートランあるいはC言語等
のいわゆる高級言語で作成されており、複数のデータ文
24及び複数の命令文23から成る。データ文24は、
ソースプログラム2によって処理されるデータを定義す
るための文である。
命令文23は、所定のデータ文24で定義されるデータ
を指定し、このデータについて演算処理を行なうための
情報を表わしたものである。
ソースプログラム2には、主プログラム21及び副プロ
グラム22等が含まれる。副プログラム22は、主プロ
グラム21で繰返して行なわれる処理をまとめたもので
ある。主プログラム21は、副プログラム22を呼出し
て、この副プログラムに処理を行なわせるための命令文
25.26を複数含んでいる。
コンパイラ1は、まず、主プログラム21に含まれる命
令文23及びデータ24を機械語3に変換スル。即ち、
コンパイラ1は、各命令文23を複数の命令語31に分
解し、データ文24を2進数の数値語32に変換し、こ
れらの命令語31及び数値語32を磁気ディスク等の補
助記憶装置(図示省略)に格納する。この場合、命令語
31のオペランド34には、数値語32の格納位置を表
わすアドレスとして絶対アドレスが格納される。絶対ア
ドレスは、ソースプログラム2の主プログラム21の先
頭アドレスをOとして求めた絶対論理アドレスに対応す
るアドレスである。
次に、コンパイラ1は、副プログラム22に含まれる命
令文23及びデータ文24を機械語3に変換する。この
変換は、主プログラム21の場合と同様に行なわれる。
即ち、命令語31のオペランド34には、数値語の格納
位置を表わすアドレスとして前述した絶対アドレスが格
納される。
以上のようにして、変換された機械語3は、次のように
して実行される。
まず、補助記憶装置に格納された主プログラム及び副プ
ログラムの機械語3を、主記憶装置4に転送する。この
転送の際、命令語31のオペランド34に格納された絶
対アドレスを実アドレスに変換する。そして、主記憶装
置4からプロセッサ5のレジスタ6に、命令語を1つず
つ呼出して、この命令語31のオペランドの実アドレス
が示すデータの演算処理が逐次行なわれる。
この状態において、副プログラムを呼出す命令語33が
レジスタ6に読出されると、副プログラムの機械語が主
記憶装置4の所定の領域に転記される。この転記の際、
副プログラムの命令語のオペランドに指定された絶対ア
ドレスが実アドレスに変換される。副プログラムの命令
語は、1つずつレジスタ6に続出され、実アドレスが示
すデータの演算処理が行なわれる。
副プログラムのすべての命令語の読出しが終わり、副プ
ログラムによるデータ処理が完了すると、副プログラム
の機械語は、主記憶装置4上の転記した領域から消され
る。そして、主プログラムの命令語33以降の命令語が
逐次読出され、主プログラムの処理が続けられる。
この状態において、副プログラムを読出す命令語34が
レジスタ6に読出されると、副プログラムの機械語が再
び主記憶装置4の別の所定の領域に転記される。そして
、上述した副プログラムによる処理が再び行なわれる。
このようにして、主プログラムで繰返し行なわれるデー
タ処理が副プログラムにより行なわれる。
(発明が解決しようとする課題) ところが、以上の構成の情報処理装置のコンパイラには
、次のような問題点があった。 即ち、機械語3におけ
る命令語31のオペランド34に絶対アドレスを指定す
るようにしていたため、副プログラムの機械語の転記の
際にこの絶対アドレスから実アドレスを計算しなければ
ならなかった。このような絶対アドレスから実アドレス
を求める計算は、主プログラムにより副プログラムが呼
出され、副プログラムが主記憶装置4上に転記された後
でなければ、行なうことができない。なぜなら、副プロ
グラムの主記憶装置4上での格納位置が定まらなければ
、実アドレスが定まらないからである。副プログラムが
主記憶装置4上に転記される位置は、呼出しの都度、異
なるものであり、固定的なものではない。従って、この
ようなアドレス計算の実行に多少の時間を要するため、
データ処理速度が遅くなるという問題があった。
特に、主プログラムにより、副プログラムが多数回に亘
って呼出・される場合には、処理速度の低下が無視でき
なくなるという問題を生じた。
本発明は、上述の問題点を解決するためになされたもの
で、情報処理装置の処理速度の高速化に寄与できるよう
にしたコンパイラを提供することを目的とするものであ
る。
(課題を解決するための手段) 本発明の情報処理装置のコンパイラは、データ処理を行
なうための命令文を含む主プログラムと、データ処理を
行なうための命令文を含み、主プログラム中の所定の命
令文により呼出される副プログラムとから成るソースプ
ログラムを、機械語のプログラムに変換するコンパイラ
において、前記副プログラム中に含まれる命令文とデー
タ・文の相対アドレスが固定的に決まるか否かを解析す
る解析手段と、当該解析手段により解析された固定的に
決まるアドレスの数と、固定的に決まらないアドレスの
数とを比較する比較手段と、当該比較手段による比較結
果に応じて、相対アドレス若しくは絶対アドレスのいず
れか一方を用いて、ソースプログラムから機械語のプロ
グラムへの変換を行なうことを特徴とするものである。
(作用) 以上の情報処理装置のプロセッサにおいては、ソースプ
ログラムの副プログラム中の命令文で指定されたアドレ
スが、当該副プログラムに対し、固定的に決まるか否か
が解析される。第1図のように、副プログラム22の命
令文23で指定されるデータを定義するデータ文24が
副プログラム22の領域内にあるときは、当該命令文と
データ文の相対アドレス、即ち相対距離は固定的になる
。一方、比較手段により、固定的に決まるアドレスの数
と、固定的に決まらないアドレスの数とが比較される。
この比較手段の比較結果に応じて、機械語の命令語に相
対アドレス若しくは絶対アドレスが指定される。
例えば、相対的に決まるアドレスの数が相対的に決まら
ないアドレスの数より大きいと判断されたとき、機械語
の命令語に相対アドレスを指定してソースプログラムか
ら機械語のプログラムへの変換が行なわれる。
この場合、情報処理装置の動作時は、主プログラム中の
所定の命令語で副プログラムが呼出されたとき、第5図
のように、副プログラムが主記憶装置上の格納領域から
主記憶装置上の所定の領域にそのまま転記される。そし
て、副プログラムの命令語がプロセッサのレジスタに読
出される際に、この相対アドレスから実アドレスが求め
られ、この実アドレスにあるデータの処理が行なわれる
。従って、副プログラムの転記の際にアドレス計算が不
要となり、このアドレス計算が省かれる分だけ処理が高
速化する。
また、例えば、固定的に決まるアドレスの数が固定的に
決まらないアドレスの数より小さいと判断されたとき、
機械語のオペランドに絶対アドレスを指定してソースプ
ログラムから機械語のプログラムへの変換が行なわれる
この場合、従来と同様に、情報処理装置の動作時は、主
プログラム中の所定の命令語で副プログラムが呼出され
たとき、副プログラムが主記憶装置上の格納領域から主
記憶装置の別の所定の領域に転記された後、絶対アドレ
スから実アドレスが計算される。そして、副プログラム
の命令語がプロセッサのレジスタに読出される際に、こ
の実アドレスに格納されたデータの処理が行なわれる。
従って、副プログラムに対して固定的に決まるアドレス
が、固定的に決まらないアドレスより少ないときは、従
来と同様に、プロセッサにおいて、相対アドレスに所定
の実アドレスを加算して、目的の実アドレスを求める必
要はない。
(実施例) 第1図は、本発明の情報処理装置のコンパイラの実施例
を示す図である。
図示のコンパイラlは、解析手段11と、比較手段12
と、相対アドレス設定手段13と、計数手段14とから
成る。
解析手段11は、ソースプログラムを解析するためのプ
ログラムから成る。この解析手段11は、ソースプログ
ラムの副プログラム中の命令文で指定されたアドレスが
各命令文に対し、固定的に決まるか否かを解析する。即
ち、解析手段11は、副プログラムの命令文で指定され
たデータ文が副プログラムの領域内にあるか否かを解析
する。
計算手段14は、解析手段11により固定的に決まると
解析されたアドレスの数と、解析手段11により固定的
に決まらないと解析されたアドレスの数とを計数する。
比較手段12は、計数手段14により計数された固定的
に決まるアドレスの数と、固定的に決まらないアドレス
の数とを比較する。
相対アドレス設定手段13は、まず、ソースプログラム
2の副プログラム22中のデータ文24の相対論理アド
レスを求める。相対論理アドレスは、副プログラム22
の先頭アドレスなOとするアドレスである。次に、相対
アドレス設定手段13は、この相対論理アドレスからソ
ースプログラム2を機械語3に変換したときの命令語3
1と数値語32との相対アドレスを計算する。相対アド
レス設定手段13は、機械語3の命令語31に相対アド
レスの格納を行なう。この際、第3図に示すように、オ
ペランド34の先頭の2ビツトに“11”を格納し、相
対アドレスの指定を行なう。
第3図は、機械語3における命令語31のオペランド3
4の構成図である。
図示のように、オペランド34は、第O〜31ビットの
32ビツトから成る。
最初の第1及び第2ビツトの2ビツトは、絶対アドレス
か相対アドレスかの指定を示す。この2ビツトが、00
”   ”01”   “10”の場合は、オペランド
34に格納されたアドレスが絶対アドレスであることを
示す。また、この2ビツトが、“11゛の場合は、オペ
ランド34に格納されたアドレスが相対アドレスである
ことを示す。
第4図は、第3図のオペランドに指定されたアドレスの
解釈の手順を示すフローチャートである。
まず、ステップS41では、命令語31から第3図に示
すオペランド34を取出す。次に、ステップS42で、
オペランド34の先頭の2ビツトが”00”01”10
°゛のいずれかか、”11”かを判別する。
先頭の2ビツトが“00”01” “10”のいずれかのときは、オペランド34に格納さ
れているアドレスは、絶対アドレスであるので、この絶
対アドレスによって示されるデータに対して演算処理を
行なうようにする(ステップ543)。
先頭の2ビツトが“11”のときは、オペランド34に
格納されているアドレスは、相対アドレスであるので、
この命令語31が格納されている絶対アドレスaにオペ
ランド34の下30ピッ・トを加算する。そして、この
加算値Aは、命令語31のオペランド34により指定さ
れたデータのアドレスとなる。従って、このアドレスに
よって示されるデータに対して演算処理を行なうように
する。
第5図は、主記憶袋(g4の内容を示す図である。
16進数で2000番地に格納されている副プログラム
の3つの命令語が、主プログラムにおける副プログラム
呼出命令35により、例えば、 tooo。
番地に格納される。また、これらの3つの命令語31は
、主プログラムにおける副プログラムの呼出命令36に
より、例えば、20000番地に格納される。この場合
、命令語31のオペランド34には相対アドレスが格納
されているので、アドレスの書換えの必要がなく、その
まま転記すればよい。尚、図示の■及び■の領域に格納
された命令語の相対アドレスにより、図示の1及びII
の領域に格納されたデータが示される。
次に、上述のように構成した情報処理装置のコンパイラ
の動作を説明する。
第1図において、コンパイラ1は、まず、ソースプログ
ラム2の主プログラム21に記載された命令文23及び
データ文24を、それぞれ機械語3における命令語31
及び数値語32に変換する。この場合、機械語3におけ
る命令語31のオペランド34には、絶対アドレスが指
定される。
次に、コンパイラlは、副プログラム22に記載された
命令文23及びデータ文24を、それぞれ機械語3にお
ける命令語31及び数値語32に変換する。この場合、
解析手段11により副ブログラム22中の命令文23で
指定されたデータ文24のアドレスが、命令文23に対
し、固定的に決定されるか否かが解析される。この解析
は、副プログラム22中の各命令文23で指定されたデ
ータ文24が副プログラム22の領域内にあるか否かを
判断することにより行なわれる。
そして、副プログラム22の命令文23を機械語3にお
ける命令語31に変換したときの命令語31のオペラン
ド34で指定されるアドレスの数が計数手段14により
計数される。この場合、解析手段11で解析された固定
的に決定されるアドレスの数と、固定的に決定されない
アドレスの数とが別個に計数される。
次に、比較手段12により、固定的に決定されるアドレ
スの数と、固定的に決定されないアドレスの数とが比較
される。この比較の結果、固定的に決定されるアドレス
が固定的に決定されないアドレスより多いときは、相対
アドレス設定手段13により機械語3における命令語3
1への変換の際に相対アドレスが指定される。この相対
アドレスは、機械語3における各命令語31から数値語
32までの相対アドレスである。
また、比較手段12による比較の結果、固定的に決定さ
れるアドレスが固定的に決定されないアドレスより少な
いときは、機械語3における命令語31のオペランド3
4に絶対アドレスが設定される。この絶対アドレスは、
ソースプログラム2の先頭アドレスをOとした絶対論理
アドレスに対応するアドレスである。
次に、第1図に示す本発明のコンパイラlで生成された
機械語3を実行する情報処理装置の動作を説明する。
主プログラムの機械語が実行されると、この主プログラ
ムに対応した命令語31が1つずつプロセッサ5のレジ
スタ6に続出される。そして、この命令語31のオペラ
ンド34に格納された絶対アドレスで示されるデータに
ついての演算処理が行なわれる。
この状態で、副プログラムを呼出す命令語35が読出さ
れると、これに続いて副プログラムの命令語31がレジ
スタ6に読出されろ。そして、この命令語31のオペラ
ンド34に格納されたアドレスが絶対アドレスか相対ア
ドレスかが第3図に示すビットにより第4図に示す手順
で判別される。絶対アドレスの場合は、これにより示さ
れるデータについての演算処理が直接行なわれる。また
、相対アドレスの場合は、副プログラムが格納されたア
ドレスに相対アドレスを加算したアドレスにより示され
るデータについての演算処理が行なわれる。
本発明の情報処理装置のコンパイラは、以上の実施例に
限定されない。
即ち、本発明は、ソースプログラム2中の主プログラム
が副プログラムを複数回呼出す場合のすべてについて適
用されるものであり、第1図に示す実施例に限らず、副
プログラムが複数あってもよく、また、ある副プログラ
ムが他の副プログラムを呼出すようになっていても差し
支え無い。
(発明の効果) 以上の構成の本発明の情報処理装置のコンパイラは、副
プログラムの命令語について固定的に決まるアドレスの
数と、固定的に決まるアドレスの数との比に応じて、機
械語に変換した際の命令語のオペランドに相対アドレス
若しくは絶対アドレスのいずれかを指定するようにした
ので、次のような効果がある。
即ち、情報処理装置の動作の際、即ち機械語のプログラ
ムの実行の際、副プログラムが呼出された場合に、副プ
ログラムの命令語をアドレス計算せずにそのまま所定の
記憶領域に転記することができる・、従って、主プログ
ラムによって副プログラムが多数回に亘って呼出される
場合に、処理速度の高速化を図ることができる。
また、固定的に決まるアドレスの数が固定的に決まらな
いアドレスの数より小さい場合には、機械語に変換しな
際の命令語のオペランドに絶対アドレスが指定されるの
で、機械語のプログラムの実行の際、相対アドレスから
絶対アドレスを求めるための加算を省くことができる。
従って、この場合にも、処理速度の高速化を図ることが
できる。
【図面の簡単な説明】
第1図は本発明の情報処理装置のコンパイラの構成図、
第2図は従来の情報処理装置のコンパイラの構成図、第
3図は機械語における命令語のオペランドの構成図、第
4図は第3図のオペランドに指定されたアドレスの解釈
の手順を示すフローチャート、第5図は主記憶装置の内
部構成の説明図である。 l・・・コンパイラ、2・・・ソースプログラム、3・
・・機械語、11・・・解析手段、12・・・比較手段
、13・・・相対アドレス設定手段、14・・・計数手
段、21・・・主プログラム、22・・・副プログラム
、23・・・命令文、24・・・データ文、25.26
・・・副プログラム呼出命令文、31・・・命令語、3
2・・・数値語、33・・・命令、34・・・オペラン
ド。 第5図

Claims (1)

  1. 【特許請求の範囲】 データ処理を行なうための命令文を含む主プログラムと
    、データ処理を行なうための命令文を含み、主プログラ
    ム中の所定の命令文により呼出される副プログラムとか
    ら成るソースプログラムを、 機械語のプログラムに変換するコンパイラにおいて、 前記副プログラム中に含まれる命令文とデータ文の相対
    アドレスが固定的に決まるか否かを解析する解析手段と
    、 当該解析手段により解析された固定的に決まるアドレス
    の数と、固定的に決まらないアドレスの数とを比較する
    比較手段と、 当該比較手段による比較結果に応じて、相対アドレス若
    しくは絶対アドレスのいずれか一方を用いて、ソースプ
    ログラムから機械語のプログラムへの変換を行なうこと
    を特徴とする情報処理装置のコンパイラ。
JP13450389A 1989-05-30 1989-05-30 情報処理装置のコンパイラ Pending JPH031238A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP13450389A JPH031238A (ja) 1989-05-30 1989-05-30 情報処理装置のコンパイラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13450389A JPH031238A (ja) 1989-05-30 1989-05-30 情報処理装置のコンパイラ

Publications (1)

Publication Number Publication Date
JPH031238A true JPH031238A (ja) 1991-01-07

Family

ID=15129849

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13450389A Pending JPH031238A (ja) 1989-05-30 1989-05-30 情報処理装置のコンパイラ

Country Status (1)

Country Link
JP (1) JPH031238A (ja)

Similar Documents

Publication Publication Date Title
EP0213843A2 (en) Digital processor control
US6086624A (en) Simulator and simulation method in each of which simulation can be carried out at a high-speed
US6233732B1 (en) Compiling system using intermediate codes to store a plurality of values
JP3049814B2 (ja) マイクロコンピュータの言語処理装置
JPH031238A (ja) 情報処理装置のコンパイラ
JPS62279438A (ja) トレ−ス回路
JPS5894041A (ja) 高級言語のデバツク支援装置
JPH04268928A (ja) エミュレーション装置及び半導体装置
JP3130421B2 (ja) プログラム解析方法および装置
JP3424596B2 (ja) シンボル参照情報のキャッシュ方法ならびに装置
JPS63132335A (ja) 計算機言語処理系の実行方式
JPS6319040A (ja) 情報処理装置
JPS60220468A (ja) ベクトル演算制御方式
JPH0293947A (ja) 電子計算機
JPH06168074A (ja) 共通入出力装置
JPH05143356A (ja) コンパイラ装置
JPH0619721A (ja) 機械語翻訳最適化方式
JPH0264822A (ja) ファイル処理エラー検出方法
JPH06250881A (ja) シンボリックデバッグ方式
JPH02222032A (ja) 加減算命令の最適化方式
JPH03168845A (ja) 命令実行制御方式
JPS6367604A (ja) プロセス信号の変換装置
JPH0440528A (ja) プログラム翻訳装置
JPH02230330A (ja) 推論装置
JPH0812637B2 (ja) アドレス変換方式