JPS584371B2 - オブゼクト命令生成における相対アドレス決定方式 - Google Patents
オブゼクト命令生成における相対アドレス決定方式Info
- Publication number
- JPS584371B2 JPS584371B2 JP50040261A JP4026175A JPS584371B2 JP S584371 B2 JPS584371 B2 JP S584371B2 JP 50040261 A JP50040261 A JP 50040261A JP 4026175 A JP4026175 A JP 4026175A JP S584371 B2 JPS584371 B2 JP S584371B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- word
- word length
- relative address
- 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
Links
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】
本発明は同じ機能の命令に対し複数のアドレツシング機
構をもつために複数の命令語長を有する計算機に於ける
オブゼクト命令のアドレス決定力式に関する。
構をもつために複数の命令語長を有する計算機に於ける
オブゼクト命令のアドレス決定力式に関する。
以下の説明では簡単なために1語長、2語長(以下単に
短語/長語という)の2種類の場合であるがそれ以上の
種類かあっても考え方は同じである。
短語/長語という)の2種類の場合であるがそれ以上の
種類かあっても考え方は同じである。
長語/短語の2つの機械語長を持つ計算機、例えは16
ビントを1ワードとする小型計算機(ミニ・コンピュー
タ)に於いて、そのアセンブラ・シヌテムのオブゼクト
(機械語)が長語であるべきか、短語であるべきかの判
定は、従来コーディングの段階でユーザが識別し、指定
をすることにより行っていた。
ビントを1ワードとする小型計算機(ミニ・コンピュー
タ)に於いて、そのアセンブラ・シヌテムのオブゼクト
(機械語)が長語であるべきか、短語であるべきかの判
定は、従来コーディングの段階でユーザが識別し、指定
をすることにより行っていた。
本来、命令語か長語であるべきか短語であるべきかは、
その命令の前後の各命令群の長語/短語がとのようにな
っているかによって決定される。
その命令の前後の各命令群の長語/短語がとのようにな
っているかによって決定される。
従って、ユーザのミヌやプログラムの変更などにより、
本来、長語であるべき命令語が誤って短語と指定された
時には、その誤った指定によって他の命令語の長語/短
語も変化することになり、然も修正すべきプログラムの
作業自体をユーザが請負わなければならず、ユーザ側の
負担を大きくしていた。
本来、長語であるべき命令語が誤って短語と指定された
時には、その誤った指定によって他の命令語の長語/短
語も変化することになり、然も修正すべきプログラムの
作業自体をユーザが請負わなければならず、ユーザ側の
負担を大きくしていた。
この長語/短語の判定及び修正作業をアセンブラ・シヌ
テムにより自動的に行なおうとすると、変化した値が他
の命令のアドレス部へ波及し、なかなかアドレヌが決定
できないという問題があった。
テムにより自動的に行なおうとすると、変化した値が他
の命令のアドレス部へ波及し、なかなかアドレヌが決定
できないという問題があった。
従って本発明の主たる目的はかかる従来の諸欠点をなく
してなるオブゼクト命令のアドレヌ決定方式を提供する
にある。
してなるオブゼクト命令のアドレヌ決定方式を提供する
にある。
すなわちユーザがコーディングする場合、あるいはコン
パイラにおいてオブゼクト命令を生成する場合に特に短
語、長語の指定をしなくても自動的に短語、長語の識別
をし、オブゼクト命令のアドレス決定力式を提供するこ
とにある。
パイラにおいてオブゼクト命令を生成する場合に特に短
語、長語の指定をしなくても自動的に短語、長語の識別
をし、オブゼクト命令のアドレス決定力式を提供するこ
とにある。
本発明の他の目的は長語/短語の決定を効率よくおこな
い、またオブゼクト命令の最適化をも効率よくおこなう
ことを可能とするオブゼクト命令の相対アドレス決定方
式を提供するにある。
い、またオブゼクト命令の最適化をも効率よくおこなう
ことを可能とするオブゼクト命令の相対アドレス決定方
式を提供するにある。
本発明における長語/短語の決定作業の概略は以下のと
おり。
おり。
(イ)先ず、ユーザ・プログラムUP中に於けるひとつ
の命令語(以下、行と称する短語、長語の指定のない命
令語。
の命令語(以下、行と称する短語、長語の指定のない命
令語。
)分の情報をアセンブラ・シヌテムに入力する。
(口)次に、この行が長語とすべきか短語とすべきかを
、この行の前後の各命令群の状況から決定し、その短語
か長語かの決定情報を入力情報UPに付加して出力する
。
、この行の前後の各命令群の状況から決定し、その短語
か長語かの決定情報を入力情報UPに付加して出力する
。
(ハ)この行がユーザ・プログラムの最後の行であれば
作業を終了し、そうでなけれは、(口)の作業を繰り返
す。
作業を終了し、そうでなけれは、(口)の作業を繰り返
す。
以上の一連の走査はユーザ・プログラムの最初の行から
最後の行まで繰り返してゆく。
最後の行まで繰り返してゆく。
但し、ユーザ・プログラムに対して1回の走査を行った
だけでは、必すしも最適な決定とはなり得ない。
だけでは、必すしも最適な決定とはなり得ない。
従って、最適化をはかるためには、上記(イ),(0)
,(ハ)の手順よりなる走査を複数回行う必要がある。
,(ハ)の手順よりなる走査を複数回行う必要がある。
しかし、長語/短語の決定が確定したものに対しては、
(口)の処理は当然実行しない。
(口)の処理は当然実行しない。
以下、図面により本発明を詳細に説明しよう。
先ず、アセンブラ言語で書かれたアセンブラ命令につい
て説明しよう。
て説明しよう。
アセンブラ命令は計算機の種類や規模に応じて、更には
ソフト上の考慮のもとに何種類か規定される。
ソフト上の考慮のもとに何種類か規定される。
ユーザがアセンブラ言語でプ口グラムを計算機に入力さ
せたい時には、上記アセンブラ命令の組合せによりプロ
グラムを作り、入力させる。
せたい時には、上記アセンブラ命令の組合せによりプロ
グラムを作り、入力させる。
説明の簡単のため、アセンブラ命令をLD(データ読出
)命令と、ST(データ格納)命令、DC(定数定義)
命令、BSS(エリア確保)命令の4種類に限定しよう
。
)命令と、ST(データ格納)命令、DC(定数定義)
命令、BSS(エリア確保)命令の4種類に限定しよう
。
これらの命令か実際にユーザ・プログラムとして使用さ
れる時の形態を第1図に示す。
れる時の形態を第1図に示す。
かかる図に於いて、LD命令・・・・・・メモリ上のア
ドレスを示すアドレヌ欄ADDRで指定されるアドレス M1の内容をアキュムレータへ転送 する。
ドレスを示すアドレヌ欄ADDRで指定されるアドレス M1の内容をアキュムレータへ転送 する。
ST命令・・・・・・アキュムレータの内容をアドレヌ
欄ADDRで指定されるメモリM2土 に転送する。
欄ADDRで指定されるメモリM2土 に転送する。
DC命令・・・・・・プログラムの実行に先立って、ラ
ベル欄LABELで示されるメモリ土の アドレヌL1にアドレヌ欄ADDR で指定された定数Cを設定させるよ う、アセンブラ・シヌテムに対し要 求する命令である。
ベル欄LABELで示されるメモリ土の アドレヌL1にアドレヌ欄ADDR で指定された定数Cを設定させるよ う、アセンブラ・シヌテムに対し要 求する命令である。
BSS命令・・・プログラムの実行に先立ってラベル欄
LABBLで示されるメモリ土のア ドレスL2からアドレス欄ADDR で指定された定数aに相当する語長 分のエリアを確保するようにアセン ブラ・システムに要求する命令であ る。
LABBLで示されるメモリ土のア ドレスL2からアドレス欄ADDR で指定された定数aに相当する語長 分のエリアを確保するようにアセン ブラ・システムに要求する命令であ る。
かかるアセンブラ命令で書かれたユーザ・プログラムを
入力とし、アセンブラ・システムによって処理されて得
られる出力はオブゼクト(機械語,形式となる。
入力とし、アセンブラ・システムによって処理されて得
られる出力はオブゼクト(機械語,形式となる。
オブゼクトに変換されて得られるオブゼクト命令には、
短語命令SWと長語命令DWの2つがある。
短語命令SWと長語命令DWの2つがある。
この短語/長語命令の実際のフォーマントをLD命令、
DC命令を例に第2図に示す。
DC命令を例に第2図に示す。
ここではLD命令には短語/長語の2形式を持ち、DC
命令は短語形式のみとする。
命令は短語形式のみとする。
図に於いて、
OP・・・・・・・・・・・・命令の種類(オペランド
)を示す部分であり、第1図に示す命令欄、 COMMの内容からアセンブラ・シ ステムによって2進数の命令コード にデコードされた結果得られる。
)を示す部分であり、第1図に示す命令欄、 COMMの内容からアセンブラ・シ ステムによって2進数の命令コード にデコードされた結果得られる。
F・・・・・・・・・・・・・・・短語か長語かの区別
を示すフラグ部であり、1ビットを占有している。
を示すフラグ部であり、1ビットを占有している。
短語命令では″O″、長語命令では
″1”がセットされる。
DISP・・・・・・この命令の存在するアドレヌから
、第1図で示したアドレス欄ADDR で指定される指定アドレスMまでの 相対アドレス値nをセットする相対 アドレス部である。
、第1図で示したアドレス欄ADDR で指定される指定アドレスMまでの 相対アドレス値nをセットする相対 アドレス部である。
この相対アドレヌ部の占准ビットを例えば8ビント
とした場合、相対アドレス部
DISPの値nは、−128≦n≦
127の範囲となる。
A−ADDR・・・これは相対アドレス部DISPと異
なり、絶対アドレスを示す絶対アド レス部である。
なり、絶対アドレスを示す絶対アド レス部である。
即ち、内容としては指定アドレスのアドレス値そのもの
がセットされる。
例えは、メモリの先頭アドレスをO番地とした時には、
この絶対アドレス部A−ADDRで指
定するアドレスは、メモリの先頭か
ら伺番目のアドレスに相当している
かを示している。
第2図では、短語命令SWを16ビット、長語命令DW
を32ビットとしている。
を32ビットとしている。
更に、相対アドレス部DISPの占有ビットを8ビット
、絶対アドレス部A−ADDRの占有ビントを16ビツ
トとじている0以下ではかかるビット占有状態に基づく
ものとする。
、絶対アドレス部A−ADDRの占有ビントを16ビツ
トとじている0以下ではかかるビット占有状態に基づく
ものとする。
以上の説明から明らかなように、短語か長語かの決定は
相対アドレヌによつて定まる。
相対アドレヌによつて定まる。
即ち、相対アドレスが第2図で示した相対アドレス部D
ISPのnの制限値である−128≦n≦127内にあ
れば、その命令は短語形式となり、その範囲を越えれば
、長語形式となる。
ISPのnの制限値である−128≦n≦127内にあ
れば、その命令は短語形式となり、その範囲を越えれば
、長語形式となる。
短語形式になった時の実効アドレスE−ADDRは、
E−ADDR−(PC)+n ・・・・・・{1
)と表わされる。
)と表わされる。
PCは現在実行中のプログラム命令の次の番地を記憶し
ているプログラムカウンタであり、(PC)はそのカウ
ンクPCの内容を示す。
ているプログラムカウンタであり、(PC)はそのカウ
ンクPCの内容を示す。
nは相対アドレス値である。長語形式になった時の実効
アドレスE−ADDRは、 E−ADDR−(A−ADDR) ・・・・・・(
2)となる。
アドレスE−ADDRは、 E−ADDR−(A−ADDR) ・・・・・・(
2)となる。
(A−ADDR)は絶対アドレス部A−ADDRの表示
内容を意味する。
内容を意味する。
尚、短語形式となるDC命令のオブゼクト形式は第2図
に示すように、第1図に示したアドレヌ欄ADDRに指
示した値Cがデータ部DATAに2進数として設定され
ることになっている。
に示すように、第1図に示したアドレヌ欄ADDRに指
示した値Cがデータ部DATAに2進数として設定され
ることになっている。
次に本発明の実施例を第3〜第5図により説明する。
本発明の主たる構成要素は入力部ITと入力属性部NA
MET(主としてラベル登録テーブル部)とより成る。
MET(主としてラベル登録テーブル部)とより成る。
先ず入力部を第3図により説明しよう。
この入力部は、ユーザ・プログラムUPと、該プログラ
ムに基づきアセンブラ・システムが作成したアドレス・
テーブルLACT,フラグ・テーブルFTより成立つ。
ムに基づきアセンブラ・システムが作成したアドレス・
テーブルLACT,フラグ・テーブルFTより成立つ。
ユーザ・プログラムUP・・・先に説明したように1ア
センブラ言語で書かれた命令によりプ ログラムされたものである。
センブラ言語で書かれた命令によりプ ログラムされたものである。
アドレス・テーブルLACT・・・ユーザ・プログラム
UPの各命令(いわゆる“行”) に対し、その行のアドレヌ値を記憶 しておくテーブルであり、命令実行 時のプログラム・カウンタPCの内 容(pc)に相当する値を持つ。
UPの各命令(いわゆる“行”) に対し、その行のアドレヌ値を記憶 しておくテーブルであり、命令実行 時のプログラム・カウンタPCの内 容(pc)に相当する値を持つ。
図で■なる表示は長語/短語の区別が正
式に定まらない、いわゆる仮のアド
レスを意味しており、■なる表示は
長語/短語の区別が正式に定まった
状態下での修正されたアドレヌヲ意
味している。
このアドレス・テーブルLACTの内容は当然のことな
が ら、アセンブラ・シヌテムの処理の 過程で変化してくる。
が ら、アセンブラ・シヌテムの処理の 過程で変化してくる。
フラグ・テーブルFT・・・アセンブラ・システムのオ
ブゼクトとなる機械語を短語命令 にするか、長語命令にするかを記録 しておくテーブルであり、短語命令 の時には、″0”が設定され、長語 命令の時には、′1”が設定される ■,■なる表示は、アドレス・テー ブルLACTで述べたことと同様の 意味を持つ。
ブゼクトとなる機械語を短語命令 にするか、長語命令にするかを記録 しておくテーブルであり、短語命令 の時には、″0”が設定され、長語 命令の時には、′1”が設定される ■,■なる表示は、アドレス・テー ブルLACTで述べたことと同様の 意味を持つ。
次に、入力属性部を第4図により説明しよう。
この入力属性部は、ユーザ・プログラムUP中のラベル
欄LABELの表示内容に対し、アセンブラ・システム
が作成したラベル登録テーブル NAMET,テーブル・ポインタNAPより成る。
欄LABELの表示内容に対し、アセンブラ・システム
が作成したラベル登録テーブル NAMET,テーブル・ポインタNAPより成る。
ラベル登録テーブルNAMET・・・ユーザ・プログラ
ムUPのラベル欄LABELの表示 ラベルを示すラベルmLABEL2と そのアドレヌを示すADDR2及びエ ントリENTRYより成る。
ムUPのラベル欄LABELの表示 ラベルを示すラベルmLABEL2と そのアドレヌを示すADDR2及びエ ントリENTRYより成る。
エントリENTRYはラベル登録テーブル
NAMETの登録順序を示すものであ
り、1,2,3・・・・・・の如き数字より成る。
ラベル部LABEL2にはユーザ・プログラムUP中の
ラベル欄に あらわれたラベルが順番に設定され る。
ラベル欄に あらわれたラベルが順番に設定され る。
■,■は、前述と同様、修正前の値、修正後の値である
。
。
テーブル・ポインタNAP・・・ラベル登録テーブルN
AMETのテーフル・ポインタとし て使用され、1語(例えば16ビツ ト)の占有ビットより成る。
AMETのテーフル・ポインタとし て使用され、1語(例えば16ビツ ト)の占有ビットより成る。
実際に設定される値は、現在処理中の行
(命令)以前に現われたラベル欄の
ラベルの中で、最新のラベルのエン
トリENTRYの内容である。
従って図によれば、現在処理中の行は12
ということになる。
尚第3図、第4図以降における(())なる表示は修正
前の値、()は修正予定の値、それ以外の表示即ち((
))()の両方に属しない値は現在処理中の時点に於け
る値である。
前の値、()は修正予定の値、それ以外の表示即ち((
))()の両方に属しない値は現在処理中の時点に於け
る値である。
また第3図の右側に示されているLACI,LAC2に
関する部分は後述する。
関する部分は後述する。
第5図は本発明の具体的実施例である。
入力部ITおよび入力属性部NAMETは記憶装置より
成り、その初期状態を第6図a,Cに示す。
成り、その初期状態を第6図a,Cに示す。
入力属性部NAMETはエントリENTRYを有してい
る点で第4図に示すそれと若干異なっているが、これは
説明は分り易くするために設けたものであり本実施例で
は、エントリENTRY部を省略し別の機能によって代
替している(後述)。
る点で第4図に示すそれと若干異なっているが、これは
説明は分り易くするために設けたものであり本実施例で
は、エントリENTRY部を省略し別の機能によって代
替している(後述)。
第6図Cでは説明を分り易くするためにこれを点線部分
で示した。
で示した。
第6図aはITの、CはNAMETの初期状態を、bは
LACの、dはNAPの初期状態を示す。
LACの、dはNAPの初期状態を示す。
入力部IT,入力属性部NAMETの初期状態は、一般
にユーザソースプログラムを解析する言語処理プロセッ
サのラベル解析部(表示は省略)の出力として得られる
ものである。
にユーザソースプログラムを解析する言語処理プロセッ
サのラベル解析部(表示は省略)の出力として得られる
ものである。
本実施例では、この他に、入力部ITのアドレヌ指定を
行うフ節グラムカウンタPC、人力部ITの読出し出力
を一時記憶するレジヌタITR,前記レジヌタの中のラ
ベルの有無を検知するラベル検知器DET2、アンドゲ
ートA2、アドレステーブルLACTの内容を一時的に
取り込むレジスタLAC1、短語/長語の判定に伴って
内容が変更されてゆくレジヌタLAC2、及び該レジス
タLAC2を+1する加算回路LADD1、及びレジス
タLAC2を+2する加算回路LADD2、プログラム
の全行終了か否かの判定に使用するレジヌタLAC3よ
り成る。
行うフ節グラムカウンタPC、人力部ITの読出し出力
を一時記憶するレジヌタITR,前記レジヌタの中のラ
ベルの有無を検知するラベル検知器DET2、アンドゲ
ートA2、アドレステーブルLACTの内容を一時的に
取り込むレジスタLAC1、短語/長語の判定に伴って
内容が変更されてゆくレジヌタLAC2、及び該レジス
タLAC2を+1する加算回路LADD1、及びレジス
タLAC2を+2する加算回路LADD2、プログラム
の全行終了か否かの判定に使用するレジヌタLAC3よ
り成る。
更に、レジヌタLAC2の内容の有無を検出する検出器
DET1、アンドゲートA1、比較回路COMP1,C
OMP2,COMP3,COMP4,COMP5,CO
MP6,COMP7より成る。
DET1、アンドゲートA1、比較回路COMP1,C
OMP2,COMP3,COMP4,COMP5,CO
MP6,COMP7より成る。
入力属性部NAMETのエントリを指定するレジスタN
AP1、及びこのレジスタNAP1を補助するレジスタ
NAP2,NAP3、加算回路ADD1より成る。
AP1、及びこのレジスタNAP1を補助するレジスタ
NAP2,NAP3、加算回路ADD1より成る。
更に、ヰ実施例では、入力属性部NAMETのアドレス
の内容を一時記憶するレジヌタNAMETR,及び短詳
/長語によって゛0”か”1″かのデータを出丈する短
語検出器SFT,長語検出器DFT,中間出力部MT,
該出力部MTのアドレヌの内容を一時記憶するレジスタ
MTR,出力変換部MI、吊力部OTより成る。
の内容を一時記憶するレジヌタNAMETR,及び短詳
/長語によって゛0”か”1″かのデータを出丈する短
語検出器SFT,長語検出器DFT,中間出力部MT,
該出力部MTのアドレヌの内容を一時記憶するレジスタ
MTR,出力変換部MI、吊力部OTより成る。
入力部ITおよび入力属性部NAMETの初期状態は第
6図alCに示した通りであり、フラグ.テーブルFT
には短語が絶対的に確定する命令(DC命令)に対して
は”0”が、長語であることか絶対的に確定している命
令(本実施例では≠示せず)には”1”が設定され、ま
た短語/長詔未定の命令は無条件に長語命令として扱い
”1”が設定されている。
6図alCに示した通りであり、フラグ.テーブルFT
には短語が絶対的に確定する命令(DC命令)に対して
は”0”が、長語であることか絶対的に確定している命
令(本実施例では≠示せず)には”1”が設定され、ま
た短語/長詔未定の命令は無条件に長語命令として扱い
”1”が設定されている。
これに基ついてLACTの初期状態が設定されている。
この初期状態に対応したLAC1〜3,NAP1〜3の
初期状態を第6図b,dに示す。
初期状態を第6図b,dに示す。
ここでLAC3には第6図aのITの最後の行■に対応
したLACTの内容がセットされるものとする。
したLACTの内容がセットされるものとする。
なお第6図dには参考のために第4図に対応したNAP
の初期状態も示している( )o 更に、ラベル登録テーブルNAMETには、以上の設定
にあわせてラベルLABEL2にユーザ・プログラムU
P中のラベルLABEL1が登録され且つそれに相当す
るアドレスかアドレス部ADDR2に設定される。
の初期状態も示している( )o 更に、ラベル登録テーブルNAMETには、以上の設定
にあわせてラベルLABEL2にユーザ・プログラムU
P中のラベルLABEL1が登録され且つそれに相当す
るアドレスかアドレス部ADDR2に設定される。
以上の前提条件のもとでNo=■まで処理され、No一
■かこれから処理されるものとする。
■かこれから処理されるものとする。
この時の入力部■T1人力属性部NAMETは第I図a
,cの如きアドレス状態となるO 第γ図a〜dは「A LD M」(No−■)のラベル
処理の説明図である。
,cの如きアドレス状態となるO 第γ図a〜dは「A LD M」(No−■)のラベル
処理の説明図である。
LAC2の値をLACTへ,LAC2の値をNAMET
のラベルAに対応したADDR2へ転送する。
のラベルAに対応したADDR2へ転送する。
No=■のラベル処理開始前の状態は、No一■,■の
処理でLACTは初期状態(750),(soo))か
ら700,730へそれそれ修正されている。
処理でLACTは初期状態(750),(soo))か
ら700,730へそれそれ修正されている。
腐=■の処理でLACTは初期状態900から語長調整
結果の820に修正されようとしている。
結果の820に修正されようとしている。
LAC1〜3の状態は第γ図bのとおりである。
次に変化したLACT(=LAC2)の内容をNAME
Tヘセットする。
Tヘセットする。
ラベルADDR2を登録する場合、論理的にはNAPレ
ジヌタがあればNAMETのトップから走査しなくとも
NAPレジスタの内容で示される次のエントリが当該ラ
ベルになるが、第5図の実施例では回路を簡単化(共通
化)したために毎回トップから走査する方式をとってい
る。
ジヌタがあればNAMETのトップから走査しなくとも
NAPレジスタの内容で示される次のエントリが当該ラ
ベルになるが、第5図の実施例では回路を簡単化(共通
化)したために毎回トップから走査する方式をとってい
る。
さて、第1図aにおいてNo一■の処理はプログラム・
カウンタPC(第5図)によるアドレヌ指定により開始
される。
カウンタPC(第5図)によるアドレヌ指定により開始
される。
このカウンタPCの指示するアドレスは、No=■を示
しており、その結果、レジスタITRには、No一■に
対応するユーザープログラムUPとして「A LD M
」、ロケーション・テーブルLACTとして「900」
、フラグ・テーブルFTとして「1」が夫々読出し設定
される。
しており、その結果、レジスタITRには、No一■に
対応するユーザープログラムUPとして「A LD M
」、ロケーション・テーブルLACTとして「900」
、フラグ・テーブルFTとして「1」が夫々読出し設定
される。
次いでこのレジスタITRの中のロケーション・テーブ
ルLACTの内容はレジヌタLAC1に転送される。
ルLACTの内容はレジヌタLAC1に転送される。
次に、No一■までの処理においてLACTの仮の内容
を最新の調整結果に置きかえをおこなうためにレジヌタ
LAC2にアドレスが記憶されているかどうかをアトレ
ス検出器DETIによって検出する。
を最新の調整結果に置きかえをおこなうためにレジヌタ
LAC2にアドレスが記憶されているかどうかをアトレ
ス検出器DETIによって検出する。
アドレヌが設定されていれはアンドゲ−トA1を通して
該レジスタLAC2の内容は先のレジスタITRのロケ
ーション・テーブルLACTへ送られ、記憶される。
該レジスタLAC2の内容は先のレジスタITRのロケ
ーション・テーブルLACTへ送られ、記憶される。
同、このレジスタLAC2の詳細は後述するが、短語/
長語によってその内容が変更されてゆく構成となってい
る。
長語によってその内容が変更されてゆく構成となってい
る。
今、第γ図bではLAC2に「820」かセットされて
いるため、レジヌタITRのアドレス・テーブルLAC
Tにはアドレ】「820Jかセットされることになる。
いるため、レジヌタITRのアドレス・テーブルLAC
Tにはアドレ】「820Jかセットされることになる。
勿論、r820jがセツトされる前に、LACTの内容
はクリアされることは云うまでもない。
はクリアされることは云うまでもない。
この場合LAC1の内容はもとのままである。
次に、レジヌタITRのユーザ・プログラムUPの中の
ラベル部LABLL1にラベルか実際にあるかどうかか
ラベル検出器DET2によって検出される。
ラベル部LABLL1にラベルか実際にあるかどうかか
ラベル検出器DET2によって検出される。
現在処理中のNo一■にはラベル「A」があるため、検
出出力信号を得る。
出出力信号を得る。
この出力信号によってアンドゲートA2か開きレジヌタ
IT,Rのラベル部LABEL1のラベル内容fAJか
比較器COMPIに送られる。
IT,Rのラベル部LABEL1のラベル内容fAJか
比較器COMPIに送られる。
この比較器COMP1へはレジスタNAMETHのラベ
ル部LABEL2の内容が印加されるように構成されて
いる。
ル部LABEL2の内容が印加されるように構成されて
いる。
この二つのラベルが一致しているかどうかが比較器CO
MPIで比較検出され、一致した時にはアンドゲートA
3を開きレジスタLAC 2の内容[820−をレジス
タNAMETRのアドレス部ADDR2に送り、ラベル
登録テーブルNAMETに記憶登録させることになる(
第γ図Cのエントリ12の行)以上の比較器COMP1
の動作過程の中で、レジスタNAMETRのラベル部L
ABEL2の内容はテーブル’NAME’I’の各アド
レスの走査によって順次、変更されてゆく。
MPIで比較検出され、一致した時にはアンドゲートA
3を開きレジスタLAC 2の内容[820−をレジス
タNAMETRのアドレス部ADDR2に送り、ラベル
登録テーブルNAMETに記憶登録させることになる(
第γ図Cのエントリ12の行)以上の比較器COMP1
の動作過程の中で、レジスタNAMETRのラベル部L
ABEL2の内容はテーブル’NAME’I’の各アド
レスの走査によって順次、変更されてゆく。
このことを以下説明する。テーブルNAMETのアドレ
ス走査は、第4図に示すようにエントリレジスタNAP
によって指定されるアドレスによって行われる。
ス走査は、第4図に示すようにエントリレジスタNAP
によって指定されるアドレスによって行われる。
エントリレジスタNAPには、第4図に示される如く、
現在の処理時点でエントリ番号として「11」が設定さ
れている。
現在の処理時点でエントリ番号として「11」が設定さ
れている。
第5図ではこれに対応する数字は、NAPIに記憶され
ているがNAMETの走査開始に当って先ずレジヌタN
AP3に一時保持され代りにレジヌタNAP2に記憶さ
れているテーブルNAMETの先頭アドレヌがレジスタ
NAP1にセットされる。
ているがNAMETの走査開始に当って先ずレジヌタN
AP3に一時保持され代りにレジヌタNAP2に記憶さ
れているテーブルNAMETの先頭アドレヌがレジスタ
NAP1にセットされる。
このレジスタNAP1の内容によってテーブルNAME
Tの先頭アドレスの内容がレジヌタNAMETRに読み
出され、この読み出された内容の中のラベル部LABE
L2が比較器COMPIに送られ比較される。
Tの先頭アドレスの内容がレジヌタNAMETRに読み
出され、この読み出された内容の中のラベル部LABE
L2が比較器COMPIに送られ比較される。
一致がない時には、レジヌタNAP1の内容は加算回路
ADDIを通してNAMETの1エントリに相当する長
さのアドレス分mが加算され、次のエントリーナンバー
に相当するアドレヌがレジスタNAP1に送られ、テー
ブルNAMETの相当するアドレスの内容が読み出され
る。
ADDIを通してNAMETの1エントリに相当する長
さのアドレス分mが加算され、次のエントリーナンバー
に相当するアドレヌがレジスタNAP1に送られ、テー
ブルNAMETの相当するアドレスの内容が読み出され
る。
次いで同様の比較が行われる。以下、順次走査をしてゆ
き、その走査の過程で一致が得られた時には、前述した
ようにアンドゲートA3を開き、レジスタLAC2の内
容をその一致したアドレスのアドレス部ADDR2に書
込み、登録させる(これにより第γ図Cのエントリ12
が900から820に変化する。
き、その走査の過程で一致が得られた時には、前述した
ようにアンドゲートA3を開き、レジスタLAC2の内
容をその一致したアドレスのアドレス部ADDR2に書
込み、登録させる(これにより第γ図Cのエントリ12
が900から820に変化する。
)。以上の走査過程は、これをプログラムによっておこ
なう場合は必ずしも必要ではない。
なう場合は必ずしも必要ではない。
すなわち、第4図に示すように、現在のエントリーナン
バーが「11」として設定されている場合には、次のラ
ベルが何であるかはエントリーナンバー「12」をみれ
ばよい(なぜなら、NAMETのLABEL2部にはU
PのLABELがそれがでてくる順に記憶されているた
めNo=■を処理したときにNAP=11となりNo=
■までの間のUPにLABELが存在しない場合はNA
P=12にNo■のLABELが存在することになるた
めである。
バーが「11」として設定されている場合には、次のラ
ベルが何であるかはエントリーナンバー「12」をみれ
ばよい(なぜなら、NAMETのLABEL2部にはU
PのLABELがそれがでてくる順に記憶されているた
めNo=■を処理したときにNAP=11となりNo=
■までの間のUPにLABELが存在しない場合はNA
P=12にNo■のLABELが存在することになるた
めである。
)。従って、こうした場合には、テーブルNANETの
全アドレスを走査する必要はなく、ラベルの有無の判定
、即チラベル「A」がエントリーナンバー「12」にあ
るかどうかだけをみればよいことになる。
全アドレスを走査する必要はなく、ラベルの有無の判定
、即チラベル「A」がエントリーナンバー「12」にあ
るかどうかだけをみればよいことになる。
勿論、本実施例では、エントリーナンバーの代りに、ア
ドレヌによって指定されており、エントリーナンバーそ
のものではないため、上記走査過程を必要とするのであ
る。
ドレヌによって指定されており、エントリーナンバーそ
のものではないため、上記走査過程を必要とするのであ
る。
本実施例でNAPを用いなかったのは前に述べたように
第5図SC部を第γ図に述べる処理と、第8図に述べる
処理(後述)の間で共用化する都合上によるもので、結
果はいずれのやり方をとっても同じである。
第5図SC部を第γ図に述べる処理と、第8図に述べる
処理(後述)の間で共用化する都合上によるもので、結
果はいずれのやり方をとっても同じである。
比較の終了後、レジヌタNAP3に一時記憶されたデ一
夕であるエントリーナンパー11に相当するアドレヌは
レジヌタNAP1にセットされる。
夕であるエントリーナンパー11に相当するアドレヌは
レジヌタNAP1にセットされる。
次いで、レジスタITRのユーザ・プログラムUPのア
ドレス部ADDR1とテーブルNAMETの各アドレヌ
のラベル部LABEL2の内容との比較が比較器COM
P2によって行われる(第8図)。
ドレス部ADDR1とテーブルNAMETの各アドレヌ
のラベル部LABEL2の内容との比較が比較器COM
P2によって行われる(第8図)。
この比較に際してはテーフルNAMETの各アドレスが
走査される(第8図a)。
走査される(第8図a)。
第5図においてこの走査は先の走査と同じようにレジス
タNAP1の内容がレジヌタNAP3に一時記憶され、
テーブルNAMETの先頭アドレヌはレジスタNAP2
の内容によって指定されNAP1へ転送される。
タNAP1の内容がレジヌタNAP3に一時記憶され、
テーブルNAMETの先頭アドレヌはレジスタNAP2
の内容によって指定されNAP1へ転送される。
COMP2の比較によって一致出力が得られないときに
必要になるテーブルNAMETの上記先頭アドレス以降
のアドレスは、十mを加算する加算回路ADD1を通し
て得られるアドレスによって設定される。
必要になるテーブルNAMETの上記先頭アドレス以降
のアドレスは、十mを加算する加算回路ADD1を通し
て得られるアドレスによって設定される。
かかる走査の過程で、比較器COMP2で一致が祷られ
た時には、一致信号か出力され、比較器COMP3を作
動させる。
た時には、一致信号か出力され、比較器COMP3を作
動させる。
この比較器COMP3は第8図aのNAMET上におい
てエントリーナンバー1から前回処理されたエントリー
ナンバー11までのアドレヌ走査で一致が得られるか、
或いは、エントリーナンバー12以降の走査で一致か得
られるかの判定を行うものである。
てエントリーナンバー1から前回処理されたエントリー
ナンバー11までのアドレヌ走査で一致が得られるか、
或いは、エントリーナンバー12以降の走査で一致か得
られるかの判定を行うものである。
従って、該比較器COMP3には前回処理されたエント
リーナンバー11に相当するアドレス(レジスクNAP
3に退避されている)と一致が得られた時のレジスタN
AP1のアドレスとが印加され、両者の差をとり、前者
のアドレスが犬きい時には、エントリーナンパー1から
エントリーナンバー11までの間で一致が得られたとし
て出カ信号C。
リーナンバー11に相当するアドレス(レジスクNAP
3に退避されている)と一致が得られた時のレジスタN
AP1のアドレスとが印加され、両者の差をとり、前者
のアドレスが犬きい時には、エントリーナンパー1から
エントリーナンバー11までの間で一致が得られたとし
て出カ信号C。
を発生し、後者のアドレスが大きい時には、エントリー
ナンバー12以後のアドレスで一致が得られたとして出
力信号C1を発生する。
ナンバー12以後のアドレスで一致が得られたとして出
力信号C1を発生する。
本実施例ではUPの同一行中でのLABELIとADD
R1が一致することはないと仮定する。
R1が一致することはないと仮定する。
したかって前者のアドレヌと、後者のアドレヌが一致す
ることはない。
ることはない。
現在、処理中のNo一■では、第8図aのNAMETに
示すようにエントリーナンパー10に相当するアドレス
にrMJが設定されているため出力信号C。
示すようにエントリーナンパー10に相当するアドレス
にrMJが設定されているため出力信号C。
を得る。出力信号C。により比較器COMP4が作動開
始する。
始する。
比較器COMP4には、先に一致が得られた時点でのエ
ントリーナンバーに相当するアドレヌの内容、即ち、レ
ジスタNAMETRに読出されているデータの中のアド
レス部ADDR2のデータ(第8図aのNAMETテー
ブルのLABEL2のMに対応したADDR2であり、
700となっている)と、レジスタLAC2のデータ(
第8図bのレジスタLAC2の内容であり820)とが
入力されており、先に述べた相対アドレスDISPの値
n(n=ADDR2−LAC2)が計算される。
ントリーナンバーに相当するアドレヌの内容、即ち、レ
ジスタNAMETRに読出されているデータの中のアド
レス部ADDR2のデータ(第8図aのNAMETテー
ブルのLABEL2のMに対応したADDR2であり、
700となっている)と、レジスタLAC2のデータ(
第8図bのレジスタLAC2の内容であり820)とが
入力されており、先に述べた相対アドレスDISPの値
n(n=ADDR2−LAC2)が計算される。
相対アドレヌDISPが両データの差であり、該比較器
COMP4ではこの差の値nが短語を意味する−128
≦nか、長語を意味するn≦−129のいずれかにある
かの判定を行う。
COMP4ではこの差の値nが短語を意味する−128
≦nか、長語を意味するn≦−129のいずれかにある
かの判定を行う。
短語判定の時には短語指令信号C3を発生し、短語フラ
グ発生器SFTを駆動し、短語用のフラグを発生させる
長語判定の時には、長語指令信号C2を発生し、長語フ
ラグ発生器DFTを,駆動し長語用のフラグを発生させ
る。
グ発生器SFTを駆動し、短語用のフラグを発生させる
長語判定の時には、長語指令信号C2を発生し、長語フ
ラグ発生器DFTを,駆動し長語用のフラグを発生させ
る。
現在処理中のNo=■では相対アドレスDISPの値n
は,n=700−820=120である故、短語の判定
となる。
は,n=700−820=120である故、短語の判定
となる。
短語の判定時には・レジスターTRのフラグ部FTに″
0”をセットし、長語の判定時にはフラグ部FTに″1
”をセツトする。
0”をセットし、長語の判定時にはフラグ部FTに″1
”をセツトする。
本実施例ではFTは″0”がセントされる(第8図bの
ITテーブルのNo=■に対応するFT部)。
ITテーブルのNo=■に対応するFT部)。
一方の前回のエントリーナンバーの次のエントリ−ナン
パー11までの走査の間に一致が得られず、エントリー
ナンバー12以降の走査で一致が得られた時には、出力
信号C1により比較器COMP5を作動させる。
パー11までの走査の間に一致が得られず、エントリー
ナンバー12以降の走査で一致が得られた時には、出力
信号C1により比較器COMP5を作動させる。
この比較器COMP5にはレジスタNAMETRのAD
DR2の内容と更新前のNo=■に対応するLACTの
内容(900)を記憶しているレジヌタLAC1の内容
とが取り込まれ、両者の差n(n=ADDR2一LAC
I)及びその差に基づく短語/長語の判定を行う。
DR2の内容と更新前のNo=■に対応するLACTの
内容(900)を記憶しているレジヌタLAC1の内容
とが取り込まれ、両者の差n(n=ADDR2一LAC
I)及びその差に基づく短語/長語の判定を行う。
短語(n≦127)の時には短語指令信号C4、長語(
n≧128)の時には長語指令信号C,とが発生し、短
飴フラグ発生器SFT,長語フラグ発生器DFTの夫々
を駆動し、短語フラグ″0”、長語フラグ″1”がIT
RのFTに出力されることになる。
n≧128)の時には長語指令信号C,とが発生し、短
飴フラグ発生器SFT,長語フラグ発生器DFTの夫々
を駆動し、短語フラグ″0”、長語フラグ″1”がIT
RのFTに出力されることになる。
ここでレジスタLAC1のアドレスを使用したのは、第
8図aのNAMETのエントリ−1.3以降はADDR
2が未修正となっているためである。
8図aのNAMETのエントリ−1.3以降はADDR
2が未修正となっているためである。
以上の短語及ひ長語の設定と同時に、或いは設定後、短
語指令信号C3或いはC4、長語指令信号C2,C5に
よりアンドヶートA4、或いはA5が開かれる。
語指令信号C3或いはC4、長語指令信号C2,C5に
よりアンドヶートA4、或いはA5が開かれる。
即ち、短語判定時にはアンドゲートA4が開かれ、+1
を加算する加算回路LADD1によりレジヌタLAC2
の内容を+1させ、長語判定時にはアンドゲートA5が
開かれ、+2を加算する加算回路LADD2によりレジ
スタLAC2の内容を+2させる。
を加算する加算回路LADD1によりレジヌタLAC2
の内容を+1させ、長語判定時にはアンドゲートA5が
開かれ、+2を加算する加算回路LADD2によりレジ
スタLAC2の内容を+2させる。
本実施例ではNo=■のUP中の命令は短語のためアン
ドゲートA4が開かれLAC2の内容は+1される(第
8図CのLAC2が820から821に変る)。
ドゲートA4が開かれLAC2の内容は+1される(第
8図CのLAC2が820から821に変る)。
次いで、レジスタITRの内容を入力部IT及び中間テ
ーブル部MTに書込み登録する。
ーブル部MTに書込み登録する。
最後の行の登録後レジスタLACIとLAC3との内容
が、UPの各命令の処理が終了することに発生ずる指令
信号C6により作動開始する比較器COMP6によって
比較される。
が、UPの各命令の処理が終了することに発生ずる指令
信号C6により作動開始する比較器COMP6によって
比較される。
両名が一致していれば終了信号C7を発生し、一致して
いなけれは継続信号C8を発生し、NAPIを十mする
とともにITより次の行をITRへ読出し、上記の処理
を繰り返す。
いなけれは継続信号C8を発生し、NAPIを十mする
とともにITより次の行をITRへ読出し、上記の処理
を繰り返す。
いま処理が終了したNo一■は未だ終了ではな< (∵
第8図CのLAC1とLAC3の内容か一致せず、従っ
て、実際には継続信号C8か発生し、次の行であるNo
=■の処理に移行することになる。
第8図CのLAC1とLAC3の内容か一致せず、従っ
て、実際には継続信号C8か発生し、次の行であるNo
=■の処理に移行することになる。
このときNAP1の内容は十mされる(これに対応した
NAPは12である)。
NAPは12である)。
No=■の処理(第9図)に於いては、以上述べたNo
一■の処理とほとんど同じである故、種複する部分は省
略し、異なる部分のみを以下説明しよう。
一■の処理とほとんど同じである故、種複する部分は省
略し、異なる部分のみを以下説明しよう。
先ず、異なっている点はユーザ・プログラムUP土のラ
ベル部LABELIにラベルがないことである(第9図
aITテーブルのNo一■)。
ベル部LABELIにラベルがないことである(第9図
aITテーブルのNo一■)。
従ってテーブルNAMETにラベルがあるかどうかさが
す必要はなく、比較器COMP1による比較の必要性は
ない。
す必要はなく、比較器COMP1による比較の必要性は
ない。
更に、異なっている点はアドレヌ部ADDR1の内容r
EJはエントリーナンバー「1」から前回までに処理し
たエントリーナンバー「l2」までの間に存在せず、エ
ントリーナンパ−「l4」にあることである。
EJはエントリーナンバー「1」から前回までに処理し
たエントリーナンバー「l2」までの間に存在せず、エ
ントリーナンパ−「l4」にあることである。
エントリーナンバー14の内容は2000であり、廓=
■とのDISPが128より大きくなるため比較器CO
MP3では、出力信号C1が得られ、比較器COMP5
でレジスタLACIとレジヌクNAMETRのアドレス
とを比較することになる。
■とのDISPが128より大きくなるため比較器CO
MP3では、出力信号C1が得られ、比較器COMP5
でレジスタLACIとレジヌクNAMETRのアドレス
とを比較することになる。
この比較の結果、n=2000−902=1098とな
り長語指令信号C,を発生し、長語フラグ発生器DFT
により長語フラグ″1”を発生しレジヌタITRのフラ
グ部FTに″1”をセットし(第9図ITテーブルのN
o一■のFT部)、加算回路LADD2を通してレジヌ
タLAC2の内容を+2することになる(この結果LA
C2は823となる)。
り長語指令信号C,を発生し、長語フラグ発生器DFT
により長語フラグ″1”を発生しレジヌタITRのフラ
グ部FTに″1”をセットし(第9図ITテーブルのN
o一■のFT部)、加算回路LADD2を通してレジヌ
タLAC2の内容を+2することになる(この結果LA
C2は823となる)。
この行の終了した時点でもプログラムは終了せず、次の
行に処理が移る。
行に処理が移る。
IsT El終了時は第9図eに示す。
LAC2は821−123となり長語分カウントアップ
になる。
になる。
LAC1とLAC3は不一致なので次の行の処理をする
。
。
以下、順次各行の処理が行われる。
最後の行が終了した時点でレジヌタLAC2とLAC3
との内容がCOMP7によって比較され、前回の走査と
今回の操作でオブゼクトの長さが変化しなければ両者の
内容は一致する。
との内容がCOMP7によって比較され、前回の走査と
今回の操作でオブゼクトの長さが変化しなければ両者の
内容は一致する。
このとき終了信号C7が発生し、中間テーブル部MTよ
り登録された内容をレジヌタMTRを通して読み出し、
短語/長語の機械語変換部MIにより第2図に示す如き
機械語の形式に変換し、出力テーブル部OTに登録させ
ることになる。
り登録された内容をレジヌタMTRを通して読み出し、
短語/長語の機械語変換部MIにより第2図に示す如き
機械語の形式に変換し、出力テーブル部OTに登録させ
ることになる。
機械語変換部MIは中間テーブルMTから順次命令をM
TRへ読出しそれを入力とし、機械語命令を出力するか
、この場合、単語命令のアドレス部は短語/長語のフラ
グの情報FTを用い決定した先頭からの相対ロケーショ
ンと、ラベル登録テーブルNAMET中のラベル・ロケ
ーションとの差をとることで、また長語命令のアドレヌ
部はラベル・ロケーションをそのまま使用することで決
定する。
TRへ読出しそれを入力とし、機械語命令を出力するか
、この場合、単語命令のアドレス部は短語/長語のフラ
グの情報FTを用い決定した先頭からの相対ロケーショ
ンと、ラベル登録テーブルNAMET中のラベル・ロケ
ーションとの差をとることで、また長語命令のアドレヌ
部はラベル・ロケーションをそのまま使用することで決
定する。
ユーザ・プログラムの全行を以上の1回の走査によって
完全に短語/長語に区分けできればよいわけであるか、
実際上はユーザ・プログラムの全行の1回の走査だけで
は完全に正しい短語/長語の区分けは、達成し得ない。
完全に短語/長語に区分けできればよいわけであるか、
実際上はユーザ・プログラムの全行の1回の走査だけで
は完全に正しい短語/長語の区分けは、達成し得ない。
例えばNo一■の命令の処理の過程では、該命令のラベ
ルEは、未だ処理しない未処理の行に存在しており、こ
の未処理の行をもって相対アドレスDISPの値nが設
定されている。
ルEは、未だ処理しない未処理の行に存在しており、こ
の未処理の行をもって相対アドレスDISPの値nが設
定されている。
こうした未処理の行の、いわゆる事前に仮定の上に立っ
てたてられた行のアドレヌに基づく処理過程があるため
、1回の走査だけでは正しく完全な意味での短語/長語
の判定を行ない得ないことになる。
てたてられた行のアドレヌに基づく処理過程があるため
、1回の走査だけでは正しく完全な意味での短語/長語
の判定を行ない得ないことになる。
従って、当然のことながら、レジヌタLAC2とLAC
3との夫々の内容も一致することはない。
3との夫々の内容も一致することはない。
このとき信号C,が発生し次回の走査のために、LAC
2の内容をLAC3に転送し、前述のとと<UPの最初
の行からまた走査を開始する。
2の内容をLAC3に転送し、前述のとと<UPの最初
の行からまた走査を開始する。
第9図bはNAMETのテーブルに対応したNAP1〜
3の状態、Cは走査終了時のLAC1〜3、dは次回走
査時のLACの状態を示す。
3の状態、Cは走査終了時のLAC1〜3、dは次回走
査時のLACの状態を示す。
走査回数によって当然のことながら、処理されるべき機
械語(オブセクト)総語数も減少してゆく。
械語(オブセクト)総語数も減少してゆく。
この様子を示したものか第10図である。
第10図で01は第1回目の走査、02は第2回目の走
査、・・・・・・y01は第i回目の走査・01+iは
第(i+1)回目の走査時での機械語の総語数を示して
いる。
査、・・・・・・y01は第i回目の走査・01+iは
第(i+1)回目の走査時での機械語の総語数を示して
いる。
この図より明らかなように、走査回数が増えるに従って
処理される機械語総語数は減少してゆき(差をεとして
いる)、ある特定回数iに達した時点で、次の回数i+
1との差ε=0となり、完全に短語/長語の一致か得ら
れることになる。
処理される機械語総語数は減少してゆき(差をεとして
いる)、ある特定回数iに達した時点で、次の回数i+
1との差ε=0となり、完全に短語/長語の一致か得ら
れることになる。
この時には、レジヌタLAC2とLAC3との内容も一
致する。
致する。
これによって、短語/長語の完全な決定最適化を完了す
ることになる。
ることになる。
この状態を弟9図fに示す。すなわちn−1回目とn回
目のロケーションが一致したということである。
目のロケーションが一致したということである。
尚、走査回数が増加することによって、処理時間も増加
することになり、いわば欠点の面も出てくる。
することになり、いわば欠点の面も出てくる。
従って、適当な走食回数をもって決定処理作業を終了さ
せることも考慮せねばならない。
せることも考慮せねばならない。
この走査回数は実用上の最適化であったかどうかによっ
て決める。
て決める。
実際には、レジヌタLAC1とLAC3との差が実用上
許容される範囲にあるかどうかによって行う。
許容される範囲にあるかどうかによって行う。
即ち、許容範囲としてIε。1を設定しておき、比較器
COMPγを2つのレジスタLAC2とLAC3との差
もしくは比がIε。
COMPγを2つのレジスタLAC2とLAC3との差
もしくは比がIε。
1内にあれは終了、1εo1外であれば未終了として信
号C,を発生ずるように構成すればよい。
号C,を発生ずるように構成すればよい。
これによって決定の能率化をおこなうことができ処理時
間の短縮か可能となる。
間の短縮か可能となる。
次に、決定時間の短縮化を説明しよう。
第5図のCOMP4,COMP5の判定に於いて、ある
種の命令は必す短語命令あるいは長語命令となり、一度
短語、もしくは長語であることが確定すればそれ以後
再び短語、長語の判定は必要ない。
種の命令は必す短語命令あるいは長語命令となり、一度
短語、もしくは長語であることが確定すればそれ以後
再び短語、長語の判定は必要ない。
かかる”ある種の命令”とはアドレヌ部ADDR1のラ
ベルがその行の128行以前(nく−129)に存在す
る場合、あるいは129行以降に存在する場合(n〉1
2s)の命令(長語命令となる)およびアドレヌ部AD
DR1のラベルがその行と63行前との間(該63行を
含む)にある場合(−64くn)、あるいはその行と6
4行後の行との間(該64行を含む)にある場合(nく
63の命令(短語命令となる)である。
ベルがその行の128行以前(nく−129)に存在す
る場合、あるいは129行以降に存在する場合(n〉1
2s)の命令(長語命令となる)およびアドレヌ部AD
DR1のラベルがその行と63行前との間(該63行を
含む)にある場合(−64くn)、あるいはその行と6
4行後の行との間(該64行を含む)にある場合(nく
63の命令(短語命令となる)である。
すなわちこれらのうち必らす長語となる命令の行テハ、
最良の場合(その命令の行と指定ラベルの存在する行の
間の行がすべて短語命令の場合)でも相対アドレヌDI
SPの値nはn<−129,n〉128となって絶対に
短語とはなり得ない。
最良の場合(その命令の行と指定ラベルの存在する行の
間の行がすべて短語命令の場合)でも相対アドレヌDI
SPの値nはn<−129,n〉128となって絶対に
短語とはなり得ない。
また必らず短語命令となる命令の行では最悪の場合(そ
の行の命令と指定ラベルの存在する行の間の行か全て長
語命令の場合)でも、相対アドレヌnは、n〉−64,
n<63となって絶対に長語とはなりえない。
の行の命令と指定ラベルの存在する行の間の行か全て長
語命令の場合)でも、相対アドレヌnは、n〉−64,
n<63となって絶対に長語とはなりえない。
もしnが−128<nニー65,64<n<127のと
きには短語とも長語ともなりうる可能性があり、命令語
長は未確定である。
きには短語とも長語ともなりうる可能性があり、命令語
長は未確定である。
以上の点を考慮したアドレヌ決定方弐を実現するには、
先ず入力部ITのフラグテーブル部FTは1ビット構成
より2ビット構成となる。
先ず入力部ITのフラグテーブル部FTは1ビット構成
より2ビット構成となる。
すなわち短語と判定されたときは「0」、長語と判定さ
れたときは「1」、短語か長語か未定の場合は「2」を
セットする(したかつてこの場合、短語長語が確定しな
い命令に対する仮の語長フラグFTは「2」とセントさ
れることになる)。
れたときは「1」、短語か長語か未定の場合は「2」を
セットする(したかつてこの場合、短語長語が確定しな
い命令に対する仮の語長フラグFTは「2」とセントさ
れることになる)。
このフラグに関連する他のレジヌタ類も2ビット構成と
なる。
なる。
更に、第5図の実施例では、フラグ部FTのデータを使
用しなかったが、該データを取り込んで、″0”か″1
”か”2”かを判定する比較回路を設ける必要がある。
用しなかったが、該データを取り込んで、″0”か″1
”か”2”かを判定する比較回路を設ける必要がある。
更に、この比較回路は3つの出力を有し、第1の出力は
”0”判定時に出力され、第2の出力は“1”判定時に
出力され、第3の出力は”2″判定時に出力される。
”0”判定時に出力され、第2の出力は“1”判定時に
出力され、第3の出力は”2″判定時に出力される。
″0”及び″1”判定時には、相対アドレヌDISPの
計算は必要なく、LAC2の内容を+1,+2するだけ
となる。
計算は必要なく、LAC2の内容を+1,+2するだけ
となる。
第3の出力発生時には、第5図の場合と同様に現在処理
中の行以Mにラベル一致があるかどうかの判定を行い、
現在処理中の行以前にラベル一致があれば、COMP4
に対応する比較器によって相対アドレスDISPの値n
を計算し、その計算結果に基づき短語、長語の判定を行
わせる。
中の行以Mにラベル一致があるかどうかの判定を行い、
現在処理中の行以前にラベル一致があれば、COMP4
に対応する比較器によって相対アドレスDISPの値n
を計算し、その計算結果に基づき短語、長語の判定を行
わせる。
現在処理中の行以降にラベル一致があれば、COMP5
に対応する比較器によって相対アドレヌDISPの値n
を計算し、その計算結果に基づき短語か長語かの判定を
行わせる。
に対応する比較器によって相対アドレヌDISPの値n
を計算し、その計算結果に基づき短語か長語かの判定を
行わせる。
更に、短語/長語のフラグを発生する発生器SFT,D
FTの他に+2のフラグを発生する第3の発生器が設け
られる。
FTの他に+2のフラグを発生する第3の発生器が設け
られる。
これら3つの発生器の出力信号によってレジスタITR
のフラグテーブル部FTに“0”,″1”,″2″のい
ずれかが設定されるO 以上、本発明を詳細に述べたが、本発明によれば、アセ
ンブラやコンパイラなどの言語処理プロセッサの中間出
力言語から機械語形式のオブゼクト命令を生成するとき
その中間出力言語の中で短語命令か長語命令かを考慮す
る必要かなくかつ該命令語長の決定時間の短縮化もはか
ることができる。
のフラグテーブル部FTに“0”,″1”,″2″のい
ずれかが設定されるO 以上、本発明を詳細に述べたが、本発明によれば、アセ
ンブラやコンパイラなどの言語処理プロセッサの中間出
力言語から機械語形式のオブゼクト命令を生成するとき
その中間出力言語の中で短語命令か長語命令かを考慮す
る必要かなくかつ該命令語長の決定時間の短縮化もはか
ることができる。
第1図はユーザ・プログラムの形式を示す図、第2図は
機械語(オブゼクト)の形式を示す図、第3図、第4図
は本発明の要部説明図、第5図は本発明の実施例図、第
6図〜第9図は本発明の動作説明図、第10図は繰り返
し計算の説明図を示すiである・ IT・・・・・・入力部、NAMET・・・・・・ラベ
ル登録テーブル部、LAC1,LAC2,LAC3・・
・・・・ロケーション・レジスタ、MT・・・・・・中
間出力部、OT・・・・・・出力部。
機械語(オブゼクト)の形式を示す図、第3図、第4図
は本発明の要部説明図、第5図は本発明の実施例図、第
6図〜第9図は本発明の動作説明図、第10図は繰り返
し計算の説明図を示すiである・ IT・・・・・・入力部、NAMET・・・・・・ラベ
ル登録テーブル部、LAC1,LAC2,LAC3・・
・・・・ロケーション・レジスタ、MT・・・・・・中
間出力部、OT・・・・・・出力部。
Claims (1)
- 【特許請求の範囲】 1 アセンブラ、コンパイラ等の言語処理プロセッサの
中間出力言語から機械語形式のオブゼクト命令を生成す
るときD相対アドレス決定方式において、(a)該中間
出力言語の命令の仮の語長として各々の命令がとりうる
最犬語長をフラグテーブル部FTに記憶しかつ該フラグ
テーブルに記憶されている該最大語長に基づいて演算さ
れた該中間出力言語命令の相対アドレスをロケーション
テーブル部LACTに記憶して成る該中間出力言語命令
記憶手段ITと、 (b)該中間出力言語命令の各々の命令を最大語長に設
定した場合の該中間出力言語命令の最終命令の相対アド
レス記憶手段LAC3と1 (c)該中間出力言語出力命令の各々の命令についで該
ロケーションテーブル部LACTに記憶されているアド
レスに基づいて相対アドレスを演算するものであって少
なくとも比較器 COMP2〜5とレジヌタITR,LAC1.2NAM
ETRと長語短語検出器DFT,SFTとから成る演算
手段と、 (d)該演算された相対アドレスから語長を判定すると
ともに該フラグテーブル部FTに仮の語長として記憶さ
れている最大語長に代えて該判定された語長に修正設定
するとともに該修正設定された語長に基づいて該中間出
力言語命令の各各について順次該中間出力a語命令の最
終命令まで相対アドレスを演算し記憶させる記憶手段L
AC2,LACTと、 (e)該中間出力言語命令の最終命令の相対アドしスの
記憶値LAC3と、該演算された最終命令のアドレス記
憶値LAC2とを比較する比較器COMPMとを具備し
、該比較演算されたアドレス偏差値があらかじめ定めら
れた値よりも太きいきき該最終命令のアドレス記憶値 LAC2を該最終命令のアドレス値LAC3に代えて記
憶せしめ該中間出力言語命令の最初の命令から該演算を
順次実行し、該比較演算されたアドレス偏差の値があら
かじめ定めた値よりも小さくなったときの相対アドレス
を該オブゼクト命令の相対アドレスとすること、を特徴
とするオブゼクト命令生成における相対アドレス決定方
式。 2 該特許請求の範囲第1項記載において、あらかじめ
定められた回数の演算を実行したときの相対アドレスを
該オブゼクト命令の相対アドレスとすることを特徴とす
るオブゼクト命令生成における相対アドレス決定方式。 3 前記特許請求の範囲第1項において、フラグテーブ
ル部FTに該中間出力言語命令のうち一義的に語長が確
定する命令語にはそれぞれ対応する確定語長フラグを、
また語長が未確定な命令にはその命令がとりうる最人語
長に対応した未確定識別フラグを設定し、該語長未確定
語長についてのみ相対アドレスを順次演算し、該中間出
力言語命令の相対アドレスを決定することを特徴とする
オブゼクト命令生成における相対アドレス決定方式
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP50040261A JPS584371B2 (ja) | 1975-04-04 | 1975-04-04 | オブゼクト命令生成における相対アドレス決定方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP50040261A JPS584371B2 (ja) | 1975-04-04 | 1975-04-04 | オブゼクト命令生成における相対アドレス決定方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS51115744A JPS51115744A (en) | 1976-10-12 |
| JPS584371B2 true JPS584371B2 (ja) | 1983-01-26 |
Family
ID=12575714
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP50040261A Expired JPS584371B2 (ja) | 1975-04-04 | 1975-04-04 | オブゼクト命令生成における相対アドレス決定方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS584371B2 (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS61110240A (ja) * | 1984-10-31 | 1986-05-28 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 最適化コンパイラ |
| JP2610890B2 (ja) * | 1987-09-09 | 1997-05-14 | 日本電気株式会社 | アセンブラの分岐命令生成方式 |
-
1975
- 1975-04-04 JP JP50040261A patent/JPS584371B2/ja not_active Expired
Also Published As
| Publication number | Publication date |
|---|---|
| JPS51115744A (en) | 1976-10-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5193192A (en) | Vectorized LR parsing of computer programs | |
| US5339431A (en) | Software compiler and linker with improved line-number table | |
| US6460135B1 (en) | Data type conversion based on comparison of type information of registers and execution result | |
| CA1288871C (en) | Method for verifying spelling of compound words | |
| US6434742B1 (en) | Symbol for automatically renaming symbols in files during the compiling of the files | |
| JPS584371B2 (ja) | オブゼクト命令生成における相対アドレス決定方式 | |
| US20010044930A1 (en) | Loop optimization method and a compiler | |
| US6275984B1 (en) | System and method for delaying indirect register offset resolution | |
| CN118069142B (zh) | 编译优化方法、装置、电子设备及存储介质 | |
| US7617396B2 (en) | Method and apparatus for watermarking binary computer code with modified compiler optimizations | |
| JPH1185536A (ja) | 原始プログラムのエラー自動修正装置及び方法 | |
| JP2001297068A (ja) | 並列プログラム生成方法およびその記録媒体 | |
| JP3279706B2 (ja) | オンライン・コンパイル方式 | |
| JP2001075831A (ja) | プログラム処理装置、ic試験システム、プログラム処理方法及び記憶媒体 | |
| EP0647900B1 (en) | Parameter storage space allocation | |
| JP2827979B2 (ja) | アセンブラ処理装置及びアセンブラ処理方法 | |
| US6105120A (en) | Method for implementing multiple format addressing in an embedded microcontroller, a compiler being arranged for implementing the method, and a microcontroller being arranged for using the method and compiler | |
| JP3141945B2 (ja) | コンパイル装置 | |
| JP2005295216A (ja) | データ処理装置及びプログラム | |
| JP2797777B2 (ja) | 言語処理装置 | |
| JP3114199B2 (ja) | 言語処理システムのリスト出力方式 | |
| JPH05189242A (ja) | パーサ自動生成方法 | |
| JPH11232119A (ja) | 文字コード変換方法 | |
| JPS6326730A (ja) | プログラム修正方式 | |
| JPH11161501A (ja) | コンパイル装置 |