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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 9
- 230000006870 function Effects 0.000 claims abstract description 59
- 238000000034 method Methods 0.000 abstract description 9
- 238000004590 computer program Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔概 要〕
LISP等の計算機プログラムにおいて、ある関数が他
の関数を呼び出すための処理に関し、スタック゛を介し
て情報を授受する関数間の呼び出し処理の、処理効率を
改善できる関数呼び出し処理方法を目的とし、 計算機の記憶領域にロードされ、実行される呼び出し元
関数から呼び出し先関数を呼び出す場合に、スタックに
所要の情報をスタックして該呼び出し先関数に渡すよう
にした計算機において、該呼び出し元関数は該スタック
に、該呼び出し元関数の記憶領域の先頭アドレスと、復
帰先命令の該先頭アドレスからのオフセントと、所要の
実引数とを該順序にスタックした後、該呼び出し先関数
の所定命令へのブランチ命令を実行するように構成する
。
の関数を呼び出すための処理に関し、スタック゛を介し
て情報を授受する関数間の呼び出し処理の、処理効率を
改善できる関数呼び出し処理方法を目的とし、 計算機の記憶領域にロードされ、実行される呼び出し元
関数から呼び出し先関数を呼び出す場合に、スタックに
所要の情報をスタックして該呼び出し先関数に渡すよう
にした計算機において、該呼び出し元関数は該スタック
に、該呼び出し元関数の記憶領域の先頭アドレスと、復
帰先命令の該先頭アドレスからのオフセントと、所要の
実引数とを該順序にスタックした後、該呼び出し先関数
の所定命令へのブランチ命令を実行するように構成する
。
本−発明は、LISP等の計算機プログラムにおける、
ある関数が他の関数を呼び出すための処理方法、特にス
タックを介して情報を授受する関数呼び出し処理方法に
関する。
ある関数が他の関数を呼び出すための処理方法、特にス
タックを介して情報を授受する関数呼び出し処理方法に
関する。
よく知られているように、LISPプログラミング言語
等におけるプログラムは関数によって構成され、実行に
おいである関数から他の関数を呼び出す操作が頻繁に行
われ、このような関数呼び出しを効率よく実行するため
に、関数間の情報授受に公知のスタック機構が使用され
る。
等におけるプログラムは関数によって構成され、実行に
おいである関数から他の関数を呼び出す操作が頻繁に行
われ、このような関数呼び出しを効率よく実行するため
に、関数間の情報授受に公知のスタック機構が使用され
る。
即ち、代表的なシステムのLISPコンパイラで生成さ
れる、関数のオブジェクトプログラムにおける関数呼び
出し手続きでは、復帰先命令アドレス(以下においてP
Cと表す)と一般に可変個数の実引数とをツク・ツクを
介して授受するために、PC1実引数の順にスタックさ
れている必要があるので、第3図に処理の流れを示すよ
うに、先ず処理ステップ1において、PCを格納する領
域をスタックに確保するために仮の特定値をスタックす
る。
れる、関数のオブジェクトプログラムにおける関数呼び
出し手続きでは、復帰先命令アドレス(以下においてP
Cと表す)と一般に可変個数の実引数とをツク・ツクを
介して授受するために、PC1実引数の順にスタックさ
れている必要があるので、第3図に処理の流れを示すよ
うに、先ず処理ステップ1において、PCを格納する領
域をスタックに確保するために仮の特定値をスタックす
る。
次に処理ステップ2で呼び出し先に渡す情報のスタック
開始位置を示すフレームポインタ(以下においてFPと
表す)をpc格納領域を指すように設定すると共に、旧
FP値を保存するためにスタックし、処理ステップ3で
1個以上の所要の実引数をスタックしてスタック処理を
終わり、スタックを第4図に例示するように構成する。
開始位置を示すフレームポインタ(以下においてFPと
表す)をpc格納領域を指すように設定すると共に、旧
FP値を保存するためにスタックし、処理ステップ3で
1個以上の所要の実引数をスタックしてスタック処理を
終わり、スタックを第4図に例示するように構成する。
その後処理ステップ4で呼び出し先関数へ分岐するブラ
ンチ命令を実行する。
ンチ命令を実行する。
このブランチ命令には、例えばブランチ・アンド・リン
ク命令等として知られるような、分岐と共に該ブランチ
命令の次に位置する命令のアドレスを復帰先命令アドレ
スとして所定のレジスタに格納する機能を有する命令を
使用する。
ク命令等として知られるような、分岐と共に該ブランチ
命令の次に位置する命令のアドレスを復帰先命令アドレ
スとして所定のレジスタに格納する機能を有する命令を
使用する。
そこで呼び出し先では、処理ステップ5で復帰先命令ア
ドレスを、上記レジスタからスタ・ツク上のpc格納領
域に格納した後、処理ステップ6以降で、スタックで渡
された実引数を使用する関数処理を開始する。
ドレスを、上記レジスタからスタ・ツク上のpc格納領
域に格納した後、処理ステップ6以降で、スタックで渡
された実引数を使用する関数処理を開始する。
〔発明が解決しようとする課題]
前記の関数呼び出し処理方法によれば、pc格納領域に
ついて、呼び出し側において仮の値をスタックし、呼び
出し先でレジスタから実のPC値を格納するという2度
の処理が必要となる・本発明は・スタックを介して情報
を授受する関数間の呼び出しの、pc格納領域の処理を
改善して処理効率を向−ヒできる関数呼び出し処理方法
を目的とする。
ついて、呼び出し側において仮の値をスタックし、呼び
出し先でレジスタから実のPC値を格納するという2度
の処理が必要となる・本発明は・スタックを介して情報
を授受する関数間の呼び出しの、pc格納領域の処理を
改善して処理効率を向−ヒできる関数呼び出し処理方法
を目的とする。
第1図は、本発明の構成を示す処理の流れ図である。
図は関数呼び出し処理の流れを示し、11〜16は処理
ステップである。
ステップである。
呼び出し元関数は関数呼び出しにおいて、処理ステップ
11〜15により、その記憶領域の先頭アドレス、復帰
先命令の先頭アドレスからのオフセット、所要の実引数
をこの順にスタックした後、呼び出し先関数へブランチ
する。呼び出し先関数では、処理ステップ16以降で直
ちに関数の処理を実行する。
11〜15により、その記憶領域の先頭アドレス、復帰
先命令の先頭アドレスからのオフセット、所要の実引数
をこの順にスタックした後、呼び出し先関数へブランチ
する。呼び出し先関数では、処理ステップ16以降で直
ちに関数の処理を実行する。
以上の処理方法により、仮のPCスタックが不要になる
。
。
〔実施例]
各関数は計算機の記憶領域にロードされたとき、以後の
実行命令のベースアドレスとして、ロードされた領域の
先頭アドレスを受は取って、適当なレジスタに保持して
いる。
実行命令のベースアドレスとして、ロードされた領域の
先頭アドレスを受は取って、適当なレジスタに保持して
いる。
又、その領域内の所要の命令の上記ベースからのオフセ
ットは、コンパイラがその関数のオブジェクトを生成す
るとき決定することができるので、これを定数として保
持するよう番こする。
ットは、コンパイラがその関数のオブジェクトを生成す
るとき決定することができるので、これを定数として保
持するよう番こする。
従って、関数呼び出しにおいて、第1図の処理ステップ
11で、先頭アドレスをスタックし、処理ステップ12
で上記オフセット値をスタックするようオブジェクトを
生成することが可能であり、この2項のアドレス値によ
って、PCの内容は決定する。
11で、先頭アドレスをスタックし、処理ステップ12
で上記オフセット値をスタックするようオブジェクトを
生成することが可能であり、この2項のアドレス値によ
って、PCの内容は決定する。
呼び出し元関数は、処理ステップ11.12で復帰先P
Cのための先頭アドレスとオフセットをスタックしたの
ち、処理ステップ13で従来と同様に、呼び出し先に渡
す情報のスタック開始位置を示すFPを先頭アドレスの
格納領域を指すように設定すると共に旧FP値をスタッ
クする。
Cのための先頭アドレスとオフセットをスタックしたの
ち、処理ステップ13で従来と同様に、呼び出し先に渡
す情報のスタック開始位置を示すFPを先頭アドレスの
格納領域を指すように設定すると共に旧FP値をスタッ
クする。
処理ステップ14で1個以上の所要の実引数をスタック
してスタック処理を終わり、呼び出し先関数に渡すスタ
ックを例えは第2図のような構成のスタックにする。
してスタック処理を終わり、呼び出し先関数に渡すスタ
ックを例えは第2図のような構成のスタックにする。
その後処理ステップ15で呼び出し先関数へ分岐するブ
ランチ命令を実行する。このブランチ命令は、従来と異
なり単純なジャンプを実行する命令でよい。
ランチ命令を実行する。このブランチ命令は、従来と異
なり単純なジャンプを実行する命令でよい。
そこでジャンプ先の呼び出し先関数では、処理ステップ
16以降で、直ちに関数本来の処理に入ることができる
。
16以降で、直ちに関数本来の処理に入ることができる
。
以上の説明から明らかなように本発明によれば、LIS
P等の計算機プログラムの、ある関数が他の関数を呼び
出すための関数呼び出し処理において、スタックを介し
て情報を授受する関数間の呼び出しの処理効率が改善さ
れるという著しい工業的効果がある。
P等の計算機プログラムの、ある関数が他の関数を呼び
出すための関数呼び出し処理において、スタックを介し
て情報を授受する関数間の呼び出しの処理効率が改善さ
れるという著しい工業的効果がある。
第1図は本発明の構成を示す処理の流れ図、第2図は本
発明のスタックを説明する図、第3図は従来の処理の流
れ図、 第4図は従来のスタックを説明する図 である。 図において、 1〜6.11〜16は処理ステップ ・j・ 本発明の構成を示す処理の流れ図 第1図 本発明のスタックを説明する図 第2図 従来の処理の流れ図 第3図 従来のスタックを説明する図 第4図
発明のスタックを説明する図、第3図は従来の処理の流
れ図、 第4図は従来のスタックを説明する図 である。 図において、 1〜6.11〜16は処理ステップ ・j・ 本発明の構成を示す処理の流れ図 第1図 本発明のスタックを説明する図 第2図 従来の処理の流れ図 第3図 従来のスタックを説明する図 第4図
Claims (1)
- 計算機の記憶領域にロードされ、実行される呼び出し元
関数から呼び出し先関数を呼び出す場合に、スタックに
所要の情報をスタックして該呼び出し先関数に渡すよう
にした計算機において、該呼び出し元関数は該スタック
に、該呼び出し元関数の記憶領域の先頭アドレスと、復
帰先命令の該先頭アドレスからのオフセットと、所要の
実引数とを該順序にスタックした(11〜14)後、該
呼び出し先関数の所定命令へのブランチ命令を実行する
(15)ことを特徴とする関数呼び出し処理方法。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008055222A (ja) * | 2007-11-15 | 2008-03-13 | Fujishoji Co Ltd | 遊技機 |
-
1988
- 1988-02-09 JP JP2787888A patent/JPH083792B2/ja not_active Expired - Fee Related
Cited By (1)
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 |