JPH0421028A - レジスタ管理方法 - Google Patents

レジスタ管理方法

Info

Publication number
JPH0421028A
JPH0421028A JP12308290A JP12308290A JPH0421028A JP H0421028 A JPH0421028 A JP H0421028A JP 12308290 A JP12308290 A JP 12308290A JP 12308290 A JP12308290 A JP 12308290A JP H0421028 A JPH0421028 A JP H0421028A
Authority
JP
Japan
Prior art keywords
register
real
subprogram
processing
main program
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
JP12308290A
Other languages
English (en)
Inventor
Ichiji Hosojima
細島 一司
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP12308290A priority Critical patent/JPH0421028A/ja
Publication of JPH0421028A publication Critical patent/JPH0421028A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

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

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は、メインプログラムとサブプログラムとで演算
処理用の実レジスタを共用して処理を行なう場合の、実
レジスタの内容の退避処理を効率的に行なうレジスタ管
理方法に関する。
(従来の技術) コンピュータシステムにおいてプログラムを実行する場
合、通常、定型化された処理についてはサブプログラム
が使用される。即ち、メインプログラム実行中、所定の
定型化処理に移行する場合、サブプログラムが呼出され
、サブプログラムによって所定の処理を実行した後、メ
インプログラムに戻るといった処理が行なわれる。
一方、プログラム実行中には、種々の変数や定数を一時
保存して使用する場合かあり、これは予め定められた実
レジスタに格納される。この実レジスタの数は、ソフト
ウェアによって相違するが、例えば6個程度設けられる
メインプログラムの動作中に、幾つかの実レジスタが使
用され、サブプログラムが呼出されると、サブプログラ
ムも独自の手順に従って実レジスタを使用する。従って
、若し、メインプログラム実行中に保存すべきデータ等
が実レジスタに格納されていた場合、サブプログラムへ
動作が移ると、実レジスタの内容が破壊されてしまう。
そこで、従来、メインプログラムからサブプログラムへ
処理が移される場合に、実レジスタの内容を一旦退避す
る処理が行なわれていた。
第2図に、従来のサブプログラム呼出し方法説明図を示
す。
図には、メインプログラム(1)とメインプログラム(
2)とが示されており、それぞれ1つのサブプログラム
A−1を呼出す構成とされている。
例えば、メインプログラム(1)が、その処理中にサブ
プログラムA−1を呼出す場合には、CALL A−1
という命令に基づいて、サブプログラムへ処理が移る。
この場合、メインプログラム(1)側では、今まで使用
していたパラメータ。
パラメータ個数、戻り先番地などを図示しないスタック
に積む。この例では、メインプログラム(1)側ではレ
ジスタの退避を行なわない。
一方、呼出されたサブプログラムA−1側では、そのプ
ログラムの先頭で、先ず自己が使用する実レジスタGR
O,GRIの内容について退避処理を行なう。この退避
処理とは、図示しない実レジスタに格納されたデータを
、図示しない退避用メモリにそのまま書き写すことをい
う。その後、サブプログラムA−1は、実レジスタGR
O及びGRIを独自に使用して所定の処理を実行する6
そして、処理の終了後、先に退避したデータを実レジス
タに書き戻す復帰処理を実行する。
尚、図中、STとあるのはストア命令、Lとあるのはロ
ード命令である。また、xXとあるのは機械命令又はオ
ペランドフィールドを示す。
第3図には、従来の他のサブプログラム呼出し方法を示
す。
この例では、呼出し側の、例えばメインプログラム(1
)がサブプログラムを呼出す前に、先ず、通常のパラメ
ータやパラメータ個数、戻り先番地等を図示しないスタ
ックに積んだ後、呼出しを跨がって使用するレジスタ、
即ちここではGRO,GRIを退避する。サブプログラ
ムA−1側では、既に退避済みの図示しない実レジスタ
を自由に使って一定の処理を実行する。サブプログラム
の処理が終了し、メインプログラム(1)に処理が戻る
と、メインプログラム(1)では、先に退避しておいた
データを実レジスタGRO。
GRIに復帰する。
上記何れの呼出し方法を採用するかは、対象となるシス
テムのアーキテクチュアによって決定される。
(発明が解決しようとする課題) ところで、上記第2図に示したサブプログラム呼出し方
法では、メインプログラムで使用されていた実レジスタ
の退避をサブプログラム側で行なうため、万一、サブプ
ログラム側で退避処理及び復帰処理が正常に行なわれな
い場合、メインプログラムの動作が保証されないという
問題がある。
また、第3図に示したサブプログラム呼出し方法によれ
ば、メインプログラムで正常に退避処理と復帰処理を行
なえば、メインプログラムの処理内容は保証されるが、
サブプログラムを呼出す場合、無条件に跨がって使用さ
れる実レジスタの内容を退避してしまう。従って、サブ
プログラム側で使用されない実レジスタについても、退
避処理と復帰処理が必ず実行されるため、無用な命令を
実行することになり、オブジェクト効率が悪いという問
題点があった。
特に、システムに予め組込まれたいわゆる組込みサブプ
ログラムの読出し処理等においては、このようなオブジ
ェクト効率がシステム全体の効率に大きく影響する。
また、第3図の方法では、サブプログラム側の動作は保
証されるが、メインプログラム側における退避処理と復
帰処理が誤りを生じた場合には、メインプログラム側の
動作が保証されないという問題もあった。
本発明は以上の点に着目してなされたもので、効率的な
退避処理を行ない、プログラムの動作を確実に保証する
レジスタ管理方法を提供することを目的とするものであ
る。
(課題を解決するための手段) 本発明のレジスタ管理方法は、メインプログラムとサブ
プログラムとで演算処理用の実レジスタを共用して処理
を行なうものにおいて、前記サブプログラムの使用する
全ての実レジスタを表示する使用レジスタテーブルを設
け、メインプログラムからサブプログラムへ処理が移さ
れる場合に、当該サブプログラムの使用レジスタテーブ
ルを参照し、メインプログラムがそれまで使用していた
実レジスタのうち、前記サブプログラムが使用する実レ
ジスタの内容のみを退避すると共に、当該退避の際、少
なくとも退避先を示す退避情報と復帰すべき実レジスタ
を指定するレジスタ管理テーブルを作成して、サブプロ
グラムからメインプログラムへ処理が戻された後、前記
退避した実レジスタの内容を、当該実レジスタを使用す
る命令の直前に、前記レジスタ管理テーブルに従って前
記退避先から実レジスタへ復帰することを特徴とするも
のである。
(作用) 本発明の方法では、サブプログラム毎の使用レジスタテ
ーブルが設けられ、これを参照して、当該サブプログラ
ムへ処理を移行する際、必要最小限の実レジスタのみ退
避処理を行なう。また、退避先からの復帰は、その実レ
ジスタを使用する命令の直前まで保留される。レジスタ
管理テーブルを設けてこの復帰処理を管理することによ
り、レジスタ使用制限に幅を持たせることができる。
(実施例) 以下、本発明を図の実施例を用いて詳細に説明する。
第1図は、本発明のレジスタ管理方法実施例を示す説明
図である。
図の方法では、メインプログラム10か、2っのサブプ
ログラム11.12を呼出して処理を実行する例を示し
ている。この場合、実レジスタ13は、例えば、図のよ
うにGRO−GR5までの6個分設けられているものと
する。。
尚、この実レジスタ13の退避処理や復帰処理を制御す
るために、制御部14及び退避用メモリ15が設けられ
ている。また、レジスタ管理のために、使用レジスタテ
ーブル16及びレジスタ管理テーブル17が設けられて
いる。
制御部14はプロセッサ等から成り、メインプログラム
10、サブプログラム11,12、実レジスタ13、退
避用メモリ15、使用レジスタテーブル16、レジスタ
管理テーブル17は、何れも主記憶装置上に展開される
ものとする。
また、使用レジスタテーブル16は、サブプログラム名
及びそのサブプログラムで使用する実レジスタ名を対応
付けたテーブルである。この例では、サブプログラム名
A−1は、実レジスタGRO,GRIを使用する。また
、サブプログラム名A−2は、実レジスタGRI、GR
2,GR3を使用する構成とされている。
一方、レジスタ管理テーブル17は、メインプログラム
10中で設定されている作業レジスタDROと、その作
業レジスタに対して割付けた実レジスタ例えばGRl、
及び退避処理を行なった際に、退避用メモリ15中のど
の番地にそのデータを格納したかを示す退避情報DT、
更に復帰すべき実レジスタ名例えばGRIが、それぞれ
対応付けられたものである。尚、このレジスタ管理テー
ブル17は、作業レジスタ毎に1つずつ作成される。
また、このレジスタ管理テーブル17において、復帰す
べき実レジスタは、現実に、メインプログラム10中で
、特定の作業レジスタについて、特定の実レジスタへの
復帰を必要とする場合にのみ書込まれるもので、どの実
レジスタに復帰しても差し支えない場合には、その作業
レジスタは、復帰時点で空いている任意の実レジスタに
割付けられる。
本発明の方法によれば、メインプログラム10が、例え
ばサブプログラム1、発明の名称A−1のサブプログラ
ムを呼出し、処理が移行する場合、使用レジスタテーブ
ル16を参照し、メインプログラム10がそれまで使用
していた実レジスタのうち、そのサブプログラム11が
使用する実レジスタの内容のみを退避する。
即ち、この例では、サブプログラム名A−1の場合、使
用する実レジスタGRO及びGRIのみを退避すること
になる。そして、この退避の際に、先に説明したレジス
タ管理テーブル17を作成する。
次に、サブプログラム11の処理が終了し、メインプロ
グラム10へ処理が戻された後は、メインプログラム1
0は従来と異なり、直ちに実レジスタの復帰を行なわな
い。
即ち、メインプログラム10中に退避した実レジスタを
使用する命令が存在する場合、その直前に実レジスタへ
の復帰を行なう。この場合、レジスタ管理テーブル17
を参照し、復帰すべき実レジスタが指定されているか否
かによって、復帰対象となる実レジスタを決定すること
になる。
以上、本発明の概略動作を説明したが、第4図を用いて
、更に本発明の詳細な動作を説明する。
第4図は、本発明によるプログラム呼出し方法実施例を
示す説明図である。
図は、ソースプログラムからコンパイルを行なう際に、
−旦コード化されたプログラム21に対し、レジスタ割
付けのための処理を行なうレジスタ割付はパス22を経
て得られた、割付は後のコード23を示したものである
。即ち、これはメインプログラムの一部を表わしたもの
で、図の右側のコード23を見て分かるように、このメ
インプログラムには、前半に実レジスタGRI。
GR2,GR3を使用する命令が存在する。
ここで、例えば、サブ、プログラム名A−2の呼出しを
行なう場合、その直前に呼出しを跨がって使用される実
レジスタの退避処理が行なわれる。この場合、第1図に
示した使用レジスタテーブルを参照し、サブプログラム
名A−2の使用する実レジスタGR1,GR2,GR3
について退避処理が行なわれる。即ち、第4図に示した
メインプログラムの前半に他のレジスタが使用されてい
たとしても、その退避処理は行なわれない。
また、サブプログラム名A−2の処理完了後、メインプ
ログラムに復帰する場合には、メインプログラム中で、
例えば図のように実レジスタGRIとGR2を使用する
命令が存在する場合、その直前で実レジスタGRI及び
GR2の復帰処理が行なわれる。
従来は、CALL命令の後、メインプログラムへの処理
の復帰直後に直ちにレジスタ復帰が行なわれていた。本
発明は、これと異なる復帰方法を採用した点に特徴があ
る。
従来のように、無条件にレジスタの復帰を行なう場合は
よいが、本発明のように、選択的にレジスタの復帰を行
なう場合、復帰すべきもの、退避先、復帰先等が明確に
されていなければならない。そこで、レジスタ管理テー
ブル17を必要とするのである。
即ち、所定のタイミングで第1図のレジスタ管理テーブ
ル17を参照し、復帰すべき実レジスタが指定されてい
る場合はそのレジスタに、指定されていない場合はその
とき使用されていない任意の実レジスタに復帰が行なわ
れる。
以上のように、レジスタ割付はパス、即ち作業レジスタ
を実レジスタに割付けて機械コードに展開するパスによ
って、コンパイラの組込みサブプログラムの機械コード
を展開する場合、第1図に示した使用レジスタテーブル
が参照されて、退避の必要な実レジスタの退避のみが選
定される。また、復帰処理についても、実レジスタの割
付けは、メインプログラム中のレジスタ使用命令の位置
を考慮して、その都度実行される。
尚、本発明を適用する場合、予めサブプログラムで使用
されるレジスタ等の情報が明確になっていることが必要
であり、組込みサブプログラム等の場合に好適する。
第5図に、上記のようなメインプログラムのコード展開
処理フローチャートを示す。
図において、始めにメインプログラムがサブプログラム
CALLを行なっている場合、そのサブプログラムが組
込みサブプログラムか否かが判断される(ステップSl
)。そして、組込みサブプログラムでない場合には、サ
ブプログラムを跨ぐレジスタを従来通りの手法で退避す
る。一方、組込みサブプログラムの場合は、本発明の方
法を実施するため、第1図に例示したレジスタ管理テー
ブルを構築する(ステップS3)。そして、先に説明し
た要領に従って、レジスタの退避処理を行なう(ステッ
プS4)。その後、ステップS5に移行し、パラメータ
、パラメータ個数、戻り先番地などをスタックに積み、
最後にCALLする機械コードを展開する(ステップS
6)。
第6図に、サブプログラムの処理終了後の、実レジスタ
への復帰処理フローチャートを示す。
サブプログラムからメインプログラムに復帰する場合、
先ず始めに、復帰すべき実レジスタがあるか否かが判断
される(ステップSl)。これは、先に説明したレジス
タ管理テーブル17を参照することにより行なわれる。
若し、レジスタ管理テーブル17において、復帰すべき
実レジスタが指定されていない場合には、空いている実
レジスタに復帰する(ステップS2)。一方、復帰すべ
き実レジスタが指定されている場合には、該当する実レ
ジスタに復帰する(ステップS3)。
このような処理が、当該実レジスタを使用される命令の
直前に行なわれることは、先に説明した通りである。
本発明は以上の実施例に限定されない。
メインプログラムの数、呼出されるサブプログラム数あ
るいは使用される実レジスタ数等は、必要に応じて自由
に選定して差し支えない。また、実レジスタへの復帰は
、当該実レジスタを使用される命令の直前と表現したが
、これは当該命令が実施される前であって、その命令に
比較的近い部分であればよく、必ずしもレジスタ復帰か
ら当該レジスタ使用命令までの間に一切の命令を含まな
いという意味ではない。
(発明の効果) 以上説明した本発明のレジスタ管理方法によれば、メイ
ンプログラムとプログラムによって実レジスタを共用す
る場合に、予め使用レジスタテーブルに示された実レジ
スタのみを退避するために、実レジスタの使用効率がよ
い。即ち、不要な実レジスタの退避処理等が省略され、
又、空きレジスタを自由に使用することができる。
更に、レジスタの復帰の場合にも、必ずしも特定のレジ
スタに復帰する必要がなく、又、復帰時点を当該実レジ
スタを使用する命令の直前まで遅らせることができるの
で、レジスタ使用制限により幅を持たせることが可能と
なる。これにより、オブジェクト効率、レジスタ効率が
向上し、システムの高能率化を図ることができる。
【図面の簡単な説明】
第1図は本発明のレジスタ管理方法説明図、第2図は従
来のサブプログラム呼出し方法説明図、第3図は従来の
他のサブプログラム呼出し方法説明図、第4図は本発明
によるサブプログラム呼出し方法説明図、第5図はコー
ド展開処理フローチャート、第6図は実レジスタへの復
帰処理フローチャートである。 lO・・・メインプログラム、 1112・・・サブプログラム、 13・・・実レジスタ、14・・・制御部、15・・・
退避用メモリ、 16・・・使用レジスタテーブル、 17・・・レジスタ管理テーブル。 ALL xx : コール命令 : −械命令又はオペランドフィールド本発明によるサ
ブプログラム呼び出し方法第  4  図 コード展間処理 第  5  図

Claims (1)

  1. 【特許請求の範囲】 メインプログラムとサブプログラムとで演算処理用の実
    レジスタを共用して処理を行なうものにおいて、 前記サブプログラムの使用する全ての実レジスタを表示
    する使用レジスタテーブルを設け、メインプログラムか
    らサブプログラムへ処理が移される場合に、当該サブプ
    ログラムの使用レジスタテーブルを参照し、メインプロ
    グラムがそれまで使用していた実レジスタのうち、前記
    サブプログラムが使用する実レジスタの内容のみを退避
    すると共に、 当該退避の際、少なくとも退避先を示す退避情報と復帰
    すべき実レジスタを指定するレジスタ管理テーブルを作
    成して、 サブプログラムからメインプログラムへ処理が戻された
    後、前記退避した実レジスタの内容を、当該実レジスタ
    を使用する命令の直前に、前記レジスタ管理テーブルに
    従って前記退避先から実レジスタへ復帰することを特徴
    とするレジスタ管理方法。
JP12308290A 1990-05-15 1990-05-15 レジスタ管理方法 Pending JPH0421028A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP12308290A JPH0421028A (ja) 1990-05-15 1990-05-15 レジスタ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12308290A JPH0421028A (ja) 1990-05-15 1990-05-15 レジスタ管理方法

