JPS6229818B2 - - Google Patents
Info
- Publication number
- JPS6229818B2 JPS6229818B2 JP15644881A JP15644881A JPS6229818B2 JP S6229818 B2 JPS6229818 B2 JP S6229818B2 JP 15644881 A JP15644881 A JP 15644881A JP 15644881 A JP15644881 A JP 15644881A JP S6229818 B2 JPS6229818 B2 JP S6229818B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- displacement
- register
- array
- 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
Links
- 238000006073 displacement reaction Methods 0.000 claims description 36
- 238000000034 method Methods 0.000 claims description 7
- 238000003491 array Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
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)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】
本発明は、配列の要素の主記憶装置上の番地を
計算するためのオブジエクト・プログラムの命令
の数を減少できると共に、インデツクス・レジス
タをも共通化できるようにした最適な変位の決定
方法に関するものである。
計算するためのオブジエクト・プログラムの命令
の数を減少できると共に、インデツクス・レジス
タをも共通化できるようにした最適な変位の決定
方法に関するものである。
計算機の主記憶装置上の番地をアクセスするた
めの命令である、PX型式の命令は という形式を有している。こゝで、OPはオペレ
ーシヨン・コード、Rは汎用レジスタの番号、X
はインデツクス・レジスタの番号、Bはベース・
レジスタの番号、Dは変位(デイスプレースメン
ト又はオフセント)を示している。主記憶上の番
地は、インデツクス・レジスタの内容、ベース・
レジスタの内容およびデイスプレースメントの和
で表わされる。配列は同じ特性をもつ要素を所定
の規制にしたがつて並べたものであるが、配列は
主記憶上の連続した領域に格納されている。
めの命令である、PX型式の命令は という形式を有している。こゝで、OPはオペレ
ーシヨン・コード、Rは汎用レジスタの番号、X
はインデツクス・レジスタの番号、Bはベース・
レジスタの番号、Dは変位(デイスプレースメン
ト又はオフセント)を示している。主記憶上の番
地は、インデツクス・レジスタの内容、ベース・
レジスタの内容およびデイスプレースメントの和
で表わされる。配列は同じ特性をもつ要素を所定
の規制にしたがつて並べたものであるが、配列は
主記憶上の連続した領域に格納されている。
第1図は配列アクセスの基本を示すものであつ
て、Aは配列名、(1),(2)…(i)は配列の要素の順番
を示している。なお、図示の例では配列の要素の
大きさは“4”としている。ベース・レジスタに
は一要素分だけ前の番地(小さい番地)を設定す
る。これによつてインデツクス・レジスタ12は
(i−1)×4ではなくてi×4を設定するだけで
済む。配列の要素A(2)の番地を示す場合にはイン
デツクス・レジスタは使用せず変位を2×4とす
る。配列の要素A(i)を表わす場合にはインデツク
ス・レジスタの内容をi×4とし、変位を“0”
とする。配列の要素A(i+3)を表わす場合に
は、インデツクス・レジスタの内容をi×4と
し、変位3×4とする。
て、Aは配列名、(1),(2)…(i)は配列の要素の順番
を示している。なお、図示の例では配列の要素の
大きさは“4”としている。ベース・レジスタに
は一要素分だけ前の番地(小さい番地)を設定す
る。これによつてインデツクス・レジスタ12は
(i−1)×4ではなくてi×4を設定するだけで
済む。配列の要素A(2)の番地を示す場合にはイン
デツクス・レジスタは使用せず変位を2×4とす
る。配列の要素A(i)を表わす場合にはインデツク
ス・レジスタの内容をi×4とし、変位を“0”
とする。配列の要素A(i+3)を表わす場合に
は、インデツクス・レジスタの内容をi×4と
し、変位3×4とする。
第2図は配列のアクセスの一般的方法を示すも
のであり、第2図においてBおよびCも配列を示
している。計算機におけるレジスタの個数は有限
であるので、異なる複数の配列で1つのベース・
レジスタを使用することが望まれる。このため、
ベース・レジスタには、1要素分ではなくて(m
+4)だけ前の番地を設定する。第2図の例にお
いては、配列の要素A(2)の番地を示す場合、イン
デツクス・レジスタは使用せず。変位は2×4+
mとされる。配列の要素A(i)を表わす場合、イン
デツクス・レジスタの内容はi×4とされ、変位
はmとされる。配列の要素A(i+3)を表わす
場合、インデツクス・レジスタの内容はi×4と
され、変位は3×4+mとされる。
のであり、第2図においてBおよびCも配列を示
している。計算機におけるレジスタの個数は有限
であるので、異なる複数の配列で1つのベース・
レジスタを使用することが望まれる。このため、
ベース・レジスタには、1要素分ではなくて(m
+4)だけ前の番地を設定する。第2図の例にお
いては、配列の要素A(2)の番地を示す場合、イン
デツクス・レジスタは使用せず。変位は2×4+
mとされる。配列の要素A(i)を表わす場合、イン
デツクス・レジスタの内容はi×4とされ、変位
はmとされる。配列の要素A(i+3)を表わす
場合、インデツクス・レジスタの内容はi×4と
され、変位は3×4+mとされる。
変位が例えば12ビツト構成であるとすると、変
位は“0”ないし“4095”の範囲の値を取ること
が出来る。変位のとり得る最大値が決つているの
で、配列の要素数が多い場合や配列の要素の寸法
が大きい場合には、上記のようにして計算された
変位の値が最大値を越えてしまう場合がある。例
えば配列の要素A(i+1200)の変位を前記した
方法で計算すると、1200×4+mとなり、最大値
“4095”を越えてしまう。計算の結果得られた変
位が“4095”の値を越えた場合、従来技術におい
ては、計算によつて得られたインデツクス・レジ
スタの内容に1200×4+mを加えたものを新たに
インデツクス・レジスタに設定し、変位の値を
“0”にしていた。このような従来方式による
と、さらに配列に要素A(i+1500)の主記憶上
の番地を求める場合、1500×4+mを計算し、別
のインデツクス・レジスタにi×4+1500×4+
mを設定する必要があつた。即ち、オブジエク
ト・プログラム上で配列の要素A(i+1200)と
A(i+1500)の主記憶装置上の番地を求める場
合、i×4+1200×4+mを求める命令と、i×
4+1500×4+mを求める命令とを余分に必要と
し、さらに、これらの計算結果を設定する2個の
インデツクス・レジスタを必要とした。
位は“0”ないし“4095”の範囲の値を取ること
が出来る。変位のとり得る最大値が決つているの
で、配列の要素数が多い場合や配列の要素の寸法
が大きい場合には、上記のようにして計算された
変位の値が最大値を越えてしまう場合がある。例
えば配列の要素A(i+1200)の変位を前記した
方法で計算すると、1200×4+mとなり、最大値
“4095”を越えてしまう。計算の結果得られた変
位が“4095”の値を越えた場合、従来技術におい
ては、計算によつて得られたインデツクス・レジ
スタの内容に1200×4+mを加えたものを新たに
インデツクス・レジスタに設定し、変位の値を
“0”にしていた。このような従来方式による
と、さらに配列に要素A(i+1500)の主記憶上
の番地を求める場合、1500×4+mを計算し、別
のインデツクス・レジスタにi×4+1500×4+
mを設定する必要があつた。即ち、オブジエク
ト・プログラム上で配列の要素A(i+1200)と
A(i+1500)の主記憶装置上の番地を求める場
合、i×4+1200×4+mを求める命令と、i×
4+1500×4+mを求める命令とを余分に必要と
し、さらに、これらの計算結果を設定する2個の
インデツクス・レジスタを必要とした。
本発明は、上記の考察に基づくものであつて、
配列の要素の主記憶上の番地を求める場合、主記
憶上の番地を計算するための命令とインデツク
ス・レジスタの個数を減少できるようになつた最
適な変位の決定方法を提供することを目的として
いる。そしてそのため、本発明の最適な変位の決
定方法は、ソース・プログラム上の配列Aの要素
A(i+k)(ただし、iは変数、kは定数)の
番地を、配列Aの先頭番地を0番地と仮定したと
き、中間段階においてm+D(たかび、Dは配列
の要素の大きさ)の内容を持つベース・レジス
タ、i×Dの内容を持つインデツクス・レジス
タ、k×D+mの値をもつデイスプレースメント
で表し、デイスプレスメントの値が所定値を越え
ている場合、上記ベース・レジスタ又はインデツ
クス・レジスタの内容を調節して上記配列の要素
(i+k)の番地をオブジエクト・コードで表わ
すようにしたコンパイラにいて、中間段階におい
て、上記デイスプレースメントの値dispが所定値
dispmを越えている場合、値dispを値dispmで除
算したときに生ずる余りdisp′をデイスプレース
メントの値とし、dispからdisp′を減算した値
disptを上記ベース・レジスタ又はインデツク
ス・レジスタの内容に加算したことを特徴とする
ものである。以下、本発明を図面を参照しつつ説
明する。
配列の要素の主記憶上の番地を求める場合、主記
憶上の番地を計算するための命令とインデツク
ス・レジスタの個数を減少できるようになつた最
適な変位の決定方法を提供することを目的として
いる。そしてそのため、本発明の最適な変位の決
定方法は、ソース・プログラム上の配列Aの要素
A(i+k)(ただし、iは変数、kは定数)の
番地を、配列Aの先頭番地を0番地と仮定したと
き、中間段階においてm+D(たかび、Dは配列
の要素の大きさ)の内容を持つベース・レジス
タ、i×Dの内容を持つインデツクス・レジス
タ、k×D+mの値をもつデイスプレースメント
で表し、デイスプレスメントの値が所定値を越え
ている場合、上記ベース・レジスタ又はインデツ
クス・レジスタの内容を調節して上記配列の要素
(i+k)の番地をオブジエクト・コードで表わ
すようにしたコンパイラにいて、中間段階におい
て、上記デイスプレースメントの値dispが所定値
dispmを越えている場合、値dispを値dispmで除
算したときに生ずる余りdisp′をデイスプレース
メントの値とし、dispからdisp′を減算した値
disptを上記ベース・レジスタ又はインデツク
ス・レジスタの内容に加算したことを特徴とする
ものである。以下、本発明を図面を参照しつつ説
明する。
第3図はコンパイラ処理の一部を説明するため
の図である。ソース・プログラムが図示のような
配列の要素とDO文を含んでいるものとすると、
中間テキストの段階でテーブルT1とT2が作成
される。テーブルT1は配列の要素A(i+
1200)に対応するものであり、A部はベース・レ
ジスタをポイントとしており、i部は制御変数i
の格納されているレジスタをポイントしてあり、
disp1部には1200×4+mが格納されている。テ
ーブルT2は配列の要素A(i+1500)に対応す
るものであつて、disp2部には1500×4+mが格
納されている。テーブルT2のA部およびi部は
テーブルT1のそれと同じである。中間テキスト
から機械語を生成する最適化の段階において、コ
ンパイラは変位disp1とdisp2が4095を越えている
か否かを調べ、越えている場合には変位が4095以
内になるように調整すると共に、インデツクス・
レジスタの内容(又はベース・レジスタの内容)
に或る値を加算するための命令を追加する。
の図である。ソース・プログラムが図示のような
配列の要素とDO文を含んでいるものとすると、
中間テキストの段階でテーブルT1とT2が作成
される。テーブルT1は配列の要素A(i+
1200)に対応するものであり、A部はベース・レ
ジスタをポイントとしており、i部は制御変数i
の格納されているレジスタをポイントしてあり、
disp1部には1200×4+mが格納されている。テ
ーブルT2は配列の要素A(i+1500)に対応す
るものであつて、disp2部には1500×4+mが格
納されている。テーブルT2のA部およびi部は
テーブルT1のそれと同じである。中間テキスト
から機械語を生成する最適化の段階において、コ
ンパイラは変位disp1とdisp2が4095を越えている
か否かを調べ、越えている場合には変位が4095以
内になるように調整すると共に、インデツクス・
レジスタの内容(又はベース・レジスタの内容)
に或る値を加算するための命令を追加する。
第4図は本発明の原理を説明する図であつて、
この第4図においては、中間テキストの段階で配
列の要素A(i+1200)のメモリ・アドレスがイ
ンデツクス・レジスタの内容と変位disp1で表わ
され、配列の要素A(i+1500)がインデツク
ス・レジスタの内容と変位disp2で表わされるも
のとしている。第4図では説明の簡単なためベー
ス・レジスタは省略されている。変位disp1およ
びdisp2が“4096”以上の場合 disp1=dispt+disp1′ disp2=dispt+disp2′ とすることができるなら、値disptをインデツク
ス・レジスタに加算し、値dispt′を配列の要素A
(i+1200)のメモリ・アドレスを示す場合に用
いられる変位とし、値disp2′を配列の要素A(i
+1500)のメモリ・アドレスを示す場合に用いら
れる変位とする。このようにすれば、オブジエク
ト・プログラムにindex+disptを計算する命令を
新たに追加するだけで良く、また、インデツク
ス・レジスタは1個だけで良い。
この第4図においては、中間テキストの段階で配
列の要素A(i+1200)のメモリ・アドレスがイ
ンデツクス・レジスタの内容と変位disp1で表わ
され、配列の要素A(i+1500)がインデツク
ス・レジスタの内容と変位disp2で表わされるも
のとしている。第4図では説明の簡単なためベー
ス・レジスタは省略されている。変位disp1およ
びdisp2が“4096”以上の場合 disp1=dispt+disp1′ disp2=dispt+disp2′ とすることができるなら、値disptをインデツク
ス・レジスタに加算し、値dispt′を配列の要素A
(i+1200)のメモリ・アドレスを示す場合に用
いられる変位とし、値disp2′を配列の要素A(i
+1500)のメモリ・アドレスを示す場合に用いら
れる変位とする。このようにすれば、オブジエク
ト・プログラムにindex+disptを計算する命令を
新たに追加するだけで良く、また、インデツク
ス・レジスタは1個だけで良い。
第5図は中間テキスト段階で変位dispが
“4095”を越える場合におけるインデツクス・レ
ジスタに加える値disptおよび最終的に変位の値
となるdispdを求める方法を説明するものであ
る。値dispbを値dispを最大値“4095”で割つた
ときの余りとすれば良く、値disptを値dispから
値dispdを引算した結果とすれば良い。
“4095”を越える場合におけるインデツクス・レ
ジスタに加える値disptおよび最終的に変位の値
となるdispdを求める方法を説明するものであ
る。値dispbを値dispを最大値“4095”で割つた
ときの余りとすれば良く、値disptを値dispから
値dispdを引算した結果とすれば良い。
以上の説明から明らかなように、本発明によれ
ば、配列の要素のメモリ上のアドレスを求めるた
めの命令数を従来例に比して減少できると共に、
インデツクス・レジスタを共通化できるという効
果が得られる。
ば、配列の要素のメモリ上のアドレスを求めるた
めの命令数を従来例に比して減少できると共に、
インデツクス・レジスタを共通化できるという効
果が得られる。
第1図は配列のアクセスの基本を示す図、第2
図は配列のアクセスの一般を示す図、第3図はコ
ンパイラ処理の一部を示す図、第4図は本発明の
原理を示す図、第5図はインデツクス・レジスタ
の内容の修正およびデイスプレースメントの修正
の方法を説明する図である。
図は配列のアクセスの一般を示す図、第3図はコ
ンパイラ処理の一部を示す図、第4図は本発明の
原理を示す図、第5図はインデツクス・レジスタ
の内容の修正およびデイスプレースメントの修正
の方法を説明する図である。
Claims (1)
- 1 ソース・プログラム上の配列Aの要素A(i
+k)(ただし、iは変数、kは定数)の番地
を、配列Aの先頭を0番地と仮定したとき、中間
段階において−(m+D)(ただし、Dは配列の要
素の大きさ)の内容を持つベース・レジスタ、i
×Dの内容を持つインデツクス・レジスタ、k×
D+mの値をもつデイスプレースメントで表し、
デイスプレースメントの値が所定値を越えている
場合、上記ベース・レジスタ又はインデツクス・
レジスタの内容を調節して上記配列の要素A(i
+k)の番地をオブジエクト・コードで表わすよ
うにしたコンパイラにおいて、中間段階において
上記デイスプレースメントの値disPが所定値
dispmを越えている場合、値dispを値dispmで除
算したときに生ずる余りdisp′をデイスプレース
メントの値とし、dispからdisp′を減算した値
disptを上記ベース・レジスタ又はインデツク
ス・レジスタの内容に加算したことを特徴とする
最適な変位の決定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15644881A JPS5858652A (ja) | 1981-09-30 | 1981-09-30 | 最適な変位の決定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15644881A JPS5858652A (ja) | 1981-09-30 | 1981-09-30 | 最適な変位の決定方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS5858652A JPS5858652A (ja) | 1983-04-07 |
JPS6229818B2 true JPS6229818B2 (ja) | 1987-06-29 |
Family
ID=15627964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP15644881A Granted JPS5858652A (ja) | 1981-09-30 | 1981-09-30 | 最適な変位の決定方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS5858652A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02138013U (ja) * | 1989-04-18 | 1990-11-19 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60200341A (ja) * | 1984-03-23 | 1985-10-09 | Fujitsu Ltd | 文字デ−タの仮想先頭アドレツシング方式 |
JPS61224042A (ja) * | 1985-03-29 | 1986-10-04 | Nec Corp | 仮想記憶システムにおける配列要素接近に関する最適化コ−ド生成方式 |
-
1981
- 1981-09-30 JP JP15644881A patent/JPS5858652A/ja active Granted
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02138013U (ja) * | 1989-04-18 | 1990-11-19 |
Also Published As
Publication number | Publication date |
---|---|
JPS5858652A (ja) | 1983-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPS58501148A (ja) | アドレス発生装置 | |
JPS6229818B2 (ja) | ||
JP3003156B2 (ja) | 文字処理装置 | |
JP2586479B2 (ja) | 日本語ワ−ドプロセツサ | |
JPS58103039A (ja) | デ−タベ−スシステム | |
JPH063468Y2 (ja) | 小型電子式計算機 | |
JPS61180283A (ja) | ワ−ドプロセツサ | |
JPS6010336B2 (ja) | アドレス比較方式 | |
JPH0194483A (ja) | 配置設計支援装置 | |
JPH0667836A (ja) | 指定エリア掲示機能を有する表示装置 | |
JPH05225317A (ja) | 座標データ指定制御方式 | |
JPS63115228A (ja) | 表示処理方式 | |
JPH04163667A (ja) | 画面レイアウト図同時修正方式 | |
JPS5933542A (ja) | デイスプレイ装置 | |
JPH04239322A (ja) | プログラムコピー句の管理方法 | |
JPH0224726A (ja) | 最適データ割付け方式 | |
JPH08161155A (ja) | マクロ作成方法および作成装置 | |
JPS63126046A (ja) | 外部記憶装置の管理方法 | |
JPH0554058A (ja) | 数値解析用要素生成システム | |
JPH07200562A (ja) | 文書書式設定方法 | |
JPH06175798A (ja) | 可変画面表示制御方式 | |
JPS6347846A (ja) | 情報処理装置 | |
JPS6339946B2 (ja) | ||
JPS61161545A (ja) | デ−タ処理システム | |
JPH03257626A (ja) | 自動オペランド生成アドレッシング方法 |