JPH01280833A - 共通ブロック割り付け方式 - Google Patents

共通ブロック割り付け方式

Info

Publication number
JPH01280833A
JPH01280833A JP10990488A JP10990488A JPH01280833A JP H01280833 A JPH01280833 A JP H01280833A JP 10990488 A JP10990488 A JP 10990488A JP 10990488 A JP10990488 A JP 10990488A JP H01280833 A JPH01280833 A JP H01280833A
Authority
JP
Japan
Prior art keywords
common block
common
program
plural
base 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.)
Pending
Application number
JP10990488A
Other languages
English (en)
Inventor
Ryoji Nemoto
根元 亮治
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 JP10990488A priority Critical patent/JPH01280833A/ja
Publication of JPH01280833A publication Critical patent/JPH01280833A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は共通ブロック割り付け方式に関し、特に高級言
語プログラムの翻訳を行うコンパイラにより生成される
目的プログラムの実行時における効率の改善を行うため
に、複数のプロダラム単位間で参照される複数の共通の
記憶域を一つの連続した領域に割り付ける共通ブロック
割り付け方式〔従来の技術〕 記憶域のアドレスを記憶域を参照するためのベースアド
レスとベースアドレスからの変位との組合せにより表現
し、ベースアドレスを複数のベースレジスタの内の−っ
に予めロードして、ベースレジスタの番号とベースアド
レスからの変位とを指定することにより、記憶域の参照
を行う計算機システムにおいては、コンノ4イラは、複
数の共通ブロックを宣言する複数のプログラム単位を目
的プログラムに翻訳する場合に、翻訳対象の複数のプロ
グラム単位中で宣言されている複数の共通ブロックのそ
れぞれに対して別々のベースアドレスを割り当てて、複
数の共通ブロックが参照されるように目的プログラムを
生成している。
第2図に示すように、高級言語であるFORTRAN言
語で記述され複数の名前付き共通ブロックUl。
U2.U3を宣言している複数のプログラム単位PR0
,1、PRo、2およびPRo、3を翻訳して得られる
目的プログラムにおいては、第3図に示すように。
共通ブロックU1.U2およびU3は記憶域上である距
離G1およびG2だけ隔たった3つの領域に分離されて
構成されるようになっている。ここで。
共通ブロックUl、U2およびU3の先頭のベースアド
レスを、それぞれベースアドレスAI、A2およびA3
とすると、コン/?イラは共通ブロックU1およびU2
間の距離G1および共通ブロックU2およびU3間の距
離G2を認識できないので、共通ブロックU2およびU
3をベースアドレスA1からの変位のみでは参照するこ
とは出来ない。このため、目的プログラムでは、共通ブ
ロックUl。
U2およびU3のそれぞれを参照するために、共通ブロ
ックUl、U2およびU3の先頭にベースアドレスAI
、A2およびA3をそれぞれ割シ当てて。
それらのベースアドレスを2例えばベースレ・ゾスタB
1.B2およびB3にそれぞれロードする命令を実行し
た後に、ベースレジスタBl、B2およびB3にベース
アドレスA1.A2およびA3からの変位をそれぞれ加
えることによって、共通ブロックUl、U2およびU3
の参照を行う必要があった。
また、共通ブロックUl、U2およびU3毎に参照のた
めのベースレジスタBl、B2およびB3が必要になる
ので、特に使用することが可能なベースレジスタの個数
が少ない計算機システムにおいては、ベースレジスタを
共通ブロックの参照と他の記憶域の参照との間で兼用し
て使用する必要が生じる場合が多くなり、このような場
合には必要に応じて他の記憶域の参照のための使用前に
共通ブロックの参照を行うためのベースレジスタの内容
を一旦待避させ、使用後に待避させた内容をベースレジ
スタに再び復元させる命令列を目的プログラムに付加す
る必要があった。
〔発明が解決しようとする課題〕
上述した従来の高級言語プログラムの翻訳処理方式では
、目的プログラムにおいて複数のプログラム単位で宣言
されている複数の共通ブロック毎に、それらの共通ブロ
ックを参照するために使用されるベースレジスタが必要
であったので、複数の共通ブロックを宣言する複数のプ
ログラム単位を翻訳して得られた目的プログラムは、実
行時に共通ブロックを参照するために使用されるすべて
のベースレジスタの内容を定義する命令列が必要になる
という欠点がある。
また使用することが可能なベースレジスタの個数が少な
い計算機システムにおいては、村−スレジスタを共通ブ
ロックの参照と他の記憶域の参照との間で兼用して使用
することになるので、必要に応じてそのベースレジスタ
の内容の待避および復元を行う命令列が更に必要になり
、目的プログラムの実行時の効率を少なからず悪いもの
にしてしまうという欠点がある。
本発明の目的は、上述の点に鑑み、コン・9イラにおい
て複数の共通ブロックが宣言されている複数のプログラ
ム単位を翻訳する際に、それら複数の共通ブロックが目
的プログラムにおいて一つの連続した領域に割り付けら
れるようにすることにより、生成された目的゛プログラ
ムの実行時の効率を向上させることができる共通ブロッ
ク割り付け方式を提供することにある。
〔課題を解決するだめの手段〕
、本発明の共通ブロック割り付け方式では、記憶域のア
ドレスをその記憶域を参照するためのベースアドレスと
ベースアドレスからの変位との組合せにより表現し、ベ
ースアドレスを複数のベースレジスタのうちの一つに予
めロードして、ベースレジスタの番号とベースアドレス
からの変位とを指定することにより、記憶域の参照を行
う計算機7・ステムにおける高級言語プログラムの翻訳
を行うコン・ぐイラにおいて。
異なるプログラム単位から参照される複数の共通ブロッ
クを一つの連続した領域に割り付ける共通ブロック割り
付け手段と。
前記共通ブロック割り付け手段により割り付けられた共
通ブロックの要素を参照するために必要な前記連続した
領域のベースアドレスからの変位を計算する共通ブロッ
ク要素ベースアドレス決定手段と。
を有する。
〔実施例〕
次に1本発明について図面を参照して詳細に説明する。
第1図は2本発明の一実施例による共通ブロック割り付
け方式の構成を示すブロック図である。
本実施例の共通ブOツク割り付け方式は、複数のプログ
ラム単位からなるソースプログラム1と。
ノースプログラム1を入力して翻訳するコンパイラ2と
、コン・ぞイラから出力される複数の目的プログラム3
とからその主要部が構成されている。
コンノぐイラ2は、ソースプログラム1を込、カシ。
後述する手段22〜26を起動する制御手段21と。
制御手段21から得られる一つ一つのプログラム単位を
構文解析してテキスト群を生成するテキスト生成手段2
2と。
テキスト生成手段22から得られたテキストから共通ブ
ロックのテキストを認識し、同時に後述する共通ブロッ
ク割り付け情報保持手段24に保持されている既に翻訳
済みとなっているプログラム単位の共通ブロック割り付
け情報に従って、共通ブロックを一つの連続した領域に
割り付けを行い、この割り付けに関する情報を共通ブロ
ックのテキスト中に埋め込むとともに、共通ブロック割
り付け情報保持手段24にも出力する共通ブロック割υ
付け手段23と。
共通ブロツク別り付け手段23から得られる共通ブロッ
ク割り付け情報を保持する共通ブロック割り付け情報保
持手段24と。
テキストおよび共通ブロック割り付け情報保持手段24
に保持された情報に従って、一つの連続した領域の先頭
だけにベースアドレスを割り当てて、共通ブロックに含
まれる要素の変数の参照を1; 行うためめこのベースアドレスからの変位を計算し、共
通ブロックの要素を参照するテキスト中に埋め込むとと
もに、共通ブロック割り付け情報保持手段24にも出力
する共通ブロック要素ベースアドレス決定手段25と。
前記テキストに従ってプログラム単位に対応する目的プ
ログラムを生成する目的プログラム生成手段26とを含
んで構成される。
次に、このように構成された本実施例の共通ブロック割
り付け方式の動作について第2図、第4図、第5図を参
照しながら具体的に説明する。
コンパイラ2が起動されると、まず制御手段21は1例
えば第2図に示すようなFORTRAN言語で記述され
、複数の名前付き共通ブロックUl、TJ2およびU3
を宣言している複数のプログラム単位PR0,1、PR
o、2 、およびPRo、3からなるソースプログラム
1を取り込み、それぞれのプログラム単位をテキスト生
成手段22に引き渡す。
次に、テキスト生成手段22が、制御手段21から引き
渡されたプログラム単位を構文解析し。
テキスト群を生成する。
続いて、共通ブロック割り付け手段23は、テキスト群
および共通ブロック割り付け情報保持手段24に保持さ
れた情報を基にして、宣言されている共通ブロックU1
.U2およびU3が、第4図に示すような一つの連続し
た領域になるように。
共通ブロックの割り付け処理を行い、その情報を共通ブ
ロックのテキスト中に埋め込むとともに。
共通ブロック割り付け情報保持手段24の共通ブロック
に関する情報の欄に出力する。この情報は。
第5図のような形式になっており、それぞれの共通ブロ
ックと、それに含まれているすべての変数に関する情報
を含んでいる。
例えば、プログラム単位PR0,1を翻訳する際には、
共通ブロック割り付け手段23は共通ブロックU1およ
びU2が連続した領域になるように割り付けを行い、そ
の情報を共通ブロックのテキストに埋め込むとともに、
第5図に示すような共通プロ、り割り付け情報保持手段
21のUlとU2の欄(*1〜*6の欄)に埋め込む。
さらに、プログラム単位PR0,2を翻訳する際には、
共通ブロックU2の割り付けは既に行われているので、
共通ブロックU3が共通ブロックU2に連続した領域に
なるように割り付けを行い、その情報を共通ブロックの
テキストに埋め込むとともに第5図に示すような共通ブ
ロック割り付け情報保持手段24のU3の欄(*7〜*
9の欄)に埋め込む。
次に、共通ブロック要素ベースアドレス決定手段25は
、共通ブo、り割り付け情報保持手段24の情報に基づ
いて、共通ブロツクに含まれる要素である変数のそれぞ
れのベースアドレスA1からの変位を計算し、その変数
を参照しているテキスト中に埋め込むとともに、共通ブ
ロック割り付け情報保持手段24の共通ブロック中の変
数の情報の欄に出力する。ここで共通ブロックに含まれ
る変数の変位は、第4図に示すような、共通ブロック割
り付け手段23によって連続に割り付けられた共通ブロ
ックのベースアドレスA1からの変位となっている。
次に、目的プログラム生成手段26は、テキストに従っ
て、第4図に示すように、共通ブロックU1.U2およ
びU3の一つの連続した領域の先頭のベースアト1/ス
A1をベースレジスタB1にロードし、テキストに示さ
れているベースアドレスA1からの変位によって変数の
参照を行うような命令を生成し、、目的プログラムを生
成する。この動作によシ、コン・ぐイラ2からはそれぞ
れのプログラム単位に対応した複数の目的プログラム3
が出力される。
このように高級言語プログラムの翻訳処理に本実施例の
共通ブロック割り付け方式を適用すれば2例えば。
第2図に示すソースプログラム1の複数のプログラム単
位PR0,1、PRo、 2およびPRo、3中の共通
ブロックUl 、U2およびU3は、目的プログラムに
おいて。
第4図に示すような、一つの連続した領域になるように
割り付けられる。このため、共通ブロックUl、U2お
よびU3が連続しているので、連続した領域の先頭にベ
ースアドレスA1だけを割り当ててベースレジスタB1
にロードした後に、ベースアドレスA1からの変位を加
えれば、共通ブロックU1ばかりでなく共通ブロックU
2およびU3に含まれる変数も参照できるようになる。
〔発明の効果〕
以上説明したように9本発明では複数の共通ブロックを
宣言する複数のプログラム単位を翻訳する際に、複数の
プログラム単位中で宣言されている複数の共通ブロック
が一つの連続した領域になるように割り付けることによ
り、共通ブロックの参照に必要なベースレジスタの個数
を節約してベースレジスタの内容の定義を行う命令列を
減らし。
目的プログラムの実行時の効率を高めることができると
いう効果がある。また、生成される目的プログラムにお
いて他の記憶域の参照に使用できるベースレジスタの個
数を増やすことができるので。
特に使用することが可能なベースレジスタの個数が少な
い計算機システムにおいては、ベースレジスタを共通ブ
ロックの参照と他の記憶域の参照との間で兼用して使用
することによって生じることのあるベースレジスタの内
容の待避および復元を不要にして、生成した目的プログ
ラムの実行時の効率を高めることができるという効果が
ある。
【図面の簡単な説明】
第1図は本発明の一実施例による共通ブロック割り付け
方式の構成を示すブロック図、第2図は第1図中のソー
スプログラムの複数の共通ブロックを宣言する複数のプ
ログラム単位の一例を示す図、第3図は第2図に示した
ノースプログラムをコンパイラが共通ブロックを連続し
て割り付けなかった場合に出力される目的プログラムに
おける共通ブロックの配置を例示する図、第4図は共通
ブロックを連続して割り付けることによって生成される
目的プログラムにおける共通ブロックの配置を例示する
図、第5図は共通ブロック割り付け手段23および共通
ブロック要素ベースアドレス決定手段25によって出力
され、共通ブロック割シ付け情報保持手段24によって
保持される情報を例示する図である。 1・・・ソースプログラム、2・・・コンパ(う、21
・・・制御手段、22・・テキスト生成手段、23・・
・共通ブロック割り付け手段、24・・・共通ブロック
割り付け情報保持手段、25・・・共通ブロック要素ベ
ースアドレス決定手段、26・・・目的プログラム生成
手段、3・・・複数の目的プログラム、AI、A2゜A
3・・・ベースアドレス、B1.B2.B3・・・ベー
スレジスタ、Ul、U2.U3・・・名前付き共通ブロ
ック。 A、B、C,D、E、F、G、H・・・名前付き共通ブ
ロックに含まれる変数、 PRo、1 、 PRo、2
 、 PRO13・・・プログラム単位。 第1図 (I芙の目的プロクラム 箆2図 PRo、7          PRo、2     
     PRo、3鶴3図 第4区

Claims (1)

  1. 【特許請求の範囲】 1、記憶域のアドレスをその記憶域を参照するためのベ
    ースアドレスとベースアドレスからの変位との組合せに
    より表現し、前記ベースアドレスを複数のベースレジス
    タのうちの一つに予めロードして、該ベースレジスタの
    番号と前記ベースアドレスからの変位とを指定すること
    により、記憶域の参照を行う計算機システムにおける高
    級言語プログラムの翻訳を行うコンパイラにおいて、異
    なるプログラム単位から参照される複数の共通ブロック
    を一つの連続した領域に割り付ける共通ブロック割り付
    け手段と、 前記共通ブロック割り付け手段により割り付けられた共
    通ブロックの要素を参照するために必要な前記連続した
    領域のベースアドレスからの変位を計算する共通ブロッ
    ク要素ベースアドレス決定手段と、 を有することを特徴とする共通ブロック割り付け方式。
JP10990488A 1988-05-07 1988-05-07 共通ブロック割り付け方式 Pending JPH01280833A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10990488A JPH01280833A (ja) 1988-05-07 1988-05-07 共通ブロック割り付け方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10990488A JPH01280833A (ja) 1988-05-07 1988-05-07 共通ブロック割り付け方式

Publications (1)

Publication Number Publication Date
JPH01280833A true JPH01280833A (ja) 1989-11-13

Family

ID=14522104

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10990488A Pending JPH01280833A (ja) 1988-05-07 1988-05-07 共通ブロック割り付け方式

Country Status (1)

Country Link
JP (1) JPH01280833A (ja)

Similar Documents

Publication Publication Date Title
US5345588A (en) Thread private memory storage of multi-thread digital data processors using access descriptors for uniquely identifying copies of data created on an as-needed basis
KR100518584B1 (ko) 공유 라이브러리 시스템 및 상기 시스템 구축 방법
US7412710B2 (en) System, method, and medium for efficiently obtaining the addresses of thread-local variables
EP0267796A2 (en) Method for improved code generation in reduced instruction set computers
US20220237041A1 (en) Parallel processing system performing in-memory processing
EP0751459B1 (en) Object oriented coding compiler
US6175935B1 (en) Software debugging method and recording medium to which debugging program has been recorded
US6959430B2 (en) Specialized heaps for creation of objects in object-oriented environments
JPH01280833A (ja) 共通ブロック割り付け方式
JP2576659B2 (ja) タスク内共通領域の割当て方式
KR100884926B1 (ko) 가상 메모리가 없는 임베디드 시스템에서의 기존 공유라이브러리 사용방법
JPH02161531A (ja) 共通ブロック統合化方式
JPH02136929A (ja) オブジェクトプログラムの命令文削減方式
JPS63298530A (ja) 共通ブロック統合化方式
JPH0991151A (ja) コンパイル装置及びプロセッサ装置
JPH0390931A (ja) Rom化プログラムの生成方法
JPS60191347A (ja) メモリ管理方式
JPS62216042A (ja) デ−タ領域のメモリ割付方式
JPH0239242A (ja) 電子計算機システムの一時作業領域割付方式
JPH01120624A (ja) プログラムモジュールのアドレス割付け方式
JPH04178738A (ja) レジスタアロケーション方式
JPH04107638A (ja) リテラル定数割り付け方式
JPH09311791A (ja) 可変レジスタ規約コンパイル方法
JPH10289111A (ja) プログラム翻訳実行システム、プログラム翻訳実行方法およびプログラム翻訳実行用プログラムを記録した記録媒体
JPS61276029A (ja) スタツク制御方式