JPH0619710A - 他翻訳単位内ルーチンの呼び出し処理方法 - Google Patents

他翻訳単位内ルーチンの呼び出し処理方法

Info

Publication number
JPH0619710A
JPH0619710A JP4176719A JP17671992A JPH0619710A JP H0619710 A JPH0619710 A JP H0619710A JP 4176719 A JP4176719 A JP 4176719A JP 17671992 A JP17671992 A JP 17671992A JP H0619710 A JPH0619710 A JP H0619710A
Authority
JP
Japan
Prior art keywords
address
routine
translation unit
callee
called
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.)
Withdrawn
Application number
JP4176719A
Other languages
English (en)
Inventor
Hiroko Matsui
弘子 松井
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP4176719A priority Critical patent/JPH0619710A/ja
Publication of JPH0619710A publication Critical patent/JPH0619710A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】コンパイラ12が出力するオブジェクトにおける
他翻訳単位内ルーチンの呼び出し処理方法に関し,結合
編集時の処理時間を短縮するとともに,他翻訳単位内ル
ーチンの名前に対する制約を解消することを目的とす
る。 【構成】呼び出し先オブジェクト14に関する翻訳時に,
その翻訳単位内で他から呼び出されるルーチンのアドレ
スを格納するアドレスリスト15を,その翻訳単位内の領
域に作成する。呼び出し元オブジェクト13では,呼び出
し先オブジェクト14のルーチンを呼び出すときに,その
ルーチンのアドレスがアドレスリスト15中のどの位置に
あるかを分岐先指示領域16に設定した後,呼び出し先オ
ブジェクト14の先頭に分岐し,呼び出し先オブジェクト
14では,分岐先指示領域16から呼び出すルーチンのアド
レスが格納されているアドレスリスト15中の位置を得
て,そこから取り出したアドレスに分岐する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は,コンパイラが出力する
オブジェクトにおける他翻訳単位内ルーチンの呼び出し
処理方法に関する。
【0002】翻訳単位が異なるプログラム中のルーチン
を外部名参照により呼び出す場合,翻訳単位の結合編集
に処理時間がかかる。このような処理時間を短縮する技
術が必要とされる。
【0003】
【従来の技術】図6は,従来技術の説明図である。例え
ば,図6の(イ)に示すように,呼び出し元ソースプロ
グラム10から,翻訳単位が異なる呼び出し先ソースプ
ログラム11内のルーチンを呼び出す場合,従来,図6
の(ロ)に示すような処理により,他翻訳単位内ルーチ
ンの呼び出しを可能としていた。
【0004】呼び出し元ソースプログラム10に呼び出
し先ソースプログラム11のルーチンRの呼び出し文が
あると(図示(a) ),コンパイラの翻訳時に,「Rの呼
び出し文」を,「Rのアドレスへの分岐命令」に変換す
る。すなわち,オブジェクト中に,「Rのアドレスへの
分岐命令」を出力する(図示(b),(c) )。ここで,Rの
アドレスは,いわゆるV型アドレス定数で表現する。
【0005】これらの翻訳結果について結合編集すると
きには,(d) に示すように,(c) に示すオブジェクトの
Rのアドレスが未確定であることから,「R」のアドレ
スを他の翻訳単位(呼び出し先ソースプログラム11の
翻訳結果)から検索し,確定した時点でRのアドレスを
(c) に示すオブジェクトのV型アドレス定数領域に設定
する。これにより,(e) に示すロードモジュール中のR
のアドレスへの分岐命令における実際の分岐先アドレス
が確定する。
【0006】
【発明が解決しようとする課題】以上のように,自翻訳
単位から他翻訳単位内ルーチンを呼び出す場合,従来,
他翻訳単位内ルーチンの先頭アドレスをV型アドレス定
数を使用して表し,そのアドレスに分岐するような命令
にオブジェクト展開していた。
【0007】この方法によると,他翻訳単位内ルーチン
のアドレスは,自翻訳単位でなく,他の翻訳単位を検索
しないと確定しないため,結合編集時にアドレスを確定
するための処理時間が長くかかるという問題があった。
また,他翻訳単位内ルーチンの名前を外部名として扱う
必要があるため,他翻訳単位内ルーチンの名前が他と重
複しないようにしなければならず,名前の付け方に制約
が生じるという問題があった。
【0008】本発明は上記問題点の解決を図り,結合編
集時における処理を高速化し,かつ他翻訳単位内ルーチ
ンの名前の付け方の制約を解消することを目的としてい
る。
【0009】
【課題を解決するための手段】図1は本発明の原理説明
図である。図中,10は呼び出し元ソースプログラムで
あって,呼び出し元のルーチンが存在する翻訳単位,1
1は呼び出し先ソースプログラムであって,呼び出し先
のルーチンが存在する翻訳単位,12はソースプログラ
ムをオブジェクトプログラムに翻訳するコンパイラ,1
3は呼び出し元ソースプログラム10を翻訳した呼び出
し元オブジェクト,14は呼び出し先ソースプログラム
11を翻訳した呼び出し先オブジェクト,15は呼び出
し先ルーチンのアドレスが格納されたアドレスリスト,
16は分岐先指示領域を表す。
【0010】本発明では,結合編集時において,呼び出
し先である他翻訳単位内ルーチンの名前を検索してアド
レスを確定する処理時間を短縮するため,呼び出し元ソ
ースプログラム10,呼び出し先ソースプログラム11
を次のように翻訳する。
【0011】呼び出し先ソースプログラム11の翻訳時
に,その翻訳単位内で他から呼び出されるルーチンR
1,R2,…のアドレスを格納するアドレスリスト15
を,その翻訳単位内の領域に作成する。
【0012】そして,呼び出し元ソースプログラム10
を翻訳した呼び出し元オブジェクト13には,呼び出し
先オブジェクト14のルーチンを呼び出すときに,その
ルーチンのアドレスがアドレスリスト15中のどの位置
にあるかを,所定の分岐先指示領域16に設定する命令
と,呼び出し先オブジェクト14の先頭番地または先頭
からの所定番地に分岐する命令を組み込む。
【0013】呼び出し先オブジェクト14には,先頭番
地または先頭からの所定番地に,分岐先指示領域16か
らアドレスリスト15中の位置を取り出す命令と,その
アドレスリスト15中の位置から分岐先アドレスを取り
出して,呼び出し先ルーチンへ分岐する命令を組み込
む。
【0014】呼び出し時の処理は,例えば次のようにな
る。 呼び出し元オブジェクト13では,呼び出し先ルー
チンのアドレスが,アドレスリスト15中のどこにある
かを,分岐先指示領域16に設定する。なお,複数の呼
び出し先ルーチンのアドレスをアドレスリスト15内に
どのような順序で配置するかは,あらかじめ設計時に決
めておく。分岐先指示領域16として,所定のレジスタ
やスタック領域等を用いることができる。
【0015】 次に,呼び出し先オブジェクト14の
先頭(または先頭からの所定番地)に分岐する。すなわ
ち,ルーチンR1を呼び出す場合でも,ルーチンR2を
呼び出す場合でも,共通に呼び出し先オブジェクト14
の先頭に分岐する。
【0016】 呼び出し先オブジェクト14の先頭で
は,分岐先指示領域16を参照して,呼び出し先ルーチ
ンのアドレスが格納されているアドレスリスト15中の
位置を得る。
【0017】 処理で得た情報をもとに,呼び出し
先ルーチンのアドレスを,アドレスリスト15から取り
出す。 処理で取り出したアドレスに分岐する。
【0018】
【作用】以上のような呼び出し処理方法を用いることに
より,他翻訳単位内(呼び出し先オブジェクト14内)
のルーチンを呼び出す場合,V型アドレス定数を使って
分岐する必要がなくなる。この結果,アドレスを解決す
るために他の翻訳単位を検索する必要がなくなり,ま
た,各ルーチンの名前を外部名として扱う必要もなくな
る。
【0019】
【実施例】図2は本発明の実施例を説明するためのソー
スプログラムの例,図3は呼び出し先オブジェクトの構
造の例,図4は本発明の実施例による呼び出し処理説明
図,図5は本発明の実施例の動作説明図を示す。
【0020】図2の(イ)に示す翻訳単位UNIT1
は,(a) の呼び出し元プログラムと,(b) の他翻訳単位
(UNIT2)の情報からなる。図2の(ロ)に示す翻
訳単位UNIT2は,呼び出し先ソースプログラム11
であって,呼び出される各ルーチンR1,R2,…の集
まりである。
【0021】翻訳単位UNIT2中にR1,R2,R3
の三つのルーチンがあるとすると,それを翻訳した結果
は,図3に示すような構造になる。呼び出し先オブジェ
クト14の先頭部分に,実際に呼び出すルーチンへの分
岐命令等が用意される。また,各ルーチンR1,R2,
R3のアドレスが格納されたアドレスリスト15が設け
られる。
【0022】翻訳単位UNIT1から,他の翻訳単位U
NIT2中にあるルーチンR2を呼び出す場合を例にと
って説明する。翻訳単位UNIT1および翻訳単位UN
IT2における処理および動作は,図4および図5に示
す〜のようになる。
【0023】 ルーチンR2のアドレスが格納されて
いるアドレスリスト15の先頭からの変位「4」を,分
岐先指示領域16(以下,領域Xという)に設定する。
領域Xは,UNIT1からもUNIT2からも参照でき
る領域である。
【0024】 UNIT2の先頭へ分岐する。 UNIT2の先頭部分で,まず領域Xを参照して,
ルーチンR2のアドレスが格納してあるアドレスリスト
15内変位「4」を得る。そして,アドレスリスト15
の(先頭+4バイト)目に格納されている値「R2のア
ドレス」を取り出す。
【0025】 処理で取り出したR2のアドレスへ
分岐する。同様に,上記処理で領域Xに設定する値が
「0」であれば,ルーチンR1が呼び出され,「8」で
あれば,ルーチンR3が呼び出されることになる。
【0026】
【発明の効果】以上説明したように,本発明によれば,
結合編集時に他の翻訳単位を検索してアドレス解決をす
る必要がなくなるため,処理時間が短縮され,かつ外部
から呼び出されるルーチンの名前に対する制約もなくな
る。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】本発明の実施例を説明するためのソースプログ
ラムの例を示す図である。
【図3】本発明の実施例に係る呼び出し先オブジェクト
の構造の例を示す図である。
【図4】本発明の実施例による呼び出し処理説明図であ
る。
【図5】本発明の実施例の動作説明図である。
【図6】従来技術の説明図である。
【符号の説明】
10 呼び出し元ソースプログラム 11 呼び出し先ソースプログラム 12 コンパイラ 13 呼び出し元オブジェクト 14 呼び出し先オブジェクト 15 アドレスリスト 16 分岐先指示領域

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 コンパイラ(12)が出力するオブジェクト
    における他翻訳単位内ルーチンの呼び出し処理方法にお
    いて,呼び出し先翻訳単位(14)の翻訳時に,その翻訳単
    位内で他から呼び出されるルーチンのアドレスを格納す
    るアドレスリスト(15)を,その翻訳単位内の領域に作成
    し,呼び出し元翻訳単位(13)では,呼び出し先翻訳単位
    (14)のルーチンを呼び出すときに,そのルーチンのアド
    レスが前記アドレスリスト(15)中のどの位置にあるかを
    所定の領域(16)に設定した後,呼び出し先翻訳単位(14)
    の先頭番地または先頭からの所定番地に分岐し,呼び出
    し先翻訳単位(14)では,前記所定の領域(16)から呼び出
    すルーチンのアドレスが格納されているアドレスリスト
    (15)中の位置を得て,そこから取り出したアドレスに分
    岐することを特徴とする他翻訳単位内ルーチンの呼び出
    し処理方法。
