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

関数呼び出し処理方法

Info

Publication number
JPH01309133A
JPH01309133A JP2787888A JP2787888A JPH01309133A JP H01309133 A JPH01309133 A JP H01309133A JP 2787888 A JP2787888 A JP 2787888A JP 2787888 A JP2787888 A JP 2787888A JP H01309133 A JPH01309133 A JP H01309133A
Authority
JP
Japan
Prior art keywords
function
stack
called
instruction
processing
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.)
Granted
Application number
JP2787888A
Other languages
English (en)
Other versions
JPH083792B2 (ja
Inventor
Yoshio Takahashi
義雄 高橋
Hideki Kato
英樹 加藤
Akira Yasusato
安里 彰
Shuichi Nakamura
修一 中村
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)

Abstract

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

Description

【発明の詳細な説明】 〔概 要〕 LISP等の計算機プログラムにおいて、ある関数が他
の関数を呼び出すための処理に関し、スタック゛を介し
て情報を授受する関数間の呼び出し処理の、処理効率を
改善できる関数呼び出し処理方法を目的とし、 計算機の記憶領域にロードされ、実行される呼び出し元
関数から呼び出し先関数を呼び出す場合に、スタックに
所要の情報をスタックして該呼び出し先関数に渡すよう
にした計算機において、該呼び出し元関数は該スタック
に、該呼び出し元関数の記憶領域の先頭アドレスと、復
帰先命令の該先頭アドレスからのオフセントと、所要の
実引数とを該順序にスタックした後、該呼び出し先関数
の所定命令へのブランチ命令を実行するように構成する
〔産業上の利用分野〕
本−発明は、LISP等の計算機プログラムにおける、
ある関数が他の関数を呼び出すための処理方法、特にス
タックを介して情報を授受する関数呼び出し処理方法に
関する。
〔従来の技術〕
よく知られているように、LISPプログラミング言語
等におけるプログラムは関数によって構成され、実行に
おいである関数から他の関数を呼び出す操作が頻繁に行
われ、このような関数呼び出しを効率よく実行するため
に、関数間の情報授受に公知のスタック機構が使用され
る。
即ち、代表的なシステムのLISPコンパイラで生成さ
れる、関数のオブジェクトプログラムにおける関数呼び
出し手続きでは、復帰先命令アドレス(以下においてP
Cと表す)と一般に可変個数の実引数とをツク・ツクを
介して授受するために、PC1実引数の順にスタックさ
れている必要があるので、第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で復帰先P
Cのための先頭アドレスとオフセットをスタックしたの
ち、処理ステップ13で従来と同様に、呼び出し先に渡
す情報のスタック開始位置を示すFPを先頭アドレスの
格納領域を指すように設定すると共に旧FP値をスタッ
クする。
処理ステップ14で1個以上の所要の実引数をスタック
してスタック処理を終わり、呼び出し先関数に渡すスタ
ックを例えは第2図のような構成のスタックにする。
その後処理ステップ15で呼び出し先関数へ分岐するブ
ランチ命令を実行する。このブランチ命令は、従来と異
なり単純なジャンプを実行する命令でよい。
そこでジャンプ先の呼び出し先関数では、処理ステップ
16以降で、直ちに関数本来の処理に入ることができる
〔発明の効果〕
以上の説明から明らかなように本発明によれば、LIS
P等の計算機プログラムの、ある関数が他の関数を呼び
出すための関数呼び出し処理において、スタックを介し
て情報を授受する関数間の呼び出しの処理効率が改善さ
れるという著しい工業的効果がある。
【図面の簡単な説明】
第1図は本発明の構成を示す処理の流れ図、第2図は本
発明のスタックを説明する図、第3図は従来の処理の流
れ図、 第4図は従来のスタックを説明する図 である。 図において、 1〜6.11〜16は処理ステップ ・j・ 本発明の構成を示す処理の流れ図 第1図 本発明のスタックを説明する図 第2図 従来の処理の流れ図 第3図 従来のスタックを説明する図 第4図

Claims (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 true JPH01309133A (ja) 1989-12-13
JPH083792B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008055222A (ja) * 2007-11-15 2008-03-13 Fujishoji Co Ltd 遊技機

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008055222A (ja) * 2007-11-15 2008-03-13 Fujishoji Co Ltd 遊技機

Also Published As

Publication number Publication date
JPH083792B2 (ja) 1996-01-17

Similar Documents

Publication Publication Date Title
JPH04245543A (ja) サブプログラム呼び出しを実行する方法および装置と            コンパイラ装置
JPH04184630A (ja) ループ制御のネスティング管理機構
US5724585A (en) Method for processing an application termination initiated from a pre-initialized computer language execution environment
JPH01309133A (ja) 関数呼び出し処理方法
US5388263A (en) Procedure state descriptor system for digital data processors
JPS6378231A (ja) 部分的プログラム結合方式
JPH064319A (ja) オペレーティング・システムにおける共有ルーチン管理方式
JPS6337439B2 (ja)
JPH04153741A (ja) 被デバッグプログラムのデバッグにおける逆方向実行方式
JPH02206838A (ja) 共通サブル―チンリンク方法
JPS5856153A (ja) サブル−チンリタ−ン方式
JPS62166444A (ja) プログラムデバツグ装置
JPS63106047A (ja) 動的サブル−チン呼び出し方式
JPH0350296B2 (ja)
JPH07134656A (ja) 割り込み制御方法及びそれを実現するマルチタスクシステム
JPS6353650A (ja) 計算機
JPH036734A (ja) 命令フェッチ方式
JPH02153429A (ja) 情報処理装置
JPH04101237A (ja) デバッグ処理方式
JPH0667942A (ja) ログ採取方式
JPH02113363A (ja) マルチプロセッサシステムにおけるタイムスライス制御方式
JPH01113842A (ja) 情報処理装置トラップ方式
JPH0477840A (ja) 障害解析情報収集方式
JPH0421028A (ja) レジスタ管理方法
JPS62290945A (ja) ソフトウエアデバツグ方式

Legal Events

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