JPS62166433A - ソ−ス・プログラムの記述チェック方式 - Google Patents
ソ−ス・プログラムの記述チェック方式Info
- Publication number
- JPS62166433A JPS62166433A JP61008654A JP865486A JPS62166433A JP S62166433 A JPS62166433 A JP S62166433A JP 61008654 A JP61008654 A JP 61008654A JP 865486 A JP865486 A JP 865486A JP S62166433 A JPS62166433 A JP S62166433A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- instruction
- machine instruction
- instruction string
- array
- 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.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔概要〕
本発明は、回帰的参照がないと言う指示行を持つソース
・プログラムのDo小ループベクトル命令列に変換する
際に、その指示行の記述の正当性をチェックするための
機械命令列を上記ベクトル命令列の中に埋め込むように
したものである。
・プログラムのDo小ループベクトル命令列に変換する
際に、その指示行の記述の正当性をチェックするための
機械命令列を上記ベクトル命令列の中に埋め込むように
したものである。
本発明は、コンパイラ、特にコンパイラに対する回帰的
参照がないと言う記述が正しいか否かをチェックするよ
うにしたソース・プログラムの記述チェック方式に関す
るものである。
参照がないと言う記述が正しいか否かをチェックするよ
うにしたソース・プログラムの記述チェック方式に関す
るものである。
FORTRAN言語で書かれたDo文をベクトル命令列
に変換するコンパイラは公知である。例えば Do 10 i=1.10 A(i)−B(i)+C(i) 10 C0NTINUE と言うベクトル命令と等価である。第3図はこのベクト
ル命令を実行する場合の動作を説明するものである。ベ
クトルBをベクトル計算機のベクトル・レジスタvtQ
にロードし、ベクトルCを他のベクトル・レジスタvt
lにロードし、ベクトル・レジスタvtQ及びベクトル
・レジスタvt1の先頭から順番に要素を読出して加算
パイプラインに投入し、同一の要素番号のもの同士を加
算し、加算結果をベクトル・レジスタvt3の対応する
要素域に格納する。しかしながら、Do文が必ずベクト
ル化できるとは限らない。例えばDo 10 i=
1.10 A(+)−八(i−1) 10 C0NTINUE と言うDo文体、A(0)をA(1)に代入し、A(1
)をA(2)に代入し、・・・A(9)をA(10)に
代入することを意味しており、A(0)がOであると、
A (0) 、 A (1) 、・・・、A(10)が
全て0になる。上記の文をベクトル化すると、配列Aの
要素がシフトしたような形になり、ソース・プログラム
で指示された処理を正しく行うことが出来なくなる。こ
のようなデータの定義参照関係を回帰的参照があると言
う。
に変換するコンパイラは公知である。例えば Do 10 i=1.10 A(i)−B(i)+C(i) 10 C0NTINUE と言うベクトル命令と等価である。第3図はこのベクト
ル命令を実行する場合の動作を説明するものである。ベ
クトルBをベクトル計算機のベクトル・レジスタvtQ
にロードし、ベクトルCを他のベクトル・レジスタvt
lにロードし、ベクトル・レジスタvtQ及びベクトル
・レジスタvt1の先頭から順番に要素を読出して加算
パイプラインに投入し、同一の要素番号のもの同士を加
算し、加算結果をベクトル・レジスタvt3の対応する
要素域に格納する。しかしながら、Do文が必ずベクト
ル化できるとは限らない。例えばDo 10 i=
1.10 A(+)−八(i−1) 10 C0NTINUE と言うDo文体、A(0)をA(1)に代入し、A(1
)をA(2)に代入し、・・・A(9)をA(10)に
代入することを意味しており、A(0)がOであると、
A (0) 、 A (1) 、・・・、A(10)が
全て0になる。上記の文をベクトル化すると、配列Aの
要素がシフトしたような形になり、ソース・プログラム
で指示された処理を正しく行うことが出来なくなる。こ
のようなデータの定義参照関係を回帰的参照があると言
う。
ソース・プログラムの中に下記のような文を書くことが
出来る。
出来る。
*VOCL LOOP、N0VREC(A)Do 1
0 1=L10 一へ(LL(i)) 八(L2(+))= 10 C0NTINUE 上記の文において、V OCLはVector Opt
imizationControl Lineの略であ
り、N0VI?EC(A)は配列Aに関して回帰的参照
(リカレンス)がないことを意味している。上記のソー
ス・プログラムにおいて、N0VREC(A)によって
実行結果が変化するか否かは、配列LL、L2の値によ
って決まり、実行してみないと判らない場合が多い。
0 1=L10 一へ(LL(i)) 八(L2(+))= 10 C0NTINUE 上記の文において、V OCLはVector Opt
imizationControl Lineの略であ
り、N0VI?EC(A)は配列Aに関して回帰的参照
(リカレンス)がないことを意味している。上記のソー
ス・プログラムにおいて、N0VREC(A)によって
実行結果が変化するか否かは、配列LL、L2の値によ
って決まり、実行してみないと判らない場合が多い。
本発明は、上記の考察に基づくものであって、回帰的参
照のないことをコンパイラに指示する記述の正当性をチ
ェック出来るようにしたソース・プログラムの記述チェ
ック方式を提供することを目的としている。
照のないことをコンパイラに指示する記述の正当性をチ
ェック出来るようにしたソース・プログラムの記述チェ
ック方式を提供することを目的としている。
そしてそのため本発明のソース・プログラムの記述チェ
ック方式は、配列Aに関して回帰的参照がないことを指
示する指示行が付加されると共に添字式が配列で表され
る複数の配列Aを有するDO小ループ入力されたときに
は、配列Aをベクトル化した機械命令列を出力するよう
になったコンパイラにおいて、上記指示行の記述の正当
性をチェックするためのチェック用機械命令列を、上記
DO小ループ対応する機械命令列に埋め込むことを特徴
とするものである。
ック方式は、配列Aに関して回帰的参照がないことを指
示する指示行が付加されると共に添字式が配列で表され
る複数の配列Aを有するDO小ループ入力されたときに
は、配列Aをベクトル化した機械命令列を出力するよう
になったコンパイラにおいて、上記指示行の記述の正当
性をチェックするためのチェック用機械命令列を、上記
DO小ループ対応する機械命令列に埋め込むことを特徴
とするものである。
以下、本発明の詳細な説明する。回帰的参照がないこと
をコンパイラに指示する指示行が誤りを含むのは、 (’i、 ”j l 1≦i ≦N&1 ≦j< i&
Ll(i)=L2(j) )が真となるときである。
をコンパイラに指示する指示行が誤りを含むのは、 (’i、 ”j l 1≦i ≦N&1 ≦j< i&
Ll(i)=L2(j) )が真となるときである。
即ち、同一要素がアクセスされるときは、先行する側(
この場合はi)の最後のアクセスよりも後続する側(こ
の場合はj)のアクセスが先に行われると(j<i)で
NGになる可能性がある。本発明では、この論理式を高
速に判定することによるデハソグ機能の実現を図った。
この場合はi)の最後のアクセスよりも後続する側(こ
の場合はj)のアクセスが先に行われると(j<i)で
NGになる可能性がある。本発明では、この論理式を高
速に判定することによるデハソグ機能の実現を図った。
上記の論理式は次のようにして実現できる。全てのN0
VRECが有効な組合わせについて、デバッグ・ライブ
ラリを呼び出す。ライブラリ内部では、■ 先行する側
の各要素の最終アクセス時のインデックス値 ■ 後続する側の各要素の第1アクセス時のインデック
ス値 を計算し、■の値≧■の値ならばOK、そうでないもの
が一つでもあればNGとする。
VRECが有効な組合わせについて、デバッグ・ライブ
ラリを呼び出す。ライブラリ内部では、■ 先行する側
の各要素の最終アクセス時のインデックス値 ■ 後続する側の各要素の第1アクセス時のインデック
ス値 を計算し、■の値≧■の値ならばOK、そうでないもの
が一つでもあればNGとする。
■の計算は次のようにして行われる。
VL vto、LI
VGS vtLLI
ViST vtl、DVTI、vt。
ここで、VLは添字式L1をベクトル・レジスタにロー
ドする命令で、添字式の形式によって変化する。VGS
は、1から始まり、1ずつ増える数列をv’ t l上
に生成する命令である。ViSTは、vtlの内容を配
列DVTIのvtoで示された要素位置にストアする命
令であり、vtQが同一要素を複数回表示した場合には
、最後に示した時の値が残る。第1回はViST命令(
ベクトル間接ストア命令)を説明する図である。ヘクト
ル・レジスタvtQの第1要素の値は10であり、且つ
ベクトル・レジスタvtlの第1要素の値は1であるの
で、配列DVT1の第10番目の要素域に1を書き込む
。以下、同様にして、配列DVT1の第9番目の要素域
に2を書き込み、配列DVT1の第8番目の要素域に3
を書き込み、配列DVTIの第6番目の要素域に4を書
き込み、配列DVTIの第7番目の要素域に5を書き込
む。ベクトル・レジスタvtQの第6番目の要素の値が
6であり、且つベクトル・レジスタvtlの第6番目の
要素の値が6であるので、配列DVTIの第6番目の要
素域に6が上書きされ、4が6に変更される。なお、配
列DVT1は主メモリ上に存在するものである。
ドする命令で、添字式の形式によって変化する。VGS
は、1から始まり、1ずつ増える数列をv’ t l上
に生成する命令である。ViSTは、vtlの内容を配
列DVTIのvtoで示された要素位置にストアする命
令であり、vtQが同一要素を複数回表示した場合には
、最後に示した時の値が残る。第1回はViST命令(
ベクトル間接ストア命令)を説明する図である。ヘクト
ル・レジスタvtQの第1要素の値は10であり、且つ
ベクトル・レジスタvtlの第1要素の値は1であるの
で、配列DVT1の第10番目の要素域に1を書き込む
。以下、同様にして、配列DVT1の第9番目の要素域
に2を書き込み、配列DVT1の第8番目の要素域に3
を書き込み、配列DVTIの第6番目の要素域に4を書
き込み、配列DVTIの第7番目の要素域に5を書き込
む。ベクトル・レジスタvtQの第6番目の要素の値が
6であり、且つベクトル・レジスタvtlの第6番目の
要素の値が6であるので、配列DVTIの第6番目の要
素域に6が上書きされ、4が6に変更される。なお、配
列DVT1は主メモリ上に存在するものである。
■の計算は次のようにして行われる。
VL vt2.L2
VGS vt3.N、−1
ViNV vt4.vt2
ViST vt3.DVT2.vt4ここで、VL
とViSTは■と同様な演算である。VGSは、Nから
始まり1ずつ減る数列をvt3上に生成する命令であり
、ViNVは、vT2の要素順序を逆転させる命令であ
る。
とViSTは■と同様な演算である。VGSは、Nから
始まり1ずつ減る数列をvt3上に生成する命令であり
、ViNVは、vT2の要素順序を逆転させる命令であ
る。
判定は次のようにして行われる。
VL vt4.DVTI
VL vt5.DVT2
VCI(mto、vt4.vt5
VSMM to、mtO
ここで、VLはそれぞれDVTI、DVT2をvt4と
vt5にロードする命令であり、VCHは、vt4とv
t・5の大小比較を行ってvt4>vt5の要素に対応
するmtoの要素の値を真とし、残りを偽とする命令で
ある。VSMMは、m10の真の要素の数を数えてtQ
に入れる命令であって、このtQの値がOならば、N0
VRECは正しく、0でなければ誤りがあることになる
。
vt5にロードする命令であり、VCHは、vt4とv
t・5の大小比較を行ってvt4>vt5の要素に対応
するmtoの要素の値を真とし、残りを偽とする命令で
ある。VSMMは、m10の真の要素の数を数えてtQ
に入れる命令であって、このtQの値がOならば、N0
VRECは正しく、0でなければ誤りがあることになる
。
上記■の計算を行うための機械命令列、■の計算を行う
ための機械命令列及び■の計算を行うための機械命令列
は、Do小ループ対応するベクトル命令列の中に埋め込
まれる。例えば、*VOCL LOOP、N0VRE
C(A)Do 10 i=1.10 八(L2(i))−八(Ll(i)) 10 C0NTJNUE と言うソース・プログラムは、 ■の命令列 vtl−八(L2 (*) ) ■の命令列 A(Ll(*))−vtl ■の命令列 よりなる命令列に変換される。
ための機械命令列及び■の計算を行うための機械命令列
は、Do小ループ対応するベクトル命令列の中に埋め込
まれる。例えば、*VOCL LOOP、N0VRE
C(A)Do 10 i=1.10 八(L2(i))−八(Ll(i)) 10 C0NTJNUE と言うソース・プログラムは、 ■の命令列 vtl−八(L2 (*) ) ■の命令列 A(Ll(*))−vtl ■の命令列 よりなる命令列に変換される。
第2図はコンパイラの概要を説明する図である。
コンパイラは、ソース解析フェーズ、ペクトライズ・フ
ェーズ及び命令生成フェーズを有している。
ェーズ及び命令生成フェーズを有している。
ソース解析フェーズでは、入力されたソース・プログラ
ムの構文解析、意味解析及び中間テキストの生成を行う
。ペクトライズ・フェーズでは、データの定義参照関係
に認識、ベクトル化可能性の認識及びベクトル中間テキ
ストの生成を行う。また、ペクトライズ・フェーズでは
、*VOCL LOOP、N0VREC(A)と言う指
示行を持つDOループに関しては無条件にこのDo小ル
ープ対応するベクトル中間テキストを作成し、そして上
述した■の計算を行うための中間テキスト、■の計算を
行うための中間テキスト及び■の計算を行うための中間
テキストを埋め込む。
ムの構文解析、意味解析及び中間テキストの生成を行う
。ペクトライズ・フェーズでは、データの定義参照関係
に認識、ベクトル化可能性の認識及びベクトル中間テキ
ストの生成を行う。また、ペクトライズ・フェーズでは
、*VOCL LOOP、N0VREC(A)と言う指
示行を持つDOループに関しては無条件にこのDo小ル
ープ対応するベクトル中間テキストを作成し、そして上
述した■の計算を行うための中間テキスト、■の計算を
行うための中間テキスト及び■の計算を行うための中間
テキストを埋め込む。
以上の説明から明らかなように、本発明によれば、回帰
的参照がないことをコンパイラに指示する指示行の記述
が正しいか否かをチェックすることができる。
的参照がないことをコンパイラに指示する指示行の記述
が正しいか否かをチェックすることができる。
第1図はベクトル間接ストア命令を説明するための図、
第2図はコンパイラの概要を示す図、第3図はベクトル
計算を説明する図である。
第2図はコンパイラの概要を示す図、第3図はベクトル
計算を説明する図である。
Claims (1)
- 配列Aに関して回帰的参照がないことを指示する指示行
が付加されると共に添字式が配列で表される複数の配列
Aを有するDOループが入力されたときには、配列Aを
ベクトル化した機械命令列を出力するようになったコン
パイラにおいて、上記指示行の記述の正当性をチェック
するためのチェック用機械命令列を、上記DOループに
対応する機械命令列に埋め込むことを特徴とするソース
・プログラムの記述チェック方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP61008654A JPS62166433A (ja) | 1986-01-17 | 1986-01-17 | ソ−ス・プログラムの記述チェック方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP61008654A JPS62166433A (ja) | 1986-01-17 | 1986-01-17 | ソ−ス・プログラムの記述チェック方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS62166433A true JPS62166433A (ja) | 1987-07-22 |
| JPH0426748B2 JPH0426748B2 (ja) | 1992-05-08 |
Family
ID=11698917
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP61008654A Granted JPS62166433A (ja) | 1986-01-17 | 1986-01-17 | ソ−ス・プログラムの記述チェック方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS62166433A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0334030A (ja) * | 1989-06-30 | 1991-02-14 | Fujitsu Ltd | コンパイラ装置 |
-
1986
- 1986-01-17 JP JP61008654A patent/JPS62166433A/ja active Granted
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0334030A (ja) * | 1989-06-30 | 1991-02-14 | Fujitsu Ltd | コンパイラ装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0426748B2 (ja) | 1992-05-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5202967A (en) | Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction | |
| US6113650A (en) | Compiler for optimization in generating instruction sequence and compiling method | |
| US6948056B1 (en) | Maintaining even and odd array pointers to extreme values by searching and comparing multiple elements concurrently where a pointer is adjusted after processing to account for a number of pipeline stages | |
| US8583898B2 (en) | System and method for managing processor-in-memory (PIM) operations | |
| US5774709A (en) | Enhanced branch delay slot handling with single exception program counter | |
| US5247696A (en) | Method for compiling loops having recursive equations by detecting and correcting recurring data points before storing the result to memory | |
| US4539635A (en) | Pipelined digital processor arranged for conditional operation | |
| US5752015A (en) | Method and apparatus for repetitive execution of string instructions without branch or loop microinstructions | |
| US6202141B1 (en) | Method and apparatus for performing vector operation using separate multiplication on odd and even data elements of source vectors | |
| JPS63132338A (ja) | コード生成方法 | |
| US4541047A (en) | Pipelined data processing system | |
| EP0093430A2 (en) | Pipeline data processing system | |
| US6862730B1 (en) | Register allocation in code translation between processors | |
| EP0354740B1 (en) | Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction | |
| CN107589960B (zh) | 一种基于寄存器访问冲突检测的dsp指令模拟方法 | |
| EP0730220A2 (en) | Method and apparatus for rapid execution of control transfer instructions | |
| US5678016A (en) | Processor and method for managing execution of an instruction which determine subsequent to dispatch if an instruction is subject to serialization | |
| US7219335B1 (en) | Method and apparatus for stack emulation during binary translation | |
| JP7077862B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
| US7966474B2 (en) | System, method and computer program product for translating storage elements | |
| US6178497B1 (en) | System and method for determining the relative age of instructions in a processor | |
| JPH0426748B2 (ja) | ||
| US5045992A (en) | Apparatus for executing instruction regardless of data types and thereafter selectively branching to other instruction upon determining of incompatible data type | |
| GB2069733A (en) | Conditional instruction execution in a pipelined processor | |
| US4935849A (en) | Chaining and hazard apparatus and method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |