JPH04294427A - 引数受け渡し方式 - Google Patents

引数受け渡し方式

Info

Publication number
JPH04294427A
JPH04294427A JP3083273A JP8327391A JPH04294427A JP H04294427 A JPH04294427 A JP H04294427A JP 3083273 A JP3083273 A JP 3083273A JP 8327391 A JP8327391 A JP 8327391A JP H04294427 A JPH04294427 A JP H04294427A
Authority
JP
Japan
Prior art keywords
register
passing
argument
arguments
maximum number
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
JP3083273A
Other languages
English (en)
Inventor
Kuniko Yamamoto
山本 久仁子
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 JP3083273A priority Critical patent/JPH04294427A/ja
Publication of JPH04294427A publication Critical patent/JPH04294427A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は引数受け渡し方式に関し
、特にコンパイラにおける引数受け渡し方式に関する。
【0002】
【従来の技術】従来、コンパイラにおける引数の受け渡
し方法は、引数の個数に制限をつけて引数をレジスタに
格納する方法と、引数の個数に制限をつけずに引数をメ
モリに格納してその先頭アドレスをレジスタに格納する
方法とのいずれかであり、また引数の個数に応じて2種
類の方法のいずれかに切り分ける場合でも切り分けの境
界個数はコンパイラごとに固定であった。
【0003】通常のコンパイラにおいては、2種類の引
数の受け渡し方法では、前者の方法の方がオブジェクト
効率がよい。しかし、実現されているほとんどのコンパ
イラでは、後者の方法で引数を受け渡している。それは
、レジスタの個数が有限であるのに対して、引数の個数
を有限個に制限することがほとんど不可能であることに
起因している。
【0004】
【発明が解決しようとする課題】上述した従来の引数の
受け渡し方法をコンパイラによって1通りのみサポート
する方式では、引数の個数に制限をつけない場合、実際
に使用される引数の個数が少なくても、無条件にメモリ
を使用した引数の受け渡しが行われるので、オブジェク
ト効率が悪いという欠点がある。
【0005】また、従来の引数の個数に応じて引数の受
け渡し方法を切り分ける方式でも、切り分けの境界個数
は固定であったため、プログラムの傾向によって手続き
呼び出し以外のプログラムが比較的簡単で使用しないレ
ジスタがあっても、引数の個数が固定の境界個数を越え
ると、メモリを使用した引数の受け渡しが行われるので
、オブジェクト効率が悪くなるという欠点がある。
【0006】本発明の目的は、上述の点に鑑み、呼び出
し手続きごとにその引数の個数によって引数の受け渡し
方法を切り分けるとともに、コンパイル時に利用者が引
数受け渡し方法を切り分ける引数の境界個数を指定でき
るようにした引数受け渡し方式を提供することにある。
【0007】
【課題を解決するための手段】本発明の引数受け渡し方
式は、コンパイラにおいて、オプション解析時に、レジ
スタ渡し引数最大個数オプションを入力してレジスタ渡
し引数最大個数変数にレジスタ渡し引数最大個数を設定
するレジスタ渡し引数最大個数設定手段と、アーギュメ
ント渡しオブジェクト生成時に、アーギュメントの個数
とレジスタ渡し引数最大個数変数とに応じてアーギュメ
ントの渡し方法を切り分けるアーギュメント渡し方法切
り分け手段と、アーギュメントの個数がレジスタ渡し引
数最大個数変数以下のときにアーギュメントをレジスタ
で渡すオブジェクトを生成するアーギュメントレジスタ
渡しオブジェクト生成手段と、アーギュメントの個数が
レジスタ渡し引数最大個数変数より大きいときにアーギ
ュメントをアーギュメントリストで渡すオブジェクトを
生成するアーギュメントリスト渡しオブジェクト生成手
段と、パラメータ参照オブジェクト生成時に、パラメー
タの個数とレジスタ渡し引数最大個数変数とに応じてパ
ラメータの参照方法を切り分けるパラメータ参照方法切
り分け手段と、パラメータの個数がレジスタ渡し引数最
大個数変数以下のときにパラメータをレジスタで参照す
るオブジェクトを生成するパラメータレジスタ参照オブ
ジェクト生成手段と、パラメータの個数がレジスタ渡し
引数最大個数変数より大きいときにパラメータをパラメ
ータリストで参照するオブジェクトを生成するパラメー
タリスト参照オブジェクト生成手段とを有する。
【0008】
【作用】本発明の引数受け渡し方式では、オプション解
析時に、レジスタ渡し引数最大個数設定手段がレジスタ
渡し引数最大個数オプションを入力してレジスタ渡し引
数最大個数変数にレジスタ渡し引数最大個数を設定し、
アーギュメント渡しオブジェクト生成時に、アーギュメ
ント渡し方法切り分け手段がアーギュメントの個数とレ
ジスタ渡し引数最大個数変数とに応じてアーギュメント
の渡し方法を切り分け、アーギュメントレジスタ渡しオ
ブジェクト生成手段がアーギュメントの個数がレジスタ
渡し引数最大個数変数以下のときにアーギュメントをレ
ジスタで渡すオブジェクトを生成し、アーギュメントリ
スト渡しオブジェクト生成手段がアーギュメントの個数
がレジスタ渡し引数最大個数変数より大きいときにアー
ギュメントをアーギュメントリストで渡すオブジェクト
を生成し、パラメータ参照オブジェクト生成時に、パラ
メータ参照方法切り分け手段がパラメータの個数とレジ
スタ渡し引数最大個数変数とに応じてパラメータの参照
方法を切り分け、パラメータレジスタ参照オブジェクト
生成手段がパラメータの個数がレジスタ渡し引数最大個
数変数以下のときにパラメータをレジスタで参照するオ
ブジェクトを生成し、パラメータリスト参照オブジェク
ト生成手段がパラメータの個数がレジスタ渡し引数最大
個数変数より大きいときにパラメータをパラメータリス
トで参照するオブジェクトを生成する。
【0009】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
【0010】図1は、本発明の一実施例に係る引数受け
渡し方式の構成を示すブロック図である。本実施例の引
数受け渡し方式は、レジスタ渡し引数最大個数設定手段
1と、アーギュメント渡し方法切り分け手段2と、アー
ギュメントレジスタ渡しオブジェクト生成手段3と、ア
ーギュメントリスト渡しオブジェクト生成手段4と、パ
ラメータ参照方法切り分け手段5と、パラメータレジス
タ参照オブジェクト生成手段6と、パラメータリスト参
照オブジェクト生成手段7と、レジスタ渡し引数最大個
数オプション8と、レジスタ渡し引数最大個数変数9と
から構成されている。
【0011】次に、このように構成された本実施例の引
数受け渡し方式の動作について説明する。ただし、本実
施例の引数受け渡し方式は、従来のコンパイラの一部と
して実現されるが、コンパイラ全体の動作の説明は省略
する。
【0012】コンパイラのオプション解析部(図示せず
)において、レジスタ渡し引数最大個数オプション8の
入力時に、レジスタ渡し引数最大個数設定手段1は、レ
ジスタ渡し引数最大個数変数9に、レジスタ渡し引数最
大個数オプション8で指定されたレジスタ渡し引数最大
個数nを設定する。ただし、レジスタ渡し引数最大個数
オプション8が入力されない場合のために、レジスタ渡
し引数最大個数変数9は、標準規定値(実際にコンパイ
ラ処理系が使用できるレジスタの個数とオブジェクトの
生成方法とに応じて処理系ごとに決める)で初期設定し
ておく。また、レジスタ渡し引数最大個数オプション8
で指定されたレジスタ渡し引数最大個数nが通常のオブ
ジェクト生成に支障をきたすような大きな値の場合は、
レジスタ渡し引数最大個数設定手段1は、最大規定値(
標準既定値と同様に決める)をレジスタ渡し引数最大個
数変数9に設定する。
【0013】コンパイラのコード生成部(図示せず)に
おいては、アーギュメント渡しオブジェクト生成時と、
パラメータ参照オブジェクト生成時とに、オプション解
析部においてレジスタ渡し引数最大個数変数9に設定さ
れたレジスタ渡し引数最大個数nを参照して、各々のオ
ブジェクトを生成する。
【0014】まず、アーギュメント渡しオブジェクト生
成時に、アーギュメント渡し方法切り分け手段2は、ア
ーギュメント渡し方法を切り分ける。すなわち、アーギ
ュメント渡し方法切り分け手段2は、アーギュメントの
個数Aを調べ、A≦nのときにはアーギュメントレジス
タ渡しオブジェクト生成手段3を、A>nのときにはア
ーギュメントリスト渡しオブジェクト生成手段4をそれ
ぞれ呼び出す。
【0015】アーギュメントレジスタ渡しオブジェクト
生成手段3は、以下のようにオブジェクトを生成する。
【0016】■  値渡しのときは、アーギュメントの
値を、ある決められたレジスタRから連続するA個分の
レジスタにロードするオブジェクトを生成する。
【0017】■  参照渡しのときは、アーギュメント
のアドレスを、レジスタRから連続するA個分のレジス
タにロードするオブジェクトを生成する。
【0018】アーギュメントリスト渡しオブジェクト生
成手段4は、以下のようにオブジェクトを生成する。
【0019】■  値渡しのときは、アーギュメントの
値をA個分の連続したメモリ(=アーギュメントリスト
)にストアし、そのメモリの先頭アドレスを決められた
レジスタ(=アーギュメントリスト先頭レジスタALR
)にロードするオブジェクトを生成する。
【0020】■  参照渡しのときは、アーギュメント
のアドレスをアーギュメントリストにストアし、アーギ
ュメントリスト先頭アドレスをアーギュメントリスト先
頭レジスタALRにロードするオブジェクトを生成する
【0021】アーギュメント渡しオブジェクトの例を、
図2に示す。
【0022】また、パラメータ参照オブジェクト生成時
には、パラメータ参照方法切り分け手段5は、パラメー
タ参照の方法を切り分ける。すなわち、パラメータ参照
方法切り分け手段5は、パラメータの個数Pを調べ、P
≦nのときはパラメータレジスタ参照オブジェクト生成
手段6を、P>nのときはパラメータリスト参照オブジ
ェクト生成手段7をそれぞれ呼び出す。
【0023】パラメータレジスタ参照オブジェクト生成
手段6は、以下のようにオブジェクトを生成する。
【0024】■  値渡しのときは、(レジスタR+パ
ラメータ番号Pno(何番目のパラメータか)−1)で
決まるレジスタPRの内容を参照するオブジェクトを生
成する。
【0025】■  参照渡しのときは、レジスタPRの
内容で指されるメモリの内容を参照するオブジェクトを
生成する。
【0026】パラメータリスト参照オブジェクト生成手
段7は、以下のようにオブジェクトを生成する。
【0027】■  値渡しのときは、パラメータリスト
先頭レジスタPLR(=アーギュメントリスト先頭レジ
スタALR)をベースとして、パラメータ番号Pnoで
決まる値をディスプレイスメントとして決まるメモリ(
=パラメータリスト(=アーギュメントリスト))の内
容を参照するオブジェクトを生成する。
【0028】■  参照渡しのときは、パラメータリス
ト先頭レジスタPLRをベースとして、パラメータ番号
Pnoで決まる値をディスプレイスメントとして決まる
メモリ(=パラメータリスト)の内容で指されるメモリ
を参照するオブジェクトを生成する。
【0029】パラメータ参照オブジェクトの例を、図3
に示す。
【0030】
【発明の効果】以上説明したように本発明は、コンパイ
ラにおいて、呼び出し手続きごとにその引数の個数によ
って引数の受け渡し方法を切り分けることにより、使用
できるレジスタの個数が少なく無条件にレジスタを介す
る引数受け渡し方法が採用できないようなコンパイラに
おいても、引数の個数が少なければレジスタを介する引
数受け渡しが可能となり、オブジェクト効率がよくなる
という効果がある。
【0031】また、コンパイル時に利用者が引数受け渡
し方法を切り分ける引数の境界個数を指定できるように
することにより、プログラムの傾向によってさらに最適
な引数のレジスタ受け渡しが可能になり、オブジェクト
効率もさらによくなるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例に係る引数受け渡し方式の構
成を示すブロック図である。
【図2】アーギュメント渡しオブジェクトの例を示す図
である。
【図3】パラメータ参照オブジェクトの例を示す図であ
る。
【符号の説明】
1  レジスタ渡し引数最大個数設定手段2  アーギ
ュメント渡し方法切り分け手段3  アーギュメントレ
ジスタ渡しオブジェクト生成手段4  アーギュメント
リスト渡しオブジェクト生成手段5  パラメータ参照
方法切り分け手段6  パラメータレジスタ参照オブジ
ェクト生成手段7  パラメータリスト参照オブジェク
ト生成手段8  レジスタ渡し引数最大個数オプション
9  レジスタ渡し引数最大個数変数

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  コンパイラにおいて、オプション解析
    時に、レジスタ渡し引数最大個数オプションを入力して
    レジスタ渡し引数最大個数変数にレジスタ渡し引数最大
    個数を設定するレジスタ渡し引数最大個数設定手段と、
    アーギュメント渡しオブジェクト生成時に、アーギュメ
    ントの個数とレジスタ渡し引数最大個数変数とに応じて
    アーギュメントの渡し方法を切り分けるアーギュメント
    渡し方法切り分け手段と、アーギュメントの個数がレジ
    スタ渡し引数最大個数変数以下のときにアーギュメント
    をレジスタで渡すオブジェクトを生成するアーギュメン
    トレジスタ渡しオブジェクト生成手段と、アーギュメン
    トの個数がレジスタ渡し引数最大個数変数より大きいと
    きにアーギュメントをアーギュメントリストで渡すオブ
    ジェクトを生成するアーギュメントリスト渡しオブジェ
    クト生成手段と、パラメータ参照オブジェクト生成時に
    、パラメータの個数とレジスタ渡し引数最大個数変数と
    に応じてパラメータの参照方法を切り分けるパラメータ
    参照方法切り分け手段と、パラメータの個数がレジスタ
    渡し引数最大個数変数以下のときにパラメータをレジス
    タで参照するオブジェクトを生成するパラメータレジス
    タ参照オブジェクト生成手段と、パラメータの個数がレ
    ジスタ渡し引数最大個数変数より大きいときにパラメー
    タをパラメータリストで参照するオブジェクトを生成す
    るパラメータリスト参照オブジェクト生成手段とを有す
    ることを特徴とする引数受け渡し方式。
