JPS629932B2 - - Google Patents

Info

Publication number
JPS629932B2
JPS629932B2 JP55056522A JP5652280A JPS629932B2 JP S629932 B2 JPS629932 B2 JP S629932B2 JP 55056522 A JP55056522 A JP 55056522A JP 5652280 A JP5652280 A JP 5652280A JP S629932 B2 JPS629932 B2 JP S629932B2
Authority
JP
Japan
Prior art keywords
instruction
register
stack
address
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
JP55056522A
Other languages
English (en)
Other versions
JPS56153450A (en
Inventor
Shunichiro Nakamura
Hisazumi Ueda
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP5652280A priority Critical patent/JPS56153450A/ja
Publication of JPS56153450A publication Critical patent/JPS56153450A/ja
Publication of JPS629932B2 publication Critical patent/JPS629932B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

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

Description

【発明の詳細な説明】 この発明はデータ処理装置に関し、特に
COBOL言語におけるPERFORM文の処理に関す
るものである。
COBOL言語のPERFORM文とはプログラム実
行の流れを変える命令の一種であつて、記載され
た手続き名の範囲のプログラムを実行すべきこと
を示す文である。第1図はCOBOL言語によるプ
ログラムの一例からPERFORM文を含む部分を
抽出したプログラム図であつて、図の左側にa,
b,c,d,eと略記されているものはそれぞれ
の手続き名を表している。
第1図に示すプログラムを実行していて、最初
のPERFORM文に達すると、そのPERFORM命
令で示された範囲のプログラム、すなわち手続き
bと手続きcの範囲の文が実行され、(第1図中
101の矢印で示されるように進んでその間に点
線で示されている部分に対応する手続きが実行さ
れる)その後はその次のPERFORM文に進む。
プログラムの実行が2番目のPERFORM文に達
すると第1図中102の矢印で示されるように進
んでその間に点線で示されている部分に対応する
手続き、すなわち、手続きa、手続きb、手続き
c、及び手続きdが実行きれ、その後その
PERFORM文の次の文に進む。PERFORM a
THRU dが終るとその次のプログラム、すなわ
ち手続きaに進み、手続きa〜dが実行され、つ
いで手続きeのプログラムが実行され更に第1図
には示されていない下方のプログラムへと進んで
行く。
このように、COBOL言語のPERFORM文は一
般のサブルーチンコール(subroutine call)とは
機能が少し異なつており、PERFORM文のよう
な機能を一般に内部サブルーチン機能と呼んでい
る。COBOL言語で書かれたプログラム、すなわ
ちソースプログラム(source program)は
COBOLコンパイラによつて機械語に翻訳されて
オブジエクトプログラム(object program)と
なるが、PERFORM文を翻訳するときは一般の
サブルーチンコールと異なり、たとえば第1図の
例で手続きcを実行した後、PERFORM b
THRU c文で呼ばれて手続きcに来たのか又は
それ以外で手続きcに来たのかを判断し、前者の
場合は呼ばれた先に戻り、後者の場合には分岐せ
ず次の文に行くようにオブジエクトコードを作成
しなければならない。
従来のデータ処理装置においてCOBOL言語の
PERFORM文の上述の機能を満すためには
COBOLコンパイラで作成されるオブジエクトプ
ログラムが複雑なものになるという欠点があつ
た。第2図は従来のデータ処理装置におけるソー
スプログラムとオブジエクトプログラムとの対応
の一例を示すプログラム図であつて、図の左側の
部分はCOBOL言語のプログラムを示し、右側の
部分はそれに対応してCOBOLコンパイラが作成
した機械語のプログラムを示す。機械語のプログ
ラムについては従来一般に知られているので第2
図についての説明は省略するが、第2図から明ら
かなように従来のデータ処理装置では
PERFORM文に対して多くの機械語プログラム
を必要とし、このためたとえばオブジエクトプロ
グラムのサイズが大きくなりかつその実行時間が
遅くなるという欠点があつた。
この発明は従来の装置における上述の欠点を除
去することを目的としてなされたもので、このた
めこの発明ではCOBOL言語のPERFORM文を実
行するために、この明細書で仮にperform命令、
return命令と称するそれぞれの機械命令を設けて
PERFORM文を実行するようにし、これらの機
械命令を処理するに適した回路を付加したもので
ある。このperform命令は分岐先サブルーチンへ
飛ぶ機械命令であり、return命令は分岐先サブル
ーチンから戻る機械命令である。
以下、図面についてこの発明の実施例を説明す
る。第3図はこの発明に用いられる機械命令の一
例を示すフオーマツト図で、第3図aはperform
命令、第3図bはreturn命令を示す。なお小円内
の数字はビツト番号を示す。(以下の図面におい
ても同様である。)perform命令は〜の32ビ
ツトの命令長を持ち〜の8ビツトが命令コー
ド、〜の8ビツトがIDフイールドとよばれ
る定数フイールドであり、〜がオペランドフ
イールドであり、このオペランドは分岐先きアド
レスの算出に用いられる。return命令は〜の
16ビツトの命令長を持ち〜の8ビツトが命令
コード、〜の8ビツトがIDフイールドであ
る。
第4図はこの発明の一実施例を示すブロツク図
で、この発明のデータ処理装置の綜合構成のうち
から発明の説明に必要な部分だけを示す。第4図
において1は主メモリ装置、2はこの主メモリ装
置1に対する書込み/読出しを制御する主メモリ
制御回路、3は命令アドレスレジスタ
(instruction address register,以下IARと略記
する)、4は命令レジスタ(instruction
register,以下IRと略記する)、5はアドレスア
ダ(address adder.以下ADDERと略記する)、
6はスタツク制御回路、7はトツプオブスタツク
ポインタ(top―of―stack pointer,以下STPと
略記する)、8はトツプオブスタツクレジスタ
(top―of―stack register,以下TSRと略記す
る)、9はデコーダ及びシーケンサ(decoder
and sequencer,以下DECと略記する)、10は
アドレスインクレメンタ(address
incrementer,以下INCと略記する)、11は比較
回路(comparator,以下COMPと略記する)で
ある。
次に第4図に示す装置の動作を説明する。最
初、ADDER5又は図に示してない他の演算ユニ
ツト等から命令アドレスがIAR3にセツトされ
る。IAR3の内容が主メモリ制御回路2に送られ
主メモリ装置1内のそのアドレスに記憶されてい
る命令がIR4に読出される。IR4に読出された
命令はDEC9によりデコードされて実行され
る。この命令が分岐関係の命令でない場合には、
INC10によつてIAR3の内容をインクレメント
しこのインクレメントしたアドレスに対応する次
の命令がIR4に取出され実行される。すなわち
分岐関係以外の命令に対する第4図の装置の動作
は従来の装置の動作と同様であり、以上のように
して第4図の装置により機械語のプログラムが実
行される。
機械語のperform命令、return命令がIR4に読
出された場合の動作を説明する前にスタツク制御
回路6の動作を説明する。第4図に示す実施例で
はスタツクは主メモリ装置1中に存在し、そのス
タツクの先頭アドレスはSTP7にセツトされ、主
メモリ装置1中のスタツクの先頭の内容の写しが
TSR8にセツトされる。後で説明するが12は
push制御信号の信号線、13はpull制御信号の信
号線で、DEC9からpush制御信号が与えられる
とスタツク制御回路6はpushするデータをTSR
8に取込み、STP7をインクレメントしこのアド
レスで主メモリ装置1にTSR8の内容をストア
する。DEC9からpull制御信号が与えられるとス
タツク制御回路6はSTP7をデクリメントし、そ
のアドレスで主メモリ装置1からデータを読出
し、TSR8にセツトする。
さて、第3図aに示すperform命令がIR4にセ
ツトされると、その〜の命令コードがDEC
9によつて解読されperform命令であることが認
められ信号線14からの信号でINC10を制御し
てIAR3の内容を所定の値だけインクレメントす
る。次にpush制御信号がオンとなるが、これに
よりIR4の〜の内容すなわちIDフイールド
はデータ線15を経てTSR8の〜に、IAR3
の〜の内容はデータ線16を経てTSR8の
〜にセツトされる。TSR8の〜の部分
を仮に第1の部分、〜の部分を仮に第2の部
分という。又STP7はインクリメントされTSR
8の内容が主メモリ装置1のスタツクの先頭アド
レスの内容としてセツトされる。
IR4の〜の内容はADDER5に入り計算さ
れた分岐先アドレス24ビツトがデータ線17を通
つてIAR3にセツトされ、このアドレスにより、
主メモリ装置から次の命令(分岐先の命令)が
IR4に読出される。次に分岐関係の命令が来る
までは第4図の装置の動作は従来の装置の動作と
同様である。
第3図bに示すreturn命令がIR4にセツトされ
ると、DEC9によりreturn命令であることが認
められ、COMP11の出力が調べられる。COMP
11の両入力はIR4の〜すなわち定数フイ
ールド(IDフイールド)とTSR8の〜すな
わち第1の部分であるが、両者が等しいことはこ
のreturn命令がさきのperform命令に対応するも
のであることを意味する。両者が等しくなかつた
時には、信号線14からの信号でINC10を制御
してIAR3の内容を所定の値だけインクレメント
し、次の命令をIR4に取出して実行する。
両者が等しかつた場合には信号線18からの信
号でTSR8の〜の24ビツトをIAR3にセツト
する。このセツトされたアドレスにより主メモリ
装置1から次の命令すなわち復帰先の命令がIR
4に読出される。又DECからはpull制御信号が信
号線13を介してスタツク制御回路6に送られ先
に説明したスタツクのpull操作が行われる。
この発明のデータ処理装置では機械命令の
perform命令とreturn命令とが上述のようにして
実行されるが、このperform命令、return命令を
使うとCOBOL言語のPERFORM文に対応するオ
ブジエクトプログラムは極めて簡単になる。
COBOLコンパイラは最初にオールゼロデータ
(all zero deta)をスタツクにpushする機械命令
を作成しておく。その後は各PERFORM文に対
しperform命令及びreturn命令の2つの機械語を
作成すればよい。但し複数のPERFORM文によ
つて同一の復帰点が指定される時は、その復帰点
では共通に1つのreturn命令でよい。
第5図はこの発明のデータ処理装置におけるソ
ースプログラムとオブジエクトプログラムとの対
応の一例を示すプログラム図である。COBOLコ
ンパイラはCOBOLプログラムの各復帰点に対し
て個有なIDフイールドのビツトパターンを割付
ける。ここで復帰点とはPERFORM a THRU
bにおいて手続きbの最後のこと又は
PERFORM aにおいて手続きaの最後のことを
いう。第5図の手続きbの終りにはID1というプ
ログラム内での各復帰点を個別に認別するための
IDのピツトパターンが割付けられている。
第5図のオブジエクトプログラムでperform命
令によりID1とこの命令の次の機械命令のアドレ
スがスタツクにpushされEのアドレスに分岐す
る。returm命令に到達すると、このretum命令で
指定されるID1とスタツクの先頭に入つているID1
が等しい為スタツクから復帰先アドレスをpullし
てperform命令の次のアドレスに分岐する。一方
通常のシーケンス、又はPERFORM x THRU
yにおいてy≠bのような別のPERFORM文に
よつて手続きbを通過する場合はスタツクの先頭
にはそれぞれO又はID1と異なるIDが入つている
為分岐は起らない。第5図で手続きa又は手続き
bの中でPERFORM c THRU dのような別
のPERFORM文がある場合にはPERFORM c
THRU dが行われた時点でスタツクの内容は第
6図に示すようになる。第6図でID2は手続きd
の最後に割付けられたIDである。第6図に示さ
れた状態のスタツクはその後手続きdの最後にお
いてreturn命令によりpullされID2の行がなくな
りID1の行がトツプオブスタツクとなり、次に手
続きbの最後においてreturn命令によりpullされ
ることによりプログラムは正しく実行されてゆ
く。以上のように、この発明のデータ処理装置で
はCOBOL言語のPERFORM文がわずかの機械命
令で実行できる。なおこの発明はCOBOL言語の
PERFORM文に限らず同様な制御を行う一般の
内部サブルーチン機能に対し効果的な手段を提供
できることは明らかである。
以上の説明から明らかなように、この発明によ
れば、データ処理装置に簡単な回路を付加して
perform命令とreturn命令との実行機能を具備さ
せたことにより、たとえばCOBOL言語の
PERFORM文のような内部サブルーチン機能を
極めて小数の機械命令で実行でき、コンパイラの
サイズの減少、コンパイラの実行時間の減少、コ
ンパイラの開発期間と開発に要する人員の減少、
オブジエクトプログラムのサイズの減少、オブジ
エクトプログラムの実行時間の減少等の実用的効
果を得ることができる。
【図面の簡単な説明】
第1図はCOBOL言語によるプログラムの一例
を示すプログラム図、第2図は従来のデータ処理
装置におけるソースプログラムとオブジエクトプ
ログラムの対応の一例を示すプログラム図、第3
図はこの発明に用いられる機械命令の一例を示す
フオーマツト図、第4図はこの発明の一実施例を
示すブロツク図、第5図はこの発明のデータ処理
装置におけるソースプログラムとオブジエクトプ
ログラムの対応の一例を示すプログラム図、第6
図はスタツク内容の一例を示すフオーマツト図で
ある。 図において、1は主メモリ装置、2は主メモリ
制御回路、3は命令アドレスレジスタ(IAR)、
4は命令レジスタ(IR)、5はアドレスアダ
(ADDER)、6はスタツク制御回路、7はトツプ
オブスタツクポインタ(STP)、8はトツプオブ
スタツクレジスタ(TSR)、9はデコーダ及びシ
ーケンサ(DEC)、10はアドレスインクレメン
タ(INC)、11は比較回路(COMP)である。

Claims (1)

    【特許請求の範囲】
  1. 1 主メモリ装置と、この主メモリ装置から命令
    語を読出すためのアドレスをセツトする命令アド
    レスレジスタと、この命令アドレスレジスタから
    のアドレスで読出された命令語をセツトする命令
    レジスタと、この命令レジスタの出力を解読して
    当該命令語によつて定められた処理を行いかつ上
    記命令アドレスレジスタの内容の変更を制御する
    デコーダ及びシーケンサと、スタツクの先頭アド
    レスがセツトされるトツプオブスタツクポインタ
    と、このトツプオブスタツクポインタが示すアド
    レスのスタツクの内容の写しがセツトされるトツ
    プオブスタツクレジスタと、このトツプオブスタ
    ツクレジスタの第1の部分の内容と上記命令レジ
    スタの定数フイールドの内容とを入力してこの両
    入力を比較する比較回路と、上記命令レジスタの
    オペランドの内容に従つて上記命令アドレスレジ
    スタの内容を変更するアドレスアダと、上記命令
    レジスタにperform命令がセツトされたとき上記
    デコーダ及びシーケンサの制御によつて上記命令
    レジスタの上記定数フイールドの内容を上記トツ
    プオブスタツクレジスタの上記第1の部分に入力
    し上記アドレスアダによつて変更された上記命令
    アドレスレジスタの内容を上記トツプオブスタツ
    クレジスタの第2の部分に入力し上記トツプオブ
    スタツクポインタをインクレメントし上記トツプ
    オブスタツクレジスタの内容を先頭アドレスのス
    タツクに入力する手段と、上記命令レジスタに
    returm命令が読出されたとき上記比較回路の出
    力がその両入力の一致を示す場合は上記デコーダ
    及びシーケンサの制御によつて上記トツプオブス
    タツクレジスタの上記第2の部分の内容を上記命
    令アドレスレジスタにセツトする手段とを備えた
    ことを特徴とするデータ処理装置。
JP5652280A 1980-04-28 1980-04-28 Data processor Granted JPS56153450A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5652280A JPS56153450A (en) 1980-04-28 1980-04-28 Data processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5652280A JPS56153450A (en) 1980-04-28 1980-04-28 Data processor

Publications (2)

Publication Number Publication Date
JPS56153450A JPS56153450A (en) 1981-11-27
JPS629932B2 true JPS629932B2 (ja) 1987-03-03

Family

ID=13029438

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5652280A Granted JPS56153450A (en) 1980-04-28 1980-04-28 Data processor

Country Status (1)

Country Link
JP (1) JPS56153450A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58222347A (ja) * 1982-06-18 1983-12-24 Toshiba Corp スタツク操作監視方法

Also Published As

Publication number Publication date
JPS56153450A (en) 1981-11-27

Similar Documents

Publication Publication Date Title
US4879646A (en) Data processing system with a pipelined structure for editing trace memory contents and tracing operations during system debugging
US4954943A (en) Data processing system
JP3130446B2 (ja) プログラム変換装置及びプロセッサ
US6243786B1 (en) Apparatus and method for generating an interrupt prohibited zone in pipelined data processors
EP0140299A2 (en) Vector mask control system
JPH0523447B2 (ja)
JPH1031595A (ja) シミュレーション装置及びシミュレーション方法
JPS629932B2 (ja)
EP1177499B1 (en) Processor and method of executing instructions from several instruction sources
US5819081A (en) Method of executing a branch instruction of jumping to a subroutine in a pipeline control system
JPS5896345A (ja) 階層型演算方式
KR880000817B1 (ko) 데이터 처리장치 및 그 방법
JPS58200349A (ja) マイクロプログラム制御装置
JP2758624B2 (ja) マイクロプログラムの調速方式
JPS60124746A (ja) デ−タ処理装置
KR950014162B1 (ko) 파이프라인(Pipeline)이 구비된 프로세서에서 간단한 반복명령어의 구현방법
JPS63163543A (ja) 情報処理装置
JPH0512009A (ja) デイジタル信号処理装置
JPH04248624A (ja) プログラム変換処理装置
JPH0667896A (ja) シングルチップマイクロコンピュータ
JPS60220468A (ja) ベクトル演算制御方式
JPS6143347A (ja) ベクトル命令シミユレ−シヨン方法
JPH0259829A (ja) マイクロコンピュータ
JPS61161509A (ja) 高速シ−ケンス演算方式及びその装置
JPS6232540A (ja) 情報処理装置