JP4176719A 1992-07-03 1992-07-03 他翻訳単位内ルーチンの呼び出し処理方法 Withdrawn JPH0619710A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4176719A JPH0619710A (ja) 1992-07-03 1992-07-03 他翻訳単位内ルーチンの呼び出し処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4176719A JPH0619710A (ja) 1992-07-03 1992-07-03 他翻訳単位内ルーチンの呼び出し処理方法

Publications (1)

Publication Number Publication Date
JPH0619710A true JPH0619710A (ja) 1994-01-28

Family

ID=16018581

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4176719A Withdrawn JPH0619710A (ja) 1992-07-03 1992-07-03 他翻訳単位内ルーチンの呼び出し処理方法

Country Status (1)

Country Link
JP (1) JPH0619710A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6177100B1 (en) 1988-12-02 2001-01-23 L'oreal Cosmetic or pharmaceutical composition for the treatment of the hair and scalp

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6177100B1 (en) 1988-12-02 2001-01-23 L'oreal Cosmetic or pharmaceutical composition for the treatment of the hair and scalp

Similar Documents

Publication Publication Date Title
US5721924A (en) Method and device for obtaining a value of a referred to variable defined in a source program having a specific variable name
JPH0619710A (ja) 他翻訳単位内ルーチンの呼び出し処理方法
JPH086797A (ja) 定数参照最適化処理装置
JPH11327887A (ja) 自動部品化機能付コンパイラシステムおよび記録媒体
JP2670276B2 (ja) 文字読取装置
JP2577626B2 (ja) プログラム変換装置
JP2692141B2 (ja) シーケンス制御装置
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
JPH08329095A (ja) リレーショナルデータベースにおけるデータ検索方式
JPS60178539A (ja) 情報処理装置におけるバイパス制御方式
JPH0589103A (ja) 文書編集処理装置
JPH01231137A (ja) トレース情報出力方式
JPH01258029A (ja) データ処理装置
JPH04116756A (ja) アプリケーション内のユーザ定義コマンドのダイナミックリンクシステム
JPH05324715A (ja) 機械翻訳処理装置
JPH1124939A (ja) プログラム変換方法
JPH01231136A (ja) トレース情報出力方式
JPH01166134A (ja) クロスリファレンスリスト出力方式
JPH0359726A (ja) プログラム単位一括翻訳方式
JPS62196706A (ja) 高速シ−ケンスナンバサ−チ方法
JPH08234995A (ja) プログラム変換装置
JPH06332683A (ja) テーブルリンク装置
JPS63280328A (ja) 複数の名称を持つデ−タの制御方式
JPH01293438A (ja) オーバレイセグメント情報出力方式
JPH05313967A (ja) レコード編集方式

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19991005