JP3083273A 1991-03-22 1991-03-22 引数受け渡し方式 Pending JPH04294427A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3083273A JPH04294427A (ja) 1991-03-22 1991-03-22 引数受け渡し方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3083273A JPH04294427A (ja) 1991-03-22 1991-03-22 引数受け渡し方式

Publications (1)

Publication Number Publication Date
JPH04294427A true JPH04294427A (ja) 1992-10-19

Family

ID=13797749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3083273A Pending JPH04294427A (ja) 1991-03-22 1991-03-22 引数受け渡し方式

Country Status (1)

Country Link
JP (1) JPH04294427A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019003437A (ja) * 2017-06-15 2019-01-10 富士通株式会社 情報処理装置、コンパイラ方法、およびコンパイラプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019003437A (ja) * 2017-06-15 2019-01-10 富士通株式会社 情報処理装置、コンパイラ方法、およびコンパイラプログラム

Similar Documents

Publication Publication Date Title
US20010047511A1 (en) Method of reducing unnecessary barrier instructions
JP2001147819A (ja) 最適化装置および記録媒体
JP4118456B2 (ja) プログラム言語処理システム、コード最適化方法、及び機械読み出し可能な記憶媒体
JP2004280801A (ja) プロセッサおよびこのプロセッサ用のプログラムを生成するコンパイラ装置
JPH04294427A (ja) 引数受け渡し方式
JPH0418635A (ja) ディジタル信号プロセッサ
JPS6378231A (ja) 部分的プログラム結合方式
JP2000339172A (ja) メモリ効率化方法
JPH0683597A (ja) オブジェクト指向プログラム開発装置およびオブジェクト指向プログラム開発方法
EP0633525A2 (en) Language processing method
JPH086797A (ja) 定数参照最適化処理装置
JP2655608B2 (ja) プログラムソース複写処理方式
JP2002041310A (ja) クラス動的バインドシステムおよび方法
JP3305767B2 (ja) ソート処理方法及びコンパイル方法
JP3625878B2 (ja) コンパイラによるスタック領域割り付け方法
JPH0588909A (ja) 内部手続き呼び出しの引数をレジスタに割り付けることによる最適化方式
JPH0447337B2 (ja)
JPH036624A (ja) 複数コード系に対応する翻訳リスト出力処理方式
JP2845780B2 (ja) データ転送制御回路
JPH07129408A (ja) 言語処理プログラムの実行方式
JPH10293691A (ja) レジスタ割り付け方法
JPH04320535A (ja) プログラム生成装置
JPH0675757A (ja) 仮想空間常駐プログラムのリンク方式
JPH06119263A (ja) 処理関数呼出方式
JPH06301549A (ja) プログラム翻訳装置