JPH083792B2 - 関数呼び出し処理方法 - Google Patents

関数呼び出し処理方法

Info

Publication number
JPH083792B2
JPH083792B2 JP2787888A JP2787888A JPH083792B2 JP H083792 B2 JPH083792 B2 JP H083792B2 JP 2787888 A JP2787888 A JP 2787888A JP 2787888 A JP2787888 A JP 2787888A JP H083792 B2 JPH083792 B2 JP H083792B2
Authority
JP
Japan
Prior art keywords
function
stack
processing
instruction
processing method
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 - Fee Related
Application number
JP2787888A
Other languages
English (en)
Other versions
JPH01309133A (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.)
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 JP2787888A priority Critical patent/JPH083792B2/ja
Publication of JPH01309133A publication Critical patent/JPH01309133A/ja
Publication of JPH083792B2 publication Critical patent/JPH083792B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔概要〕 LISP等の計算機プログラムにおいて、ある関数が他の
関数を呼び出すための処理に関し、 スタックを介して情報を授受する関数間の呼び出し処
理の、処理効率を改善できる関数呼び出し処理方法を目
的とし、 計算機の記憶領域にロードされ、実行される呼び出し
元関数から呼び出し先関数を呼び出す場合に、スタック
に所要の情報をスタックして該呼び出し先関数に渡すよ
うにした計算機において、該呼び出し元関数は該スタッ
クに、該呼び出し元関数の記憶領域の先頭アドレスと、
復帰先命令の該先頭アドレスからのオフセットと、所要
の実引数とを該順序にスタックした後、該呼び出し先関
数の所定命令へのブランチ命令を実行するように構成す
る。
〔産業上の利用分野〕
本発明は、LISP等の計算機プログラムにおける、ある
関数が他の関数を呼び出すための処理方法、特にスタッ
クを介して情報を授受する関数呼び出し処理方法に関す
る。
〔従来の技術〕
よく知られているように、LISPプログラミング言語等
におけるプログラムは関数によって構成され、実行にお
いてある関数から他の関数を呼び出す操作が頻繁に行わ
れ、このような関数呼び出しを効率よく実行するため
に、関数間の情報授受の公知のスタック機構が使用され
る。
即ち、代表的なシステムのLISPコンパイラで生成され
る、関数のオブジェクトプログラムにおける関数呼び出
し手続きでは、復帰先命令アドレス(以下においてPCと
表す)と一般に可変個数の実引数とをスタックを介して
授受するために、PC、実引数の順にスタックされている
必要があるので、第3図に処理の流れを示すように、先
ず処理ステップ1において、PCを格納する領域をスタッ
クに確保するために仮の特定値をスタックする。
次に処理ステップ2で呼び出し先に渡す情報のスタッ
ク開始位置を示すフレームポインタ(以下においてFPと
表す)をPC格納領域を指すように設定すると共に、旧FP
値を保存するためにスタックし、処理ステップ3で1個
以上の所要の実引数をスタックしてスタック処理を終わ
り、スタックを第4図に例示するように構成する。
その後処理ステップ4で呼び出し先関数へ分岐するブ
ランチ命令を実行する。
このブランチ命令には、例えばブランチ・アンド・リ
ンク命令等として知られるような、分岐と共に該ブラン
チ命令の次に位置する命令のアドレスを復帰先命令アド
レスとして所定のレジスタに格納する機能を有する命令
を使用する。
そこで呼び出し先では、処理ステップ5で復帰先命令
アドレスを、上記レジスタからスタック上のPC格納領域
に格納した後、処理ステップ6以降で、スタックで渡さ
れた実引数を使用する関数処理を開始する。
〔発明が解決しようとする課題〕
前記の関数呼び出し処理方法によれば、PC格納領域に
ついて、呼び出し側において仮の値をスタックし、呼び
出し先でレジスタから実のPC値を格納するという2度の
処理が必要となる。
本発明は、スタックを介して情報を授受する関数間の
呼び出しの、PC格納領域の処理を改善して処理効率を向
上できる関数呼び出し処理方法を目的とする。
〔課題を解決するための手段〕
第1図は、本発明の構成を示す処理の流れ図である。
図は関数呼び出し処理の流れを示し、11〜16は処理ス
テップである。
〔作用〕
呼び出し元関数は関数呼び出しにおいて、処理ステッ
プ11〜15により、その記憶領域の先頭アドレス、復帰先
命令の先頭アドレスからのオフセット、所要の実引数を
この順にスタックした後、呼び出し先関数へブランチす
る。呼び出し先関数では、処理ステップ16以降で直ちに
関数の処理を実行する。
以上の処理方法により、仮のPCスタックが不要にな
る。
〔実施例〕
各関数は計算機の記憶領域にロードされたとき、以降
の実行命令のベースアドレスとして、ロードされた領域
の先頭アドレスを受け取って、適当なレジスタに保持し
ている。
又、その領域内の所要の命令の上記ベースからのオフ
セットは、コンパイラがその関数のオブジェクトを生成
するとき決定することができるので、これを定数として
保持するようにする。
従って、関数呼び出しにおいて、第1図の処理ステッ
プ11で、先頭アドレスをスタックし、処理ステップ12で
上記オフセット値をスタックするようオブジェクトを生
成することが可能であり、この2項のアドレス値によっ
て、PCの内容は決定する。
呼び出し元関数は、処理ステップ11、12で復帰先PCの
ための先頭アドレスとオフセットをスタックしたのち、
処理ステップ13で従来と同様に、呼び出し先に渡す情報
のスタック開始位置を示すFPを先頭アドレスの格納領域
を指すように設定すると共に旧例FP値をスタックする。
処理ステップ14で1個以上の所要の実引数をスタック
してスタック処理を終わり、呼び出し先関数に渡すスタ
ックを例えは第2図のような構成のスタックにする。
その後処理ステップ15で呼び出し先関数へ分岐するブ
ランチ命令を実行する。このブランチ命令は、従来と異
なり単純なジャンプを実行する命令でよい。
そこでジャンプ先の呼び出し先関数では、処理ステッ
プ16以降で、直ちに関数本来の処理に入ることができ
る。
〔発明の効果〕
以上の説明から明らかなように本発明によれば、LISP
等の計算機プログラムの、ある関数が他の関数を呼び出
すための関数呼び出し処理において、スタックを介して
情報を授受する関数間の呼び出しの処理効率が改善され
るという著しい工業的効果がある。
【図面の簡単な説明】
第1図は本発明の構成を示す処理の流れ図、 第2図は本発明のスタックを説明する図、 第3図は従来の処理の流れ図、 第4図は従来のスタックを説明する図 である。 図において、 1〜6、11〜16は処理ステップ を示す。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】計算機の記憶領域にロードされ、実行され
    る呼び出し元関数から呼び出し先関数を呼び出す場合
    に、スタックに所要の情報をスタックして該呼び出し先
    関数に渡すようにした計算機において、 該呼び出し元関数は該スタックに、該呼び出し元関数の
    記憶領域の先頭アドレスと、復帰先命令の該先頭アドレ
    スからのオフセットと、所要の実引数とを該順序にスタ
    ックした(11〜14)後、 該呼び出し先関数の所定命令へのブランチ命令を実行す
    る(15)ことを特徴とする関数呼び出し処理方法。
