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
Application number
JP61008654A
Other languages
English (en)
Other versions
JPH0426748B2 (ja
Inventor
Koichiro Hotta
耕一郎 堀田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP61008654A priority Critical patent/JPS62166433A/ja
Publication of JPS62166433A publication Critical patent/JPS62166433A/ja
Publication of JPH0426748B2 publication Critical patent/JPH0426748B2/ja
Granted legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔概要〕 本発明は、回帰的参照がないと言う指示行を持つソース
・プログラムの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の
要素がシフトしたような形になり、ソース・プログラム
で指示された処理を正しく行うことが出来なくなる。こ
のようなデータの定義参照関係を回帰的参照があると言
う。
ソース・プログラムの中に下記のような文を書くことが
出来る。
*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の値によ
って決まり、実行してみないと判らない場合が多い。
〔発明の目的〕
本発明は、上記の考察に基づくものであって、回帰的参
照のないことをコンパイラに指示する記述の正当性をチ
ェック出来るようにしたソース・プログラムの記述チェ
ック方式を提供することを目的としている。
〔目的を達成するための手段〕
そしてそのため本発明のソース・プログラムの記述チェ
ック方式は、配列Aに関して回帰的参照がないことを指
示する指示行が付加されると共に添字式が配列で表され
る複数の配列Aを有するDO小ループ入力されたときに
は、配列Aをベクトル化した機械命令列を出力するよう
になったコンパイラにおいて、上記指示行の記述の正当
性をチェックするためのチェック用機械命令列を、上記
DO小ループ対応する機械命令列に埋め込むことを特徴
とするものである。
〔発明の実施例〕
以下、本発明の詳細な説明する。回帰的参照がないこと
をコンパイラに指示する指示行が誤りを含むのは、 (’i、 ”j l 1≦i ≦N&1 ≦j< i&
 Ll(i)=L2(j) )が真となるときである。
即ち、同一要素がアクセスされるときは、先行する側(
この場合はi)の最後のアクセスよりも後続する側(こ
の場合はj)のアクセスが先に行われると(j<i)で
NGになる可能性がある。本発明では、この論理式を高
速に判定することによるデハソグ機能の実現を図った。
上記の論理式は次のようにして実現できる。全てのN0
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は主メモリ上に存在するものである。
■の計算は次のようにして行われる。
VL     vt2.L2 VGS    vt3.N、−1 ViNV   vt4.vt2 ViST   vt3.DVT2.vt4ここで、VL
と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でなければ誤りがあることになる
上記■の計算を行うための機械命令列、■の計算を行う
ための機械命令列及び■の計算を行うための機械命令列
は、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小ル
ープ対応するベクトル中間テキストを作成し、そして上
述した■の計算を行うための中間テキスト、■の計算を
行うための中間テキスト及び■の計算を行うための中間
テキストを埋め込む。
〔発明の効果〕
以上の説明から明らかなように、本発明によれば、回帰
的参照がないことをコンパイラに指示する指示行の記述
が正しいか否かをチェックすることができる。
【図面の簡単な説明】
第1図はベクトル間接ストア命令を説明するための図、
第2図はコンパイラの概要を示す図、第3図はベクトル
計算を説明する図である。

Claims (1)

    【特許請求の範囲】
  1. 配列Aに関して回帰的参照がないことを指示する指示行
    が付加されると共に添字式が配列で表される複数の配列
    Aを有するDOループが入力されたときには、配列Aを
    ベクトル化した機械命令列を出力するようになったコン
    パイラにおいて、上記指示行の記述の正当性をチェック
    するためのチェック用機械命令列を、上記DOループに
    対応する機械命令列に埋め込むことを特徴とするソース
    ・プログラムの記述チェック方式。
JP61008654A 1986-01-17 1986-01-17 ソ−ス・プログラムの記述チェック方式 Granted JPS62166433A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0334030A (ja) * 1989-06-30 1991-02-14 Fujitsu Ltd コンパイラ装置

Cited By (1)

* Cited by examiner, † Cited by third party
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