Publications (1)

Publication Number Publication Date
JPH0421028A true JPH0421028A (ja) 1992-01-24

Family

ID=14851753

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12308290A Pending JPH0421028A (ja) 1990-05-15 1990-05-15 レジスタ管理方法

Country Status (1)

Country Link
JP (1) JPH0421028A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445484A (zh) * 2019-08-27 2021-03-05 龙芯中科技术股份有限公司 一种寄存器处理方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445484A (zh) * 2019-08-27 2021-03-05 龙芯中科技术股份有限公司 一种寄存器处理方法、装置、电子设备及存储介质
CN112445484B (zh) * 2019-08-27 2023-11-24 龙芯中科技术股份有限公司 一种寄存器处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
KR0138468B1 (ko) 마이크로 컴퓨터
JPH0353328A (ja) レジスタ退避回復方法ならびに処理装置
JPH0421028A (ja) レジスタ管理方法
JPS62151940A (ja) レジスタ退避/復帰方式
JP3019915B2 (ja) 手続き呼出し方法
JPH01217635A (ja) レジスタ退避方式
JP3341061B2 (ja) プログラマブルコントローラ
JP2790472B2 (ja) 多重会話処理制御方式
JPH0344328B2 (ja)
JPS59180744A (ja) リエントラントプログラムの作業領域管理方式
JPH05143422A (ja) 更新後ジヤーナル管理方式
JPH02226429A (ja) 情報処理装置
KR100280404B1 (ko) 디에스피에서의 다중 인터럽트 서비스 루틴 지원방법
JP2000242524A (ja) プロセッサのソフトウエアシミュレータ
JPH07107666B2 (ja) 計算機システム
JPH01118930A (ja) 計算機システム
JPH01267731A (ja) セグメントオーバレイプログラムの作成方式
JP2000035882A (ja) 関数呼び出しの手順を動的に変更する方法
JPH04147340A (ja) データ管理呼出方式
JPS63155338A (ja) プログラム実行履歴記録制御方式
JPS6358565A (ja) 処理内容変更装置
JPH0327443A (ja) マイクロコントローラ
JPH05303493A (ja) 命令列切り替え方法及びそれを用いた演算プロセッサ
JPH0675757A (ja) 仮想空間常駐プログラムのリンク方式
JPH03105527A (ja) パイプライン計算機におけるプログラムカウンタの構成方式