JP2787888A 1988-02-09 1988-02-09 関数呼び出し処理方法 Expired - Fee Related JPH083792B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2787888A JPH083792B2 (ja) 1988-02-09 1988-02-09 関数呼び出し処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2787888A JPH083792B2 (ja) 1988-02-09 1988-02-09 関数呼び出し処理方法

Publications (2)

Publication Number Publication Date
JPH01309133A JPH01309133A (ja) 1989-12-13
JPH083792B2 true JPH083792B2 (ja) 1996-01-17

Family

ID=12233151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2787888A Expired - Fee Related JPH083792B2 (ja) 1988-02-09 1988-02-09 関数呼び出し処理方法

Country Status (1)

Country Link
JP (1) JPH083792B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4764406B2 (ja) * 2007-11-15 2011-09-07 株式会社藤商事 遊技機

Also Published As

Publication number Publication date
JPH01309133A (ja) 1989-12-13

Similar Documents

Publication Publication Date Title
JP2752094B2 (ja) 論理型言語におけるバックトラック処理方式
JPH083792B2 (ja) 関数呼び出し処理方法
EP0417916A2 (en) Procedure state descriptor system for digital data processors
JPS6378231A (ja) 部分的プログラム結合方式
US5765148A (en) Database processing apparatus and database processing method for variable length objects, and computer-readable memory medium for storing database processing program
JPH064319A (ja) オペレーティング・システムにおける共有ルーチン管理方式
JPS63156255A (ja) インタプリタにおけるオ−バレイ方法
JPH0527975A (ja) マイクロコンピユータ
JPS6337439B2 (ja)
JPS63163636A (ja) 並列処理実行方式
JP3039450B2 (ja) スタック領域の切替方法、方式およびスタック領域切替プログラムを記録した記憶媒体
JP2745519B2 (ja) データ駆動型制御方法
JPH01128135A (ja) スタック制御方式
JPS6020275A (ja) マルチプロセサの簡易プログラミングシステム
JPH0350296B2 (ja)
JPH0675757A (ja) 仮想空間常駐プログラムのリンク方式
JPH05173788A (ja) 計算機装置
JPH02249042A (ja) 構造化プログラミングモジュールの実行時特性計測装置
JPH01185729A (ja) オーバレイ構造プログラム実行方式
JPH07134656A (ja) 割り込み制御方法及びそれを実現するマルチタスクシステム
JPH01231137A (ja) トレース情報出力方式
JPH0477840A (ja) 障害解析情報収集方式
JPH0683635A (ja) コンパイル・リンク方式
JPH0421028A (ja) レジスタ管理方法
JPH0635713A (ja) 論理型言語と他言語の相互呼び出し方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees