JPS6156816B2 - - Google Patents

Info

Publication number
JPS6156816B2
JPS6156816B2 JP56141341A JP14134181A JPS6156816B2 JP S6156816 B2 JPS6156816 B2 JP S6156816B2 JP 56141341 A JP56141341 A JP 56141341A JP 14134181 A JP14134181 A JP 14134181A JP S6156816 B2 JPS6156816 B2 JP S6156816B2
Authority
JP
Japan
Prior art keywords
subroutine
stack
register
program
contents
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
Application number
JP56141341A
Other languages
English (en)
Other versions
JPS5843043A (ja
Inventor
Masayoshi Matsushita
Shigeki Yamada
Norio Sato
Mitsuru Fujisawa
Akira Ikuta
Shigeo Ochiai
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
Hitachi Ltd
NEC Corp
Nippon Telegraph and Telephone Corp
Oki Electric Industry Co Ltd
Original Assignee
Fujitsu Ltd
Hitachi Ltd
Nippon Telegraph and Telephone Corp
Oki Electric Industry Co Ltd
Nippon Electric Co 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, Hitachi Ltd, Nippon Telegraph and Telephone Corp, Oki Electric Industry Co Ltd, Nippon Electric Co Ltd filed Critical Fujitsu Ltd
Priority to JP56141341A priority Critical patent/JPS5843043A/ja
Publication of JPS5843043A publication Critical patent/JPS5843043A/ja
Publication of JPS6156816B2 publication Critical patent/JPS6156816B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】 本発明はデータ処理装置における効率的なサブ
ルーチン呼び出し命令方式に関するものである。
データ処理装置においてサブルーチン呼び出し
が生ずると、それまで実行していたプログラム処
理を中断し、サブルーチンでの処理の実行に移行
した後、元のプログラムへ復帰しその実行を再開
する。したがつて実行中のプログラムからサブル
ーチンプログラムへ切替える際必要な処理とし
て、実行中のプログラムを後で再開するために再
開情報を退避する処理と、サブルーチンを実行す
るための準備処理とがある。
前者は例えばプログラムカウンタや使用中のレ
ジスタの内容の退避などであり、後者は例えばサ
ブルーチンで使用する作業エリアの確保である。
ここで、プログラム構造にブロツク構造を採用す
ると、後者にさらに静的リンク(静鎖、スタテイ
ツクチエインとも呼ぶ)の設定が必要となる。静
的リンクはブロツク構造の約束に従い該プログラ
ムのコンパイル時点で静的に定まるもので、実行
するプログラムの参照データまたはプログラムを
一義的に定める。これは実行するプログラム固有
のデータロツクを参照の許される親データブロツ
クに次々とアドレスリンクする事により実現でき
る。
従来、プログラムにおいてサブルーチン呼び出
しが実行されると、ハードウエアでは中断時のプ
ログラムステータス語PSW(プログラムカウン
タとプロセツサステータス情報)のみを例えばス
タツクに退避してサブルーチンの先頭番地から実
行を開始するため、前記レジスタ群の退避、作業
エリアの確保、静的リンクの設定などの処理はす
べてソフトウエアにより行なわなければならず、
サブルーチン呼び出し回数が多い場合には、ソフ
トウエアのオーバヘツドが増大し、本来の有効な
処理に割当てられる時間が相対的に減少し、デー
タ処理装置の処理能力が大幅に低下する欠点があ
つた。
またスタツク構造によつては、ソフトウエアで
は静的リンクをスタツク上に設定する事ができ
ず、他の制御用バツフア領域を用いて実現してい
た。この場合プログラムの再帰呼び出し(同じプ
ログラムを多重に呼び出す)を実現するには複雑
な制御用バツフアの管理が必要となり、ソフトウ
エアのオーバヘツドはさらに大幅に増加する欠点
があつた。
本発明はこれらの欠点を除去するため、スタツ
ク機構とサブルーチン呼び出し命令を有するデー
タ処理装置において、サブルーチン内にスタツク
へ退避すべきレジスタ群を指定する第1の制御情
報フイールドと、サブルーチンで使用するスタツ
ク上の作業エリアのサイズを指定する第2の制御
情報フイールドをもち、さらにサブルーチン呼び
出し命令の中に、今回のスタツク上のデータブロ
ツクを以前のデータブロツクに静的にリンクする
ための第3の制御情報フイールドをもち、サブル
ーチン呼び出し命令実行時に、前記第1の制御情
報フイールドの内容に従つてスタツク上に複数の
レジスタの内容を退避し、前記第2の制御情報フ
イールドの内容に従つてスタツク上に作業エリア
を確保し、前記第3の制御情報フイールドの内容
に従つてスタツク上に静的リンクを設定するハー
ドウエア機構を有し、これにより効率のよいサブ
ルーチン呼び出しを実行し得るようにしたもの
で、以下図面について詳細に説明する。
図面は本発明の実施例を示すものである。第1
図は本発明方式によるデータ処理装置を示すもの
で、1はサブルーチン呼び出し命令、サブルーチ
ンプログラム、スタツクバツフア、データなどを
含む主記憶装置(MM)、2は1語32ビツトの論
理仕様を有する中央処理装置(CPU)で、汎用
レジスタ3、プログラムステータス語(PSW)
4、第1のワークレジスタ(WR1)5、第2の
ワークレジスタ(WR2)6、デコーダ7、メモ
リアドレスレジスタ(MAR)8、第3のワーク
レジスタ(WR3)9、演算器及びシフト器
(ALU AND SHIFTER)10、データバツフア
レジスタ(DBR)11、プロセツサバス
(BUS)12、第4のワークレジスタ(WR4)1
3、フアインドライトモストワン(FIND
RIGHT MOST ONE)回路(FRM)14、命令
解釈実行制御部(CTL)15を含む。
命令の実行は、プログラムステータス語4に含
まれるプログラムカウンタの内容がプロセツサバ
ス12を介してメモリアドレスレジスタ8に設定
され、メモリアドレスレジスタ8の示す主記憶装
置1の番地の内容がデータバツフアレジスタ11
に読み取られ、命令解釈実行制御部15による制
御の下に行なわれる。命令実行後プログラムカウ
ンタは1加算され次の命令の格納番地を示す。
命令実行に伴なう主記憶装置1の内容の読み取
り、書き込みも対象となる番地をメモリアドレス
レジスタ8に設定し、データバツフアレジスタ1
1を介して行なう。
またスタツクバツフアは主記憶装置1の一部を
割り当て、スタツクポインタ(SP)で最新番地
を示す事により実現している。本実施例では汎用
レジスタ3の中のレジスタR14をスタツクポイ
ンタとして使用している。スタツクバツフアへの
書き込みはスタツクポインタの内容を1減算し、
その値をメモリアドレスレジスタ8に設定しデー
タバツフアレジスタ11に書き込みデータを設定
することにより行なわれる。この事よりスタツク
は高位アドレスから低位アドレスに伸張するのが
明確であろう。上記スタツクバツフアへの書き込
み動作がプツシユダウンと称する。逆にスタツク
バツフアからの読み出しは、スタツクポインタの
内容をメモリアドレスレジスタ8に設定すること
によりデータバツフアレジスタ11に読み出され
る。その後スタツクポインタは1加算される。上
記スタツクバツフアからの読み出し動作をポツプ
アツプと称する。
第2図は本発明におけるサブルーチン呼び出し
命令の形式を示すものであり、101はサブルー
チン呼び出し命令を示す命令コード部、102は
スタツク上へ設定すべき静的リンクアドレスを退
避してある汎用レジスタ番号(R)、103はサ
ブルーチンの先頭番地(JPA)である。
第3図はサブルーチンプログラムの構成を示す
もので、201は該サブルーチンで使用するスタ
ツク上の作業エリアサイズ指定フイールド
(VARN)、202は該サブルーチンでスタツク上
に退避すべきレジスタ群を示すレジスタセーブパ
タン(RSP)である。203は作業エリアサイズ
指定フイールド201とレジスタセーブパタン2
02の総称でエントリパタン(EP)と称する。
204は元のプログラムへの復帰命令である。
第4図は上記レジスタセーブパタン202の形
式を示すもので、ビツト位置番号0〜15がレジス
タ番号R0〜R15に対応し、1が立つているビツト
位置番号のレジスタが退避の対象となつている。
第5図はサブルーチン呼び出し命令実行時のス
タツクの状態を示す説明図であり、また第6図は
本発明の実行シーケンスを示すものである。
次にこれらの図面を用いて本発明の動作を説明
する。
今、主記憶装置1により読み出された命令が第
2図に示す形式をとり、命令コード部101がサ
ブルーチン呼び出し命令を示していたとしよう。
この時命令解釈実行制御部15は以下に述べる手
順でサブルーチン呼び出しを行なう。
(1) 命令の中にある静的リンクアドレス指定レジ
スタ番号102で示す汎用レジスタ3の内容を
読み取り第1のワークレジスタ5に退避する。
(2) 現在実行中のプログラム状態を示しているプ
ログラムステータス語4をスタツクへプツシユ
ダウンする。この動作終了後スタツクポインタ
は第5図のSP0で示す位置となる。
(3) 命令のオペランドアドレス部で示されるサブ
ルーチンの先頭番地103の内容を読み出し、
エントリパタン203として第2のワークレジ
スタ6に退避する。その後エントリパタン20
3の上位16ビツトを作業エリアサイズ指定フイ
ールド201として第3のワークレジスタ9に
退避し、下位16ビツトをレジスタセーブパタン
202として第4のワークレジスタ13に退避
する。
(4) 第4のワークレジスタ13はFRM回路14
により最右端の1のビツト位置を検出されデコ
ーダ7を通して対応する汎用レジスタ3の各レ
ジスタが選択される。選択されたレジスタの内
容がスタツクへプツシユダウンされ、同時に
FRM回路14は最右端の1を0に変換したパ
タンを出力し、プロセツサバス12を通して再
度第4のワークレジスタ13に格納される。以
下この動作がくり返され対応するレジスタが
次々とスタツクにプツシユダウンされ第4のワ
ークレジスタ13の内容がすべて0になつた時
点で動作終了となる。この時スタツクポインタ
は第5図のSP1で示す位置となる。
(5) 第3のワークレジスタ9の内容が示す作業エ
リアサイズ語分スタツクポインタの内容が演算
器10で減算される。この動作によりスタツク
ポインタは第5図のSP2で示す位置となる。
これによりスタツク内に作業エリアが作業エリ
アサイズ語分確保されたことになる。
(6) 第2のワークレジスタ6の内容、つまりエン
トリパタン203をスタツクにプツシユダウン
する。この動作によりスタツクポインタは第5
図のSP3で示す位置となる。エントリパタン
203はサブルーチン処理が終了し、元のプロ
グラムへの復帰命令204が発せられたとき、
回復すべきスタツク内の作業エリアサイズおよ
びレジスタ群を識別するために必要である。
(7) 第1のワークレジスタ5に退避してある静的
リンクアドレスをスタツクにプツシユダウンす
る。これにより今回のサブルーチンで使用する
データブロツクが親データブロツクにリンクさ
れたことになる。この動作によりスタツクポイ
ンタは第5図のSP4で示す位置となる。
(8) 最後にプログラムステータス語4に含まれる
プログラムカウンタの内容を演算器10を通し
て1加算しサブルーチンプログラム本体の先頭
番地を求めサブルーチンプログラムの実行を開
始する。
この時点でハードウエアによるサブルーチン
呼び出し動作は終了し、以後をソフトウエアに
引継ぐ事になる。
以上説明したハードウエア機構を用いる事に
より効率のよいサブルーチン呼び出しを実現で
きる。
次に以上述べたハードウエアによるレジスタ群
の退避、作業エリアの確保および静的リンクの設
定機能を使つてブロツク構造をもつプログラム構
成の実施例およびスタツクの状態について述べ
る。
第7図はブロツク構造プログラムの例を示すも
ので実在実行中のサブルーチンSUB−Aより
SUB−B、SUB−C、SUB−Dの各サブルーチ
ンが本発明によるサブルーチン呼び出し命令
(CALL)301,302,303で順次実行さ
れる事を示している。
第8図は各サブルーチンが順次呼び出された
時、スタツク上に実現されるデータブロツクとそ
の静的リンクの状況を示している。各データブロ
ツクは第5図を用いて前述した如き構成をもち、
A0,A1,A2,A3は各データブロツクのア
ドレスである。
今サブルーチンSUB−Aが実行中でサブルー
チンSUB−Aのデータブロツクが第8図の符号
401で示され、その静的リンク設定エリア40
5にはサブルーチンSUB−Aが呼び出される以
前の親データブロツクのアドレスAが設定されて
いるものとすると、サブルーチンSUB−Bを呼
び出す時、コンパイル時点で定まつたサブルーチ
ンSUB−Bの使用する作業エリアのサイズ、退
避の必要なレジスタ群の指定を前記サブルーチン
SUB−Bの先頭番地にあエントリパタン203
に設定し、ブロツク構造の約束に従つてサブルー
チンSUB−BはサブルーチンSUB−Aのデータ
ブロツクにリンクされるものとすると(コンパイ
ル時点で定まつている)、サブルーチンSUB−A
(現在実行中)のデータブロツク401のアドレ
スA0を例えば汎用レジスタ3のレジスタ番号R
1に設定し、本発明によるサブルーチン呼び出し
命令301を実行すると、第8図のスタツク上に
は前記ハードウエアの動作終了後、サブルーチン
SUB−Bのデータブロツク402が確保され、
静的リンク設定エリアにはサブルーチンSUB−
Aのデータブロツク401のアドレスA0が設定
される。
以下同様にしてサブルーチンSUB−Cのデー
タブロツク403がサブルーチンSUB−Bのデ
ータブロツク402にリンクされるが、サブルー
チンSUB−Cの実行中にサブルーチンSUB−D
のサブルーチン呼び出しを行なつた場合、サブル
ーチンSUB−Dのデータブロツク404が確保
され、静的リンク設定エリアにはサブルーチン
SUB−Aのデータブロツク401のアドレスA
0が設定される。
この場合の静的リンクアドレスはサブルーチン
SUB−CとSUB−Dのブロツク構造の深さの差
により約束されており、コンパイラがコンパイル
時点で決定する。
上記静的リンクをスタツク上に設定することに
より、他のデータブロツク内の参照はスタツク上
の静的リンクを順次たどる事により簡単に行なえ
る。今サブルーチンSUB−Dからは自分自身の
データブロツク404とサブルーチンSUB−A
のデータブロツク401内にあるデータおよびプ
ログラムのエントリのみ参照可能となり、サブル
ーチンSUB−B、サブルーチンSUB−Cとは干
渉しないプログラム構造(ブロツク構造)を実現
している。
また、本実施例で示した様なスタツク機構すな
わちスタツクバツフアをスタツクポインタのみで
制御する機構において、スタツク上に静的リンク
を設定するには本発明によるサブルーチン呼び出
し命令は特に有効である。なぜならば静的リンク
はサブルーチンを呼ぶ側のプログラムで管理、設
定するものであり、本発明によるサブルーチン呼
び出し命令を使用しない場合、呼び側プログラム
で本実施例に示すスタツクの位置(第5図のSP
4)に静的リンク値を設定することは、スタツク
の伸張方向より考えて不可能である。
以上説明した如く本発明はサブルーチン呼び出
し時に、レジスタ群の退避、作業エリアの確保お
よび静的リンクの設定をスタツク上にハードウエ
ア(フアームウエアを含む)により自動的に行な
うようにしたので、次の利点が生ずる。
(1) スタツク上にレジスタ群の退避エリアや作業
エリアの確保を自動的に行うことにより、再入
可能なサブルーチンが容易に実現できる。ここ
でサブルーチンが再入可能とは、あるユーザが
該サブルーチンを実行中に他のユーザが同じサ
ブルーチンを実行し始めることができることを
意味し、マルチプログラミングシステムやタイ
ムシエアリングシステムにおいて資源(この場
合はプログラムの写しを格納するための一次記
憶)を共有する上で有用である。
(2) スタツク上に静的リンクを設定することによ
り、参照可能な親データブロツクへのアクセス
は静的リンクを順次たどるのみで行なえるの
で、サブルーチンの再帰呼び出しが可能なブロ
ツク構造をもつプログラムが容易に実現でき
る。
(3) 上記処理(レジスタ群の退避、作業エリアの
確保および静的リンクの設定)はフアームウエ
アを含むハードウエアで行われるため、ハード
ウエアまたはフアームウエアの有する並列処理
機能を用いて高速化できる。この結果、効率の
よいサブルーチン呼び出しが実現できる。さら
に副次的にソフトウエアの記述も簡明になる。
【図面の簡単な説明】
図面は本発明の一実施例を示すもので、第1図
はデータ処理装置の構成図、第2図はサブルーチ
ン呼び出し命令の形式を示す図、第3図はエント
リパタンを含むサブルーチンプログラムの構成
図、第4図はエントリパタンの中のレジスタセー
ブパタンの形式を示す図、第5図はサブルーチン
呼び出し命令実行時のスタツクの状態を示す説明
図、第6図は本発明の実行シーケンス図、第7図
はブロツク構造プログラムの一例を示す説明図、
第8図は第7図におけるサブルーチン呼び出し時
のスタツク上のデータブロツクのリンク状態を示
す説明図である。 1……主記憶装置(MM)、2……中央処理装
置(CPU)、3……汎用レジスタ、4……プログ
ラムステータス語(PSW)、5,6,9,13…
…第1、第2、第3、第4の各ワークレジスタ
(WR1、WR2、WR3、WR4)、7……デコーダ、
8……メモリアドレスレジスタ(MAR)、10…
…演算器およびシフト器、(ALU AND
SHIFTER)、11……データバツフアレジスタ
(DBR)、12……プロセツサバス、14……
FRM回路、15……命令解釈実行制御部。

Claims (1)

    【特許請求の範囲】
  1. 1 スタツク機構とサブルーチン呼び出し命令を
    有するデータ処理装置において、サブルーチン内
    にスタツクへ退避すべきレジスタ群を指定する第
    1の制御情報フイールドと、サブルーチンで使用
    するスタツク上の作業エリアのサイズを指定する
    第2の制御情報フイールドをもち、さらにサブル
    ーチン呼び出し命令の中に、今回のスタツク上の
    データブロツクを以前のデータブロツクに静的に
    リンクするための第3の制御情報フイールドをも
    ち、サブルーチン呼び出し命令実行時に、前記第
    1の制御情報フイールドの内容に従つてスタツク
    上に複数のレジスタの内容を退避し、前記第2の
    制御情報フイールドの内容に従つてスタツク上に
    作業エリアを確保し、前記第3の制御情報フイー
    ルドの内容に従つてスタツク上に静的リンクを設
    定するハードウエア機構を有することを特徴とす
    るデータ処理装置の呼び出し命令方式。
JP56141341A 1981-09-08 1981-09-08 デ−タ処理装置の呼び出し命令方式 Granted JPS5843043A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP56141341A JPS5843043A (ja) 1981-09-08 1981-09-08 デ−タ処理装置の呼び出し命令方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP56141341A JPS5843043A (ja) 1981-09-08 1981-09-08 デ−タ処理装置の呼び出し命令方式

Publications (2)

Publication Number Publication Date
JPS5843043A JPS5843043A (ja) 1983-03-12
JPS6156816B2 true JPS6156816B2 (ja) 1986-12-04

Family

ID=15289701

Family Applications (1)

Application Number Title Priority Date Filing Date
JP56141341A Granted JPS5843043A (ja) 1981-09-08 1981-09-08 デ−タ処理装置の呼び出し命令方式

Country Status (1)

Country Link
JP (1) JPS5843043A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6297038A (ja) * 1985-10-23 1987-05-06 Fuji Electric Co Ltd プログラム実行方式
US4811208A (en) * 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip
DE3726192A1 (de) * 1987-08-06 1989-02-16 Otto Mueller Stacksteuerung

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
THE INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS INC=1979M2 *

Also Published As

Publication number Publication date
JPS5843043A (ja) 1983-03-12

Similar Documents

Publication Publication Date Title
Case et al. Architecture of the IBM System/370
US4777588A (en) General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance
CA1172375A (en) Program call method
US5487158A (en) Method and procedure call mechanism for calling 16-bit functions from 32-bit functions
KR101059906B1 (ko) 연산 처리 장치 및 명령의 확장 방법
EP0104840B1 (en) Multiprocessor system including firmware
JPS6156816B2 (ja)
JPH10214203A (ja) 情報処理装置
JPH0683615A (ja) 命令セットエミュレーションを行う計算機
US5511206A (en) Microprocessor based computer with virtual memory space in overwritable memory
KR960012354B1 (ko) 마이크로 프로세서
JPS61184643A (ja) 仮想計算機の起動制御方式
JP3163196B2 (ja) 仮想記憶制御における命令中断情報格納制御方法
JP2671160B2 (ja) 例外処理方式
JPH01217635A (ja) レジスタ退避方式
JPH0756633B2 (ja) タスク切換え方式
JPH0738168B2 (ja) データ処理装置
JP3261708B2 (ja) 仮想計算機のアドレス変換方式
JPH01300352A (ja) ダンプ領域指示制御方式
JPS61201353A (ja) アドレス変換装置
JPS61223947A (ja) 処理装置の未定義命令検出方法
JPH0560130B2 (ja)
JPS63298652A (ja) 情報処理装置
JPS6337416B2 (ja)
JPS6086638A (ja) プログラムの記憶管理方式