JP2944500B2 - Compiling apparatus and method - Google Patents

Compiling apparatus and method

Info

Publication number
JP2944500B2
JP2944500B2 JP3386396A JP3386396A JP2944500B2 JP 2944500 B2 JP2944500 B2 JP 2944500B2 JP 3386396 A JP3386396 A JP 3386396A JP 3386396 A JP3386396 A JP 3386396A JP 2944500 B2 JP2944500 B2 JP 2944500B2
Authority
JP
Japan
Prior art keywords
instruction
data
parallel
program
loop
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 - Lifetime
Application number
JP3386396A
Other languages
Japanese (ja)
Other versions
JPH09231087A (en
Inventor
雄治 藤原
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.)
NIPPON DENKI AISHII MAIKON SHISUTEMU KK
Original Assignee
NIPPON DENKI AISHII MAIKON SHISUTEMU KK
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 NIPPON DENKI AISHII MAIKON SHISUTEMU KK filed Critical NIPPON DENKI AISHII MAIKON SHISUTEMU KK
Priority to JP3386396A priority Critical patent/JP2944500B2/en
Publication of JPH09231087A publication Critical patent/JPH09231087A/en
Application granted granted Critical
Publication of JP2944500B2 publication Critical patent/JP2944500B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明はコンパイル装置およ
び方法に関し、特に2つの独立アドレス空間メモリのデ
ータを同時アクセスする並列命令を有するプロセッサを
対象とするコンパイル装置および方法に関する。
The present invention relates to a compiling apparatus and method, and more particularly to a compiling apparatus and method for a processor having parallel instructions for simultaneously accessing data in two independent address space memories.

【0002】[0002]

【従来の技術】一般に、この種のコンパイル装置および
方法は、原始プログラム(ソースプログラム)を目的プ
ログラムにコンパイルするソフトウェア手段であるコン
パイラを格納したデータ処理装置により実現される。こ
のコンパイラは、プログラム記述用言語の翻訳プログラ
ムとして、ソフトウェア開発の分野において広く使われ
ており、Cコンパイラの出現によって、マイクロプロセ
ッサにおけるソフトウェア開発分野にも広まっている。
また、最近においては、デュアル・ロード/ストアによ
る並列実行を可能にした信号処理用のマイクロプロセッ
サにおけるソフトウェア開発においても使われ始めてい
る。コンパイラとしては、並列実行命令を有効に出力
し、高速実行可能なコードを出力することが要求され
る。
2. Description of the Related Art Generally, a compiling apparatus and method of this type are realized by a data processing apparatus storing a compiler which is software means for compiling a source program (source program) into a target program. This compiler has been widely used in the field of software development as a translation program for a program description language, and has also spread to the field of software development in microprocessors with the advent of the C compiler.
In recent years, it has begun to be used in software development of a signal processing microprocessor that enables parallel execution by dual load / store. A compiler is required to output parallel execution instructions effectively and output code that can be executed at high speed.

【0003】図10は、このコンパイラを格納したデー
タ処理装置である従来のコンパイル装置の構成および動
作環境を示すブロック図である。図10に示されるよう
に、この従来のコンパイル装置101は、字句解析手段
1001,構文解析手段1002,データ配置手段10
03,コード生成手段1004とを備え、原始プログラ
ム1005,アセンブラ記述プログラム1006を格納
する補助記憶装置102に接続されている。
FIG. 10 is a block diagram showing a configuration and an operating environment of a conventional compiling device which is a data processing device storing the compiler. As shown in FIG. 10, this conventional compiling device 101 includes a lexical analysis unit 1001, a syntax analysis unit 1002, and a data arrangement unit 10
03, a code generation means 1004, and are connected to the auxiliary storage device 102 for storing the source program 1005 and the assembler description program 1006.

【0004】図10において、まず、字句解析手段10
01において、補助記憶装置102により読み出された
原始プログラム1005が字句に分解されて字句解析が
行われる。構文解析手段1002において、字句解析手
段1001において字句解析された結果を受けて、構文
が構築されて当該構文が認識される。そして、データ配
置手段1003においては、全てのデータの配置先をY
メモリに定める。コード生成手段1004においては、
構文解析手段1002において構文解析された結果とデ
ータ配置手段1003において定められたデータの配置
先とにより、アセンブラ記述プログラム1006を生成
して補助記憶装置102に格納する。
In FIG. 10, first, the lexical analysis means 10
In 01, the source program 1005 read by the auxiliary storage device 102 is decomposed into lexical characters and lexical analysis is performed. In response to the result of the lexical analysis performed by the lexical analysis means 1001, the syntax analysis means 1002 constructs a syntax and recognizes the syntax. Then, in the data arranging unit 1003, the arrangement destination of all data is Y
Determined in memory. In the code generation means 1004,
The assembler description program 1006 is generated based on the result of the syntax analysis performed by the syntax analysis unit 1002 and the data location determined by the data allocation unit 1003, and stored in the auxiliary storage device 102.

【0005】次に、図10に示した従来のコンパイル装
置において生成されるアセンブラ記述プログラムの具体
例について、図面を参照して説明する。
Next, a specific example of an assembler description program generated by the conventional compiling device shown in FIG. 10 will be described with reference to the drawings.

【0006】図6は、コンパイル装置101が入力する
原始プログラムの一例を示す説明図である。原始プログ
ラム601において、データ定義文602は、メモリ上
にデータの領域を確保することを指示する記述であり、
要素50個の変数work1,要素100個の変数wo
rk2およびwork3とを定義している。ループ外の
積和演算処理603は、変数work1の0番地の要素
と変数work2の0番地の要素とを乗算し、その結果
を変数resultに加算する処理である。ループ回数
50回中の積和演算処理604は、変数work1のi
番地の要素と変数work3のi番地の要素とを乗算
し、その結果を変数resultに加算する処理であ
る。ループ処理時、変数iは、0から順に49まで変化
するため、work1およびwork3の0番地から4
9番地までの要素がそれぞれ乗算され、データresu
ltに加算される。ループ回数100回中の積和演算処
理605についても同様である。
FIG. 6 is an explanatory diagram showing an example of a source program input by the compiling device 101. In the source program 601, the data definition statement 602 is a description that instructs to secure a data area on the memory.
Variable work of 50 elements, variable wo of 100 elements
rk2 and work3 are defined. The product-sum operation 603 outside the loop is a process of multiplying the element at address 0 of the variable work1 by the element at address 0 of the variable work2, and adding the result to the variable result. The product-sum operation processing 604 during the 50 loops is performed by using the i of the variable work1.
This is a process of multiplying the element at address and the element at address i of the variable work3, and adding the result to the variable result. At the time of the loop processing, the variable i changes from 0 to 49 in order, so that the value of the work 1 and the work 3 from address 0 to 4
The elements up to address 9 are each multiplied and the data resu
It is added to lt. The same applies to the product-sum operation processing 605 during 100 loops.

【0007】図2は、コンパイル装置101が出力する
アセンブラ記述プログラムの対象プロセッサの構成例を
示す説明図である。メモリ構成201は、インストラク
ション・メモリ202,データ・メモリX…203,デ
ータ・メモリY…204からなり、データ・メモリX…
203とデータ・メモリY…204とは、同じメモリ空
間を持つ。汎用レジスタ205は、R0,R1,R2の
3つのレジスタで構成され、主に演算用として使用す
る。データ・ポインタ・レジスタ206は、データ・メ
モリX…203をアクセスするDP0,DP1と、デー
タ・メモリY…204をアクセスするDP2,DP3と
からなる合計4つのレジスタで構成され、データ・メモ
リをアクセスする時に使用する。データ・ポインタ・レ
ジスタ構文207には、データ・ポインタ・レジスタへ
のアドレスを設定するアドレス設定命令構文208と、
データ・メモリをアクセスするアクセス命令構文209
とがある。また、データ・メモリのアクセスとアドレス
の更新を1命令で行うインクリメント命令構文210が
ある。並列命令構文211は、データ・メモリX…20
3のアクセスフィールドX…212と、データ・メモリ
Y…204のアクセスフィールドY…213とからな
り、1命令で同時にデータ・メモリX…203とデータ
・メモリY…204のアクセスを可能にする。ただし、
同じデータ・メモリの同時アクセスはできない。たとえ
ば、データ・メモリX…203とデータ・メモリX…2
03を1命令で同時にアクセスすることはできない。以
降、データ・メモリX…203はXメモリと称し、デー
タ・メモリY…204はYメモリと称し、データ・ポイ
ンタ・レジスタはDPレジスタと称する。
FIG. 2 is an explanatory diagram showing a configuration example of a target processor of an assembler description program output by the compiling device 101. The memory configuration 201 includes an instruction memory 202, a data memory X ... 203, a data memory Y ... 204, and the data memory X ...
203 and the data memories Y... 204 have the same memory space. The general-purpose register 205 includes three registers R0, R1, and R2, and is mainly used for calculation. The data pointer register 206 is composed of a total of four registers including DP0 and DP1 for accessing the data memories X... 203 and DP2 and DP3 for accessing the data memories Y. Use when you do. The data pointer register syntax 207 includes an address setting instruction syntax 208 for setting an address to the data pointer register;
Access instruction syntax 209 for accessing data memory
There is. In addition, there is an increment instruction syntax 210 for accessing a data memory and updating an address with one instruction. The parallel instruction syntax 211 corresponds to the data memory X... 20
.. 212 and an access field Y... 213 of the data memory Y... 204, so that the data memory X... 203 and the data memory Y. However,
Simultaneous access to the same data memory is not possible. For example, data memory X ... 203 and data memory X ... 2
03 cannot be accessed simultaneously by one instruction. Hereafter, the data memories X... 203 are called X memories, the data memories Y... 204 are called Y memories, and the data pointer registers are called DP registers.

【0008】図11は、図6の原始プログラム601を
入力し、図2のプロセッサ構成に基づいて、従来のコン
パイラ装置101が出力するアセンブラ記述プログラム
の一例を示す説明図である。
FIG. 11 is an explanatory diagram showing an example of an assembler description program which receives the source program 601 shown in FIG. 6 and is output by the conventional compiler 101 based on the processor configuration shown in FIG.

【0009】図6のデータ定義文602により定義され
た変数work1,work2,work3は、すべて
Yメモリ領域に配置するため、図11のYメモリデータ
配置1101に翻訳される。図6のループ外の積和演算
処理603は、図11のアドレス設定命令A…110
2,アクセス命令A…1103,演算命令A…1109
に翻訳される。アドレス設定命令A…1102は、Yメ
モリに割り当てられた変数work1,work2のア
ドレスを、それぞれYメモリアクセス専用のDP3レジ
スタ,DP2レジスタに設定する命令であり、アクセス
命令A…1103は、DP3レジスタの指す内容、すな
わち変数work1の0番地の要素をR1レジスタに設
定し、DP2レジスタの指す内容、すなわち変数wor
k2の0番地の要素をR2レジスタに設定する命令であ
る。なお、DP2レジスタとDP3レジスタは、共にY
メモリアクセス専用のため、並列命令を用いることはで
きない。また、演算命令A…1109は、R1レジスタ
とR2レジスタとを乗算してR1レジスタに代入し、R
0レジスタとR1レジスタとを加算してR0レジスタに
代入する命令である。図6のループ回数50回中の積和
演算処理604は、図11のアドレス設定命令B…11
04,インクリメント命令B…1105,演算命令B…
1110に翻訳される。インクリメント命令B…110
5は、DP3レジスタの指す内容、すなわち変数wor
k1のi番地の要素をR1レジスタに設定後、DP3レ
ジスタを1加算し、DP2レジスタの指す内容、すなわ
ち変数work3のi番地の要素をR2レジスタに設定
後、DP2レジスタを1加算する命令である。なお、D
P2レジスタ,DP3レジスタは、共にYメモリアクセ
ス専用のため、並列命令を用いることはできない。ま
た、演算命令B…1110は、R1レジスタとR2レジ
スタとを乗算してR1レジスタに代入し、R0レジスタ
とR1レジスタとを加算してR0レジスタに代入する命
令である。図6のループ回数100回中の積和演算処理
605は、ループ回数50回中の積和演算処理604と
同様に、図11のアドレス設定命令C…1106,イン
クリメント命令C…1107,演算命令C…1111に
翻訳される。
The variables work1, work2, and work3 defined by the data definition statement 602 in FIG. 6 are all translated into the Y memory data arrangement 1101 in FIG. The product-sum operation 603 outside the loop in FIG.
2, access instruction A 1103, operation instruction A 1109
Translated to An address setting instruction A... 1102 is an instruction for setting the addresses of the variables work1 and work2 assigned to the Y memory in the DP3 register and the DP2 register dedicated to the Y memory access, respectively. The access instruction A. The content pointed to, that is, the element at address 0 of the variable work1 is set in the R1 register, and the content pointed to by the DP2 register, ie, the variable work
This is an instruction for setting the element at address 0 of k2 in the R2 register. Note that the DP2 and DP3 registers are both Y
Because of memory access only, parallel instructions cannot be used. The operation instruction A... 1109 multiplies the R1 register and the R2 register and substitutes the result in the R1 register.
This is an instruction for adding the 0 register and the R1 register and assigning the result to the R0 register. The product-sum operation processing 604 during the 50 loops shown in FIG.
04, increment instruction B ... 1105, operation instruction B ...
Translated to 1110. Increment instruction B 110
5 is the content pointed to by the DP3 register, that is, the variable
After the element at address i of k1 is set in the R1 register, the DP3 register is incremented by 1, and the content indicated by the DP2 register, that is, the element at address i of the variable work3 is set in the R2 register, and then the DP2 register is incremented by 1. . Note that D
Since the P2 register and the DP3 register are both dedicated to Y memory access, parallel instructions cannot be used. The operation instruction B... 1110 is an instruction for multiplying the R1 register and the R2 register and assigning the result to the R1 register, adding the R0 register and the R1 register and assigning the result to the R0 register. The product-sum operation processing 605 during 100 loops in FIG. 6 is similar to the product-sum operation 604 during 50 loops, and is similar to the address setting instruction C... 1106, increment instruction C. ... translated into 1111.

【0010】なお、コンパイラの最適化に関する参考文
献としては、『コンパイラ 産業図書 中田育男著』
(P216〜P268),『コンパイラ 培風館 原著
者A.V.エイホ、J.D.ウルマン 訳者 土居範
久』(P366〜P506),『プログラミング言語処
理系 岩波書店 佐々政孝著』(P396〜P496)
を参照している。
For reference on compiler optimization, see "Compiler Sangyo Tosho Ikuo Nakata"
(P216-P268), “Compiler Baifukan Original Author A. V. Eiho, J.A. D. Ullman translator Norihisa Doi (P366-P506), Programming language processing system Iwanami Shoten Masataka Sasa (P396-P496)
Is referred to.

【0011】[0011]

【発明が解決しようとする課題】従来のコンパイル装置
において、2つの独立アドレス空間メモリのデータを1
命令で同時アクセスする並列命令をもつプロセッサに対
し、原始プログラム中で定義されたデータをすべて同一
のデータ・メモリに配置しているため、並列命令は一切
生成できず、コード生成効率が良くないという欠点があ
る。これは、2つの独立アドレス空間メモリのデータを
別々の専用レジスタによるアドレス指定でアクセスしな
ければならないため、データの配置メモリを決定した後
でないと並列命令を含む命令コードが決定できないこと
によるものである。
In a conventional compiling device, data in two independent address space memories is stored in one memory.
For processors with parallel instructions that are accessed simultaneously by instructions, all data defined in the source program is located in the same data memory, so no parallel instructions can be generated, resulting in poor code generation efficiency. There are drawbacks. This is because the data in the two independent address space memories must be accessed by specifying addresses using separate dedicated registers, so that the instruction code including the parallel instruction cannot be determined until after the data allocation memory is determined. is there.

【0012】したがって、本発明の目的は、以上の課題
の少なくとも1つを解決するため、2つの独立アドレス
空間メモリのデータを1命令で同時アクセスする並列命
令をもつプロセッサに対し、コード生成効率の良い、特
に実行速度の速いアセンブラ記述プログラムを生成する
コンパイル装置および方法を提供することにある。
[0012] Therefore, an object of the present invention is to solve at least one of the above problems by providing a processor having parallel instructions for simultaneously accessing data in two independent address space memories with one instruction, thereby improving the code generation efficiency. It is an object of the present invention to provide a compiling apparatus and method for generating a good, particularly fast assembler description program.

【0013】[0013]

【課題を解決するための手段】そのため、本発明は、補
助記憶装置に格納されている原始プログラムを読み出し
字句に分解する字句解析手段と、前記字句解析手段によ
り字句解析された構文を認識する構文解析手段とを有
し、プログラム命令に用いられるデータの配置先を定
め、前記構文解析手段の解析結果および前記配置先に基
づきアセンブラ記述プログラムを生成し、前記補助記憶
装置に格納するコンパイル装置において、前記プログラ
ム命令が2つの独立アドレス空間メモリのデータを同時
アクセスする並列命令であるとき、前記各データの仮配
置先をそれぞれ定め、前記構文解析手段の解析結果およ
び前記仮配置先に基づき中間プログラムを生成するコー
ド生成手段と、前記中間プログラム中の前記並列命令お
よびループ命令を参照し並列命令参照回数およびループ
回数から前記並列命令ごとの並列命令実行回数としてル
ープ回数累計を算出し、前記各独立アドレス空間メモリ
を識別するメモリ種別を前記並列命令実行回数の大きい
命令順に前記仮配置先ごと選択して登録するメモリ種
別テーブルを生成し、データ配置を最適化するデータ配
置最適化手段と、前記中間プログラムおよび前記メモリ
種別テーブルに基づきコード再生成を行い前記アセンブ
ラ記述プログラムを生成し前記補助記憶装置に格納する
コード再生成手段と、を備えている。
Therefore, the present invention provides a lexical analysis means for reading a source program stored in an auxiliary storage device and decomposing the read lexical data, and a syntax for recognizing a syntax lexically analyzed by the lexical analysis means. A compiling device that has an analyzing unit, determines a location of data used for a program instruction, generates an assembler description program based on the analysis result of the syntax analyzing unit and the location, and stores the program in the auxiliary storage device. When the program instruction is a parallel instruction for simultaneously accessing data in two independent address space memories, a temporary location of each data is determined, and an intermediate program is determined based on the analysis result of the syntax analysis unit and the temporary location. Refer to code generation means for generating, and the parallel instruction and the loop instruction in the intermediate program Calculating the number of loops total from parallel instruction reference count and loop count as a parallel instruction execution count of each of the parallel instructions, each independent address space memory
Generates a memory type table for registering selected for each of the temporary placement destination large instruction order of the parallel instruction execution count the memory type that identifies a data placement optimization means for optimizing the data arrangement, the intermediate program and Code regenerating means for regenerating code based on the memory type table to generate the assembler description program and storing the program in the auxiliary storage device.

【0014】また、本発明は、補助記憶装置に格納され
ている原始プログラムを読み出し字句に分解する字句解
析ステップと、前記字句解析ステップにより字句解析さ
れた構文を認識する構文解析ステップとを有し、プログ
ラム命令にアクセスされるデータの配置先を定め、前記
構文解析ステップの解析結果および前記配置先に基づき
アセンブラ記述プログラムを生成し、前記補助記憶装置
に格納するコンパイル方法において、前記プログラム命
令が2つの独立アドレス空間メモリのデータを同時アク
セスする並列命令であるとき、前記各データの仮配置先
をそれぞれ定め、前記構文解析手段の解析結果および前
記仮配置先に基づき中間プログラムを生成するコード生
成ステップと、前記中間プログラム中の前記並列命令お
よびループ命令を参照し並列命令参照回数およびループ
回数から前記並列命令ごとの並列命令実行回数としてル
ープ回数累計を算出し、前記各独立アドレス空間メモリ
を識別するメモリ種別を前記並列命令実行回数の大きい
命令順に前記仮配置先ごと選択して登録するメモリ種
別テーブルを生成し、データ配置を最適化するデータ配
置最適化ステップと、前記中間プログラムおよび前記メ
モリ種別テーブルに基づきコード再生成を行い前記アセ
ンブラ記述プログラムを生成し前記補助記憶装置に格納
するコード再生成ステップと、を含んでいる。
Further, the present invention has a lexical analysis step of reading a source program stored in an auxiliary storage device and reading the lexical data, and a syntax analyzing step of recognizing a syntax lexically analyzed by the lexical analysis step. A compiling method for determining a location of data to be accessed by a program instruction, generating an assembler description program based on the result of the analysis in the syntax analysis step and the location, and storing the program in the auxiliary storage device; A code generation step of, when the instruction is a parallel instruction for simultaneously accessing data of two independent address space memories, respectively determining a temporary allocation destination of each data, and generating an intermediate program based on an analysis result of the syntax analysis means and the temporary allocation destination And the parallel instruction and the loop instruction in the intermediate program Calculates the loop count accumulated as a parallel instruction execution count of each of the parallel instructions from irradiation Mr parallel instruction reference count and loop count, each independent address space memory
Generates a memory type table for registering selected for each of the temporary placement destination large instruction order of the parallel instruction execution count the memory type that identifies a data arrangement optimization step for optimizing the data arrangement, the intermediate program and A code regenerating step of regenerating code based on the memory type table to generate the assembler description program and storing the program in the auxiliary storage device.

【0015】[0015]

【発明の実施の形態】次に、本発明を図面を参照して説
明する。
Next, the present invention will be described with reference to the drawings.

【0016】図1は、本発明のコンパイル装置の第1の
実施形態の構成および動作環境を示すブロック図であ
る。図1に示されるように、本実施形態のコンパイル装
置11は、字句解析手段101,構文解析手段102,
コード生成手段103,データ配置最適化手段104,
コード再生成手段105とを備え、原始プログラム10
6,中間プログラム107,並列命令実行回数テーブル
108,メモリ種別テーブル109,アセンブラ記述プ
ログラム110とを格納する補助記憶装置12に接続さ
れている。
FIG. 1 is a block diagram showing the configuration and operating environment of a first embodiment of the compiling device of the present invention. As shown in FIG. 1, the compiling device 11 of the present embodiment includes a lexical analyzer 101, a syntax analyzer 102,
Code generating means 103, data arrangement optimizing means 104,
A code regenerating means 105;
6, an intermediate program 107, a parallel instruction execution count table 108, a memory type table 109, and an assembler description program 110.

【0017】字句解析手段101は、図2に示した構成
例のプロセッサを対象とした原始プログラム106を補
助記憶装置12から読出し、字句に分解して字句解析を
行う。
The lexical analysis means 101 reads the source program 106 for the processor having the configuration example shown in FIG. 2 from the auxiliary storage device 12 and decomposes it into lexical data to perform lexical analysis.

【0018】構文解析手段102は、字句解析手段10
1において字句解析された結果を受けて、構文を構築し
当該構文を認識する。
The syntactic analysis means 102 includes the lexical analysis means 10
Receiving the result of the lexical analysis in 1, a syntax is constructed and the syntax is recognized.

【0019】コード生成手段103は、構文解析手段1
02で構文解析された結果を受けて、データの配置先と
して仮配置先を割り当て、すなわち、データ・メモリを
アクセスする時に使用するデータ・ポインタ・レジスタ
には、データと1対1で対応するDPレジスタ仮名を割
り当て、並列命令として生成可能な命令をすべて並列命
令として、中間プログラム107を、補助記憶装置12
に格納する。
The code generation means 103 includes the syntax analysis means 1
In response to the result of the syntax analysis in step 02, a temporary location is allocated as a data location, that is, a data pointer register used when accessing the data memory has a DP corresponding to data in a one-to-one correspondence. The intermediate program 107 is assigned a register pseudonym and all instructions that can be generated as parallel instructions are regarded as parallel instructions.
To be stored.

【0020】データ配置最適化手段104は、コード生
成手段103で生成された中間プログラム107を入力
し、並列命令で使用している2つのDPレジスタ仮名と
並列命令実行回数から構成される並列命令実行回数テー
ブル108を、補助記憶装置12に格納する。さらに、
並列命令実行回数の大きい値を持つ命令順に仮配置先ご
とのメモリ種別を選択し、仮配置先を割り当てるDPレ
ジスタ仮名とメモリ種別とからなるメモリ種別テーブル
109を生成し、補助記憶装置12に格納する。
The data arrangement optimizing means 104 receives the intermediate program 107 generated by the code generating means 103 and executes a parallel instruction execution composed of two DP register pseudonyms used in the parallel instructions and the number of parallel instruction executions. The frequency table 108 is stored in the auxiliary storage device 12. further,
A memory type for each temporary allocation destination is selected in the order of the instruction having a value of the number of times of parallel instruction execution, and a memory type table 109 including a DP register pseudonym and a memory type to which the temporary allocation destination is allocated is generated and stored in the auxiliary storage device 12. I do.

【0021】図3は、このデータ配置最適化手段104
の処理手順を示すフローチャートである。図3を参照し
て、この処理手順を詳細説明する。
FIG. 3 shows the data arrangement optimizing means 104.
6 is a flowchart showing the processing procedure of FIG. This processing procedure will be described in detail with reference to FIG.

【0022】まず、ループ回数初期化ステップ302に
おいて、ループ回数をカウントする変数LOOP_CN
Tを1で初期化する。次に、中間プログラム読み込みス
テップ303により、図1のコード生成手段103で作
成した中間プログラム107から1行読み込み、図3の
中間プログラム読み込み終了判定ステップ304におい
て、読み込み終了か否か判定し、読み込みが終了した場
合は並列命令実行回数テーブルソートステップ313へ
進む。読み込みが終了していない場合は、ループ命令判
定ステップ305に進む。
First, in a loop number initialization step 302, a variable LOOP_CN for counting the number of loops is set.
Initialize T with 1. Next, in an intermediate program reading step 303, one line is read from the intermediate program 107 created by the code generation means 103 in FIG. 1, and in an intermediate program reading end determination step 304 in FIG. When the processing is completed, the process proceeds to the parallel instruction execution count table sorting step 313. If the reading has not been completed, the process proceeds to the loop instruction determination step 305.

【0023】ループ命令判定ステップ305において、
読み込んだ行がループ命令か否か判定し、ループ命令の
場合はループ回数乗算ステップ306により、変数LO
OP_CNTにループ回数を乗算しLOOP_CNTに
代入する。そして、中間プログラム読み込みステップ3
03へ戻る。読み込んだ命令がループ命令でない場合
は、ループ命令終了判定ステップ307により、ループ
命令が終了したか否か判定し、ループ命令が終了した場
合は、変数LOOP_CNTをループ回数で除算しLO
OP_CNTに代入する。そして、中間プログラム読み
込みステップ303へ戻る。ループ終了命令でない場合
は、並列命令判定ステップ309に進む。
In the loop instruction determination step 305,
It is determined whether the read line is a loop instruction or not.
OP_CNT is multiplied by the number of loops and assigned to LOOP_CNT. Then, the intermediate program reading step 3
Return to 03. If the read instruction is not a loop instruction, it is determined in a loop instruction end determination step 307 whether or not the loop instruction has ended. If the loop instruction has ended, the variable LOOP_CNT is divided by the number of loops to determine the LO instruction.
Substitute for OP_CNT. Then, the process returns to the intermediate program reading step 303. If the instruction is not a loop end instruction, the process proceeds to a parallel instruction determination step 309.

【0024】並列命令判定ステップ309において、並
列命令か否か判定し、並列命令の場合は同一並列命令判
定ステップ310により、並列命令実行回数テーブルに
同一の並列命令がすでに存在するかどうか判定し、存在
しない場合は同一並列命令実行回数テーブル設定ステッ
プ311により、図4の並列命令実行回数テーブル40
1に、並列命令のオペランドであるDPレジスタ仮名と
LOOP_CNTを設定し、図3の中間プログラム読み
込みステップ303へ戻る。並列命令実行回数テーブル
にすでに存在する場合は、同一並列命令参照回数加算ス
テップ312に進む。
In the parallel instruction determination step 309, it is determined whether or not the instruction is a parallel instruction. If the instruction is a parallel instruction, the same parallel instruction determination step 310 determines whether or not the same parallel instruction already exists in the parallel instruction execution count table. If not, the parallel instruction execution count table 40 shown in FIG.
1, the DP register pseudonym and LOOP_CNT, which are the operands of the parallel instruction, are set, and the process returns to the intermediate program reading step 303 in FIG. If the parallel instruction execution count table already exists, the process proceeds to the same parallel instruction reference count addition step 312.

【0025】同一並列命令参照回数加算ステップ312
において、図4の並列命令実行回数テーブル401の同
じ要素にLOOP_CNTを設定する。並列命令でない
場合は、図3の中間プログラム読み込みステップ303
へ戻る。
The same parallel instruction reference count addition step 312
, LOOP_CNT is set to the same element in the parallel instruction execution count table 401 of FIG. If the instruction is not a parallel instruction, an intermediate program reading step 303 in FIG.
Return to

【0026】並列命令実行回数テーブルソートステップ
313では、図4の並列命令実行回数テーブル401の
ループ回数累計404が大きい命令順にソートする。次
に、図3のメモリ種別テーブル生成ステップ314によ
り、図4の並列命令実行回数テーブル401に登録され
ているDPレジスタ仮名を、メモリ種別テーブル405
に登録する。さらに、図3のメモリ種別設定ステップ3
15により、図4のメモリ種別テーブル405に、ルー
プ回数累計404が一番大きい2つのDPレジスタ仮名
の片方のメモリ種別407に“X”を設定し、もう片方
に“Y”を設定する。次に、図3の未解決メモリ種別判
定ステップ316により、図4のメモリ種別テーブル4
05のメモリ種別407に未解決な要素があるか否か判
定し、未解決な要素がある場合は、ステップ318に進
む。
In the parallel instruction execution frequency table sorting step 313, the instructions are sorted in the order of the total number of loop times 404 of the parallel instruction execution frequency table 401 of FIG. Next, in the memory type table generation step 314 of FIG. 3, the DP register pseudonym registered in the parallel instruction execution count table 401 of FIG.
Register with. Further, the memory type setting step 3 in FIG.
In step S15, “X” is set to one memory type 407 of the two DP register pseudonyms having the largest total loop count 404 in the memory type table 405 of FIG. 4, and “Y” is set to the other. Next, in the unsolved memory type determination step 316 in FIG.
It is determined whether or not there is an unresolved element in the memory type 407 of 05, and if there is an unresolved element, the process proceeds to step 318.

【0027】ステップ318において、並列命令実行回
数テーブル401を参照し、次にループ回数累計404
が大きい命令の2つのDPレジスタ仮名のメモリ種別4
07を設定する。2つのDPレジスタ仮名のメモリ種別
407が共に設定されている場合は、図3の未解決メモ
リ種別判定ステップ316へ進む。また、DPレジスタ
仮名の一方のみ、図4のメモリ種別407が設定されて
いる場合は、メモリ種別407が設定されているDPレ
ジスタ仮名と異なるメモリ種別407を設定する。さら
に、DPレジスタ仮名が2つとも設定されていない場合
は、片方のメモリ種別407に“X”を設定し、もう片
方に“Y”を設定し、図3の未解決メモリ種別判定ステ
ップ316へ戻る。
In step 318, the parallel instruction execution count table 401 is referred to,
Type of two DP register pseudonyms for instructions with large 4
07 is set. If the memory types 407 of the two DP register pseudonyms are both set, the process proceeds to the unresolved memory type determination step 316 in FIG. When the memory type 407 in FIG. 4 is set for only one of the DP register pseudonyms, a memory type 407 different from the DP register pseudonym in which the memory type 407 is set is set. Further, if neither DP register pseudonym is set, "X" is set in one memory type 407 and "Y" is set in the other memory type, and the process proceeds to the unresolved memory type determination step 316 in FIG. Return.

【0028】未解決メモリ種別判定ステップ316にお
いて、未解決な要素がない場合は、図1のデータ配置最
適化手段104の処理を終了し、図1のコード再生成手
段105へ進む。
If there is no unresolved element in the unresolved memory type determination step 316, the processing of the data arrangement optimizing means 104 of FIG. 1 is terminated, and the process proceeds to the code regenerating means 105 of FIG.

【0029】コード再生成手段105は、コード生成手
段103、データ配置最適化手段104で生成された中
間プログラム107、メモリ種別テーブル109を入力
して、メモリ種別テーブル109のメモリ種別に従った
データ配置を行い、中間プログラム107のDPレジス
タ仮名に、決定したDPレジスタ名を割り当て、並列命
令生成可能な命令は並列命令として、不可能なものは並
列命令を2命令に分割した命令として、アセンブラ記述
プログラム110を生成して補助記憶装置12に格納す
る。
The code regenerating means 105 receives the intermediate program 107 and the memory type table 109 generated by the code generating means 103 and the data layout optimizing means 104, and performs data allocation according to the memory type of the memory type table 109. And assigns the determined DP register name to the DP register pseudonym of the intermediate program 107. Instructions that can generate parallel instructions are regarded as parallel instructions, and those that are not can be regarded as instructions obtained by dividing a parallel instruction into two instructions. 110 is generated and stored in the auxiliary storage device 12.

【0030】次に、本発明のコンパイル装置の第2の実
施形態を説明する。本実施形態のコンパイル装置は、図
1に示した第1の実施形態におけるデータ配置最適化手
段104の処理手順のみが異なる。図5は、本実施形態
におけるデータ配置最適化手段の処理手順を示すフロー
チャートである。図5を参照して、この処理手順のみを
詳細説明することにする。
Next, a second embodiment of the compiling device of the present invention will be described. The compiling device of the present embodiment differs from the compiling device of the first embodiment only in the processing procedure of the data arrangement optimizing means 104 in the first embodiment shown in FIG. FIG. 5 is a flowchart showing a processing procedure of the data arrangement optimizing means in the present embodiment. With reference to FIG. 5, only this processing procedure will be described in detail.

【0031】まず、ループ回数初期化ステップ501に
おいて、ループ回数をカウントする変数LOOP_CN
Tを1で初期化する。次に、中間プログラム読み込みス
テップ502により、図1のコード生成手段103で作
成した中間プログラム107から1行読み込み、図5の
中間プログラム読み込み終了判定ステップ503におい
て、読み込み終了か否か判定し、読み込みが終了した場
合は並列命令実行回数テーブルソートステップ513へ
進む。読み込みが終了していない場合は、並列命令判定
ステップ504に進む。並列命令判定ステップ504に
おいて、並列命令か否か判定し、並列命令でない場合ル
ープ命令判定ステップ509に進み、並列命令の場合は
同一並列命令判定ステップ505に進む。
First, in a loop number initialization step 501, a variable LOOP_CN for counting the number of loops is set.
Initialize T with 1. Next, in the intermediate program reading step 502, one line is read from the intermediate program 107 created by the code generation means 103 in FIG. 1, and in the intermediate program reading completion determining step 503 in FIG. When the processing is completed, the process proceeds to the parallel instruction execution number table sorting step 513. If the reading has not been completed, the process proceeds to the parallel instruction determination step 504. In the parallel instruction determination step 504, it is determined whether or not the instruction is a parallel instruction. If the instruction is not a parallel instruction, the process proceeds to a loop instruction determination step 509. If the instruction is a parallel instruction, the process proceeds to the same parallel instruction determination step 505.

【0032】同一並列命令判定ステップ505におい
て、並列命令実行回数テーブルに同一の並列命令がすで
に存在するかどうか判定し、存在する場合は同一並列命
令参照回数加算ステップ508に進み、存在しない場合
は同一並列命令実行回数テーブル設定ステップ506に
進む。同一並列命令実行回数テーブル設定ステップ50
6において、図4の並列命令実行回数テーブル401
に、並列命令のオペランドであるDPレジスタ仮名とL
OOP_CNTを設定する。図5のメモリ種別テーブル
生成ステップ507により、メモリの種別を設定するた
めの、図4のメモリ種別テーブル405を生成し、図5
の中間プログラム読み込みステップ502へ戻る。ま
た、同一並列命令参照回数加算ステップ508におい
て、図4の並列命令実行回数テーブル401の同じ要素
にLOOP_CNTを設定し、中間プログラム読み込み
ステップ502へ戻る。
In the same parallel instruction determination step 505, it is determined whether or not the same parallel instruction already exists in the parallel instruction execution count table. If the same parallel instruction already exists, the flow proceeds to the same parallel instruction reference count addition step 508; The process proceeds to the parallel instruction execution count table setting step 506. Same parallel instruction execution count table setting step 50
6, the parallel instruction execution count table 401 shown in FIG.
And the DP register pseudonym and L which are the operands of the parallel instruction
Set OOP_CNT. In the memory type table generation step 507 of FIG. 5, the memory type table 405 of FIG. 4 for setting the type of memory is generated.
The process returns to the step 502 for reading an intermediate program. Further, in the same parallel instruction reference count addition step 508, LOOP_CNT is set to the same element in the parallel instruction execution count table 401 in FIG.

【0033】ループ命令判定ステップ509において、
読込んだ行がループ命令か否か判定し、ループ命令の場
合はループ回数乗算ステップ510により、変数LOO
P_CNTにループ回数を乗算しLOOP_CNTに代
入し、中間プログラム読み込みステップ502へ戻る。
一方、読み込んだ命令がループ命令でない場合は、ルー
プ命令終了判定ステップ511に進む。
In the loop instruction determination step 509,
It is determined whether or not the read line is a loop instruction. If the read instruction is a loop instruction, the variable LOO
P_CNT is multiplied by the number of loops and assigned to LOOP_CNT, and the process returns to the intermediate program reading step 502.
On the other hand, if the read instruction is not a loop instruction, the process proceeds to a loop instruction end determination step 511.

【0034】ループ命令終了判定ステップ511におい
て、ループ命令が終了したか判定し、ループ命令が終了
した場合は、ステップ512において変数LOOP_C
NTをループ回数で除算しLOOP_CNTに代入し、
中間プログラム読み込みステップ502へ戻る。一方、
ループ終了命令でない場合は、中間プログラム読み込み
ステップ502へ戻る。
In loop instruction end determination step 511, it is determined whether or not the loop instruction has ended. If the loop instruction has ended, in step 512 the variable LOOP_C
NT is divided by the number of loops and assigned to LOOP_CNT,
The process returns to the intermediate program reading step 502. on the other hand,
If the instruction is not a loop end instruction, the process returns to the intermediate program reading step 502.

【0035】並列命令実行回数テーブルソートステップ
513では、図4の並列命令実行回数テーブル401の
ループ回数累計404が大きい順にソートする。次に、
図5のメモリ種別設定ステップ514により、図4のメ
モリ種別テーブル405に、ループ回数累計404が一
番大きい2つのDPレジスタ仮名2つの片方のメモリ種
別407に“X”を設定し、もう片方に“Y”を設定す
る。さらに、図5の未解決メモリ種別判定ステップ51
5により、図4のメモリ種別テーブル405のメモリ種
別407に未解決な要素があるか否か判定し、未解決な
要素がある場合は、ステップ516に進む。
In the parallel instruction execution count table sorting step 513, the parallel instruction execution count table 401 in FIG. next,
According to the memory type setting step 514 in FIG. 5, “X” is set to one of the two memory types 407 of the two DP register pseudonyms having the largest total loop count 404 in the memory type table 405 of FIG. Set “Y”. Further, the unresolved memory type determination step 51 in FIG.
5, it is determined whether or not there is an unresolved element in the memory type 407 of the memory type table 405 in FIG. 4. If there is an unresolved element, the process proceeds to step 516.

【0036】ステップ516において、並列命令実行回
数テーブル401を参照し、次にループ回数累計404
が大きい2つのDPレジスタ仮名のメモリ種別407を
設定する。2つのDPレジスタ仮名のメモリ種別407
がともに設定されている場合は、図5の未解決メモリ種
別判定ステップ515へ進む。また、DPレジスタ仮名
の一方のみ、図4のメモリ種別407が設定されている
場合は、メモリ種別407が設定されているDPレジス
タ仮名と異なるメモリ種別407を設定する。さらに、
DPレジスタ仮名が2つとも設定されていない場合は、
片方のメモリ種別407に“X”を設定し、もう片方に
“Y”を設定し、図5の未解決メモリ種別判定ステップ
515へ戻る。
In step 516, the parallel instruction execution count table 401 is referred to,
Are set, the memory type 407 of the two DP register pseudonyms with the larger. Memory type 407 of two DP register pseudonyms
If both are set, the process proceeds to the unresolved memory type determination step 515 in FIG. When the memory type 407 in FIG. 4 is set for only one of the DP register pseudonyms, a memory type 407 different from the DP register pseudonym in which the memory type 407 is set is set. further,
If neither DP register pseudonym is set,
“X” is set in one memory type 407 and “Y” is set in the other memory type, and the process returns to the unresolved memory type determination step 515 in FIG.

【0037】未解決メモリ種別判定ステップ516にお
いて、未解決な要素がない場合は、図1のデータ配置最
適化手段104の処理を終了し、図1のコード再生成手
段105へ進む。
If there is no unresolved element in the unresolved memory type determination step 516, the processing of the data arrangement optimizing means 104 in FIG. 1 is terminated, and the flow advances to the code regenerating means 105 in FIG.

【0038】次に、図1に示した本発明のコンパイル装
置の動作について図面を参照して説明する。
Next, the operation of the compiling device of the present invention shown in FIG. 1 will be described with reference to the drawings.

【0039】まず、図1の字句解析手段101により、
補助記憶装置12から図6の原始プログラム601を読
み出し、原始プログラム601を字句に分解し字句解析
を行う。次に、図1の構文解析手段102により、字句
解析手段101で字句解析された結果を受けて、構文が
構築され認識される。
First, the lexical analysis means 101 of FIG.
The source program 601 in FIG. 6 is read from the auxiliary storage device 12, and the source program 601 is decomposed into lexical characters and lexical analysis is performed. Next, the syntax analysis unit 102 shown in FIG. 1 receives the result of the lexical analysis by the lexical analysis unit 101 and constructs and recognizes the syntax.

【0040】次に、コード生成手段103により、構文
解析手段102で構文解析された結果を受けてデータの
配置先として仮配置先を割り当て、すなわち、データ・
メモリをアクセスする時に使用するデータ・ポインタ・
レジスタには、データと1対1で対応するDPレジスタ
仮名を割り当て、並列命令として生成可能な命令をすべ
て並列命令として、中間プログラムのコードを生成し、
補助記憶装置12に格納する。図7は、この中間プログ
ラム例を示す説明図である。この時、並列命令として生
成可能な命令は、図7の並列命令A…702,並列命令
B…704,並列命令C…707である。
Next, the code generation means 103 receives the result of the syntax analysis by the syntax analysis means 102 and assigns a temporary location as the data location, ie,
Data pointer used when accessing memory
A DP register pseudonym corresponding to the data in a one-to-one correspondence is assigned to the register, and all instructions that can be generated as parallel instructions are generated as parallel instructions to generate an intermediate program code.
It is stored in the auxiliary storage device 12. FIG. 7 is an explanatory diagram showing an example of this intermediate program. At this time, the instructions that can be generated as the parallel instructions are the parallel instructions A 702, the parallel instructions B 704, and the parallel instructions C 707 in FIG.

【0041】次に、図1のデータ配置最適化手段104
における処理手順を示すフローチャートである図3を参
照して説明を続ける。また、図8は、図3の処理手順に
おける並列命令実行回数テーブルとメモリ種別テーブル
の具体的な設定内容の変化例を示す説明図である。
Next, the data arrangement optimizing means 104 shown in FIG.
The description will be continued with reference to FIG. 3 which is a flowchart showing the processing procedure in. FIG. 8 is an explanatory diagram showing an example of a change in specific setting contents of the parallel instruction execution count table and the memory type table in the processing procedure of FIG.

【0042】まず、ループ回数初期化ステップ302に
おいて、ループ回数をカウントする変数LOOP_CN
Tを1で初期化する。次に、中間プログラム読み込みス
テップ303により、図1のコード生成手段103で作
成した図7の中間プログラム700からクリア命令70
1を読み込む。中間プログラム読み込み終了判定ステッ
プ304において、読み込みが終了していないと判定さ
れる。読み込んだ行は図7のクリア命令701であるか
ら、図3のループ命令判定ステップ305でループ命令
でないと判定され、ループ命令終了判定ステップ307
でループ終了命令でもないと判定され、さらに、並列命
令判定ステップ309で並列命令でもないと判定され、
中間プログラム読み込みステップ303へ戻る。この処
理をループ命令、ループ終了命令または並列命令が出現
するまで続け、図7の並列命令A702を中間プログラ
ム700から読み込む。
First, in a loop number initialization step 302, a variable LOOP_CN for counting the number of loops is set.
Initialize T with 1. Next, in the intermediate program reading step 303, the clear instruction 70 is obtained from the intermediate program 700 of FIG. 7 created by the code generation means 103 of FIG.
Read 1 In the intermediate program reading completion determination step 304, it is determined that the reading has not been completed. Since the read line is the clear instruction 701 in FIG. 7, it is determined that the read instruction is not a loop instruction in the loop instruction determination step 305 in FIG.
It is determined that the instruction is not a loop end instruction, and it is further determined that the instruction is not a parallel instruction in the parallel instruction determination step 309.
The process returns to the intermediate program reading step 303. This processing is continued until a loop instruction, a loop end instruction, or a parallel instruction appears, and the parallel instruction A 702 in FIG.

【0043】次に、図3の中間プログラム読み込み終了
判定ステップ304において読み込みが終了していない
と判定され、ループ命令判定ステップ305でループ命
令でないと判定され、ループ命令終了判定ステップ30
7でループ終了命令でもないと判定される。次の並列命
令判定ステップ309で並列命令と判定され、同一並列
命令判定ステップ310に進み、並列命令実行回数テー
ブルに同一の並列命令がすでに存在するか判定する。存
在しないので、同一並列命令実行回数テーブル設定ステ
ップ311により、図8の並列命令実行回数テーブル8
01に並列命令のオペランドであるDPレジスタ仮名D
P@work1、DP@work2とLOOP_CNT
の1を、並列命令実行回数テーブル801に設定する。
要素802が設定した内容である。そして、図3の中間
プログラム読み込みステップ303へ戻る。
Next, in the intermediate program reading completion determining step 304 in FIG. 3, it is determined that the reading has not been completed, and in the loop instruction determining step 305, it is determined that the reading is not a loop instruction.
At 7, it is determined that the instruction is not a loop end instruction. In the next parallel instruction determination step 309, the instruction is determined to be a parallel instruction, and the flow advances to the same parallel instruction determination step 310 to determine whether the same parallel instruction already exists in the parallel instruction execution count table. Since there is no such instruction, the parallel instruction execution count table 8 shown in FIG.
01 is the DP register pseudonym D which is the operand of the parallel instruction
P @ work1, DP @ work2 and LOOP_CNT
Is set in the parallel instruction execution count table 801.
The element 802 is the set content. Then, the process returns to the intermediate program reading step 303 of FIG.

【0044】次に、ループ命令,ループ終了命令または
並列命令が出現するのは、図7のループ命令A…703
を読み込んだ時である。図3の中間プログラム読み込み
終了判定ステップ304において読み込みが終了してい
ないと判定される。次のループ命令判定ステップ305
でループ命令と判定され、ループ回数乗算ステップ30
6に進み、変数LOOP_CNTの1にループ回数の5
0を乗算し、LOOP_CNTに代入する。LOOP_
CNTには50が代入され、中間プログラム読み込みス
テップ303へ戻る。
Next, the appearance of a loop instruction, a loop end instruction, or a parallel instruction is caused by the loop instruction A... 703 in FIG.
It is when I read. In the intermediate program reading completion determination step 304 in FIG. 3, it is determined that the reading is not completed. Next loop instruction determination step 305
Is determined as a loop instruction, and a loop number multiplication step 30
Proceed to 6 and set the variable LOOP_CNT to 1 to set the number of loops to 5
Multiply by 0 and substitute for LOOP_CNT. LOOP_
50 is substituted for CNT, and the process returns to the intermediate program reading step 303.

【0045】次に、ループ命令、ループ終了命令または
並列命令が出現するのは、図7の並列命令B…704を
読み込んだ時である。並列命令A…702を読み込んだ
時と同じように処理を行い、図3の同一並列命令判定ス
テップ310により、並列命令実行回数テーブルに同一
の並列命令がすでに存在するか判定する。存在しないの
で、同一並列命令実行回数テーブル設定ステップ311
により、図8の並列命令実行回数テーブル801に、並
列命令のオペランドであるDPレジスタ仮名DP@wo
rk1、DP@work3とLOOP_CNTの50
を、並列命令実行回数テーブル801に設定する。要素
803が設定した内容である。そして、図3の中間プロ
グラム読み込みステップ303へ戻る。
Next, a loop instruction, a loop end instruction or a parallel instruction appears when the parallel instruction B... 704 in FIG. 7 is read. The processing is performed in the same manner as when the parallel instruction A... 702 is read, and the same parallel instruction determination step 310 in FIG. 3 determines whether the same parallel instruction already exists in the parallel instruction execution count table. Since there is no such instruction, the same parallel instruction execution count table setting step 311
As a result, the DP register pseudonym DP @ wo which is the operand of the parallel instruction is stored in the parallel instruction execution count table 801 of FIG.
rk1, DP @ work3 and LOOP_CNT 50
Is set in the parallel instruction execution count table 801. The element 803 is the content set. Then, the process returns to the intermediate program reading step 303 of FIG.

【0046】次に、ループ命令、ループ終了命令または
並列命令が出現するのは、図7のループ終了命令A…7
05を読み込んだ時である。図3の中間プログラム読み
込み終了判定ステップ304において、読み込みが終了
していないと判定され、ループ命令判定ステップ305
でループ命令でもないと判定される。次のループ命令終
了判定ステップ307でループ終了命令と判定され、ル
ープ回数除算ステップ308に進み、LOOP_CNT
の50をループ回数の50で除算し、LOOP_CNT
に代入する。LOOP_CNTには1が代入され、中間
プログラム読み込みステップ303へ戻る。
Next, the appearance of the loop instruction, the loop end instruction or the parallel instruction is caused by the loop end instruction A.
05. In the intermediate program reading completion determination step 304 of FIG. 3, it is determined that the reading is not completed, and a loop instruction determination step 305 is performed.
Is not a loop instruction. In the next loop instruction end determination step 307, it is determined that the instruction is a loop end instruction, and the flow advances to the loop number division step 308, where LOOP_CNT
Is divided by 50 of the number of loops, and LOOP_CNT
Substitute for 1 is assigned to LOOP_CNT, and the process returns to the intermediate program reading step 303.

【0047】以下、図7のループ命令B…706,並列
命令C…707,ループ終了命令B…708に対してそ
れぞれループ命令A…703,並列命令B…704,ル
ープ終了命令A…705と同じ処理を行い、図8の並列
命令実行回数テーブル801を生成する。
The following are the same as loop instructions A 703, parallel instructions B 704, and loop end instructions A 705 for loop instructions B 706, parallel instructions C 707, and loop end instructions B 708 in FIG. The process is performed to generate the parallel instruction execution count table 801 in FIG.

【0048】次に、図3の並列命令実行回数テーブルソ
ートステップ313により、図8の並列命令実行回数テ
ーブル801を、ループ回数累計の大きい順にソートす
る。ソートした結果がソート後並列命令実行回数テーブ
ル809である。図3のメモリ種別テーブル生成ステッ
プ314により、DPレジスタ仮名ごとにメモリ種別を
格納するテーブル、図8のメモリ種別テーブルA…80
5を生成する。図3のメモリ種別設定ステップ315に
より、図8のソート後並列命令実行回数テーブル809
で最大ループ回数累計値を持つ要素810のメモリ種別
を、メモリ種別テーブルA…805に設定する。メモリ
種別テーブルB…813が設定した結果である。
Next, in the parallel instruction execution count table sorting step 313 in FIG. 3, the parallel instruction execution count table 801 in FIG. 8 is sorted in descending order of the total loop count. The result of the sorting is a sorted parallel instruction execution count table 809. The table for storing the memory type for each DP register pseudonym by the memory type table generation step 314 in FIG. 3, the memory type table A... 80 in FIG.
5 is generated. By the memory type setting step 315 of FIG. 3, the parallel instruction execution count table 809 of FIG.
, The memory type of the element 810 having the maximum total number of loop times is set in the memory type table A. 813 are the results set.

【0049】次に、図3の未解決メモリ種別判定ステッ
プ316により、図8のメモリ種別テーブルB…813
に未解決な要素があるか否か判定し、未解決な要素があ
るので、ソート後並列命令実行回数テーブル809を参
照し、次にループ回数累計の大きい要素811のDPレ
ジスタ仮名AとDPレジスタ仮名Bの要素に対して、メ
モリ種別テーブルB…813のメモリ種別を設定する。
要素811のDPレジスタ仮名Aの要素のメモリ種別は
未決定で、要素811のDPレジスタ仮名Bの要素のメ
モリ種別は決定しているので、要素811のDPレジス
タ仮名Bの要素のメモリ種別と異なるメモリ種別“Y”
をメモリ種別テーブルB…813に設定する。メモリ種
別テーブルC…816は設定した結果である。
Next, the memory type table B... 813 of FIG.
It is determined whether or not there is any unresolved element. Since there are unresolved elements, the parallel instruction execution count table 809 after sorting is referred to. For the element of pseudonym B, the memory type of the memory type table B... 813 is set.
Since the memory type of the element of the DP register pseudonym A of the element 811 has not been determined and the memory type of the element of the DP register pseudonym B of the element 811 has been determined, it differs from the memory type of the element of the DP register pseudonym B of the element 811. Memory type "Y"
Is set in the memory type table B... 813. The memory type table C... 816 is the result of the setting.

【0050】次に、図3の未解決メモリ種別判定ステッ
プ316により、図8のメモリ種別テーブルC…816
に未解決な要素があるか否か判定し、未解決な要素はな
いので図1のコード再生成手段105へ進み、データ配
置最適化手段104の処理を終了する。
Next, the memory type table C... 816 of FIG.
It is determined whether there are any unresolved elements. Since there are no unresolved elements, the process proceeds to the code regenerating unit 105 in FIG. 1 and the processing of the data arrangement optimizing unit 104 is terminated.

【0051】次に、図1のコード再生成手段105によ
り、コード生成手段103で生成された図7の中間プロ
グラム700と図1のデータ配置最適化手段104によ
り生成された図8のメモリ種別テーブルC…816を基
に、メモリ種別テーブルC…816の要素814と、メ
モリ種別テーブルC…816の要素817を“Y”メモ
リに配置し、メモリ種別テーブルC…816の要素81
5を“X”メモリに配置し、アセンブラ記述プログラム
のコードを再生成する。図9は、このアセンブラ記述プ
ログラムの出力例を示す説明図である。図9のYメモリ
データ配置901は“Y”メモリに配置した結果であ
り、Xメモリデータ配置902は“X”メモリに配置し
た結果である。また、決定したYメモリデータ配置90
1とXメモリデータ配置902に従い、並列命令が生成
可能である並列命令A…904と並列命令B…905は
並列命令を生成し、並列命令が生成不可能であるアクセ
ス命令903は、並列命令を生成せずにアクセス命令を
生成している。その結果として、図1のアセンブラ記述
プログラム110を生成して補助記憶装置12に格納す
る。
Next, the intermediate program 700 of FIG. 7 generated by the code generation means 103 by the code regenerating means 105 of FIG. 1 and the memory type table of FIG. 8 generated by the data arrangement optimizing means 104 of FIG. Based on C. 816, the element 814 of the memory type table C... 816 and the element 817 of the memory type table C.
5 in the "X" memory and regenerate the code of the assembler description program. FIG. 9 is an explanatory diagram showing an output example of the assembler description program. The Y memory data arrangement 901 in FIG. 9 is the result of arrangement in the “Y” memory, and the X memory data arrangement 902 is the result of arrangement in the “X” memory. Also, the determined Y memory data arrangement 90
1 and X memory data arrangement 902, a parallel instruction A... 904 and a parallel instruction B... 905 that can generate a parallel instruction generate a parallel instruction, and an access instruction 903 that cannot generate a parallel instruction includes a parallel instruction. An access instruction is generated without generating it. As a result, the assembler description program 110 of FIG. 1 is generated and stored in the auxiliary storage device 12.

【0052】以上、本発明のコンパイル装置の動作説明
において、従来技術のコンパイル装置の動作説明と同じ
く、図6の原始プログラム601を入力してアセンブラ
記述プログラムを生成する一例を説明した。従来技術に
よるコンパイル装置が生成する図11のアセンブラ記述
プログラム1108と、本発明によるコンパイラが生成
する図9のアセンブラ記述プログラム900と、を比較
する。その結果、従来技術によるコンパイラが生成する
図11のアセンブラ記述プログラム1108の実行ステ
ップは、プログラム全体で614ステップとなるのに対
し、本発明によるコンパイラが生成する図9のアセンブ
ラ記述プログラム900の実行ステップは、プログラム
全体で464ステップとなり、実行速度が約1.32倍
速いコードを生成している。
In the above description of the operation of the compiling device of the present invention, an example of inputting the source program 601 of FIG. 6 and generating an assembler description program has been described, similarly to the description of the operation of the conventional compiling device. A comparison is made between the assembler description program 1108 of FIG. 11 generated by the compiling device according to the prior art and the assembler description program 900 of FIG. 9 generated by the compiler according to the present invention. As a result, the execution steps of the assembler description program 1108 in FIG. 11 generated by the compiler according to the prior art are 614 steps in the entire program, whereas the execution steps of the assembler description program 900 in FIG. Is 464 steps in the whole program, and generates a code whose execution speed is about 1.32 times faster.

【0053】[0053]

【発明の効果】以上説明したように、本発明のコンパイ
ル装置およびコンパイル方法は、実行回数の多い命令コ
ード順に並列命令が生成できるように、原始プログラム
中で定義されたデータを配置し、かつ並列命令を生成す
るため、コード生成効率の良い、特に実行速度の速いア
センブラ記述プログラムのコードを生成する効果があ
る。
As described above, according to the compiling apparatus and the compiling method of the present invention, data defined in a source program is arranged and parallelized so that parallel instructions can be generated in the order of the instruction code having the largest number of executions. Since the instruction is generated, there is an effect of generating a code of an assembler description program with high code generation efficiency, particularly, high execution speed.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明のコンパイル装置の第1の実施形態の構
成および動作環境を示すブロック図である。
FIG. 1 is a block diagram showing a configuration and an operating environment of a first embodiment of a compiling device of the present invention.

【図2】図1および図10のコンパイル装置が対象とす
るプロセッサ構成例を示す説明図である。
FIG. 2 is an explanatory diagram showing an example of a processor configuration targeted by the compiling devices of FIGS. 1 and 10;

【図3】図1のコンパイル装置のデータ配置最適化手段
におけるを示すフローチャートである。
FIG. 3 is a flowchart showing a data arrangement optimizing means of the compiling device of FIG. 1;

【図4】図1の並列命令実行回数テーブルとメモリ種別
テーブルの構成を示す説明図である。
FIG. 4 is an explanatory diagram showing a configuration of a parallel instruction execution count table and a memory type table of FIG. 1;

【図5】本発明のコンパイル装置の第2の実施形態のデ
ータ配置最適化手段における処理手順を示すフローチャ
ートである。
FIG. 5 is a flowchart showing a processing procedure in a data arrangement optimizing means of a second embodiment of the compiling device of the present invention.

【図6】図1および図10のコンパイル装置に入力する
原始プログラム例を示す説明図である。
FIG. 6 is an explanatory diagram showing an example of a source program input to the compiling device of FIGS. 1 and 10;

【図7】図1のコンパイル装置による中間プログラム出
力例を示す説明図である。
FIG. 7 is an explanatory diagram showing an example of an intermediate program output by the compiling device of FIG. 1;

【図8】図3の処理手順における並列命令実行回数テー
ブルとメモリ種別テーブルの具体的な設定内容の変化例
を示す説明図である。
8 is an explanatory diagram showing an example of a change in specific setting contents of a parallel instruction execution count table and a memory type table in the processing procedure of FIG. 3;

【図9】図1のコンパイル装置によるアセンブラ記述プ
ログラム出力例を示す説明図である。
FIG. 9 is an explanatory diagram showing an example of an assembler description program output by the compiling device of FIG. 1;

【図10】従来のコンパイル装置の構成および動作環境
を示すブロック図である。
FIG. 10 is a block diagram showing the configuration and operating environment of a conventional compiling device.

【図11】図10のコンパイル装置によるアセンブラ記
述プログラム出力例を示す説明図である。
11 is an explanatory diagram showing an example of an assembler description program output by the compiling device of FIG. 10;

【符号の説明】[Explanation of symbols]

11,101 コンパイル装置 12,102 補助記憶装置 101,1001 字句解析手段 102,1002 構文解析手段 103,1004 コード生成手段 104 データ配置最適化手段 105 コード再生成手段 106,1005,601 原始プログラム 107,700 中間プログラム 108,401,801 並列命令実行回数テーブル 109,405, メモリ種別テーブル 110,1006,900 アセンブラ記述プログラ
ム 201 メモリ構成 202 インストラクション・メモリ 203 データ・メモリX 204 データ・メモリY 205 汎用レジスタ 206 データ・ポインタ・レジスタ 207 データ・ポインタ・レジスタ構文 208 アドレス設定命令構文 209 アクセス命令構文 210 インクリメント命令構文 211 並列命令構文 212 アクセスフィールドX 213 アクセスフィールドY 302〜318,501〜516 処理ステップ 402 DPレジスタ仮名A 403 DPレジスタ仮名B 404 ループ回数累計 406 DPレジスタ仮名 407 メモリ種別 602 データ定義文 603 ループ外の積和演算処理 604 ループ回数50回中の積和演算処理 605 ループ回数100回中の積和演算処理 701 クリア命令 702 並列命令A 703 ループ命令A 704 並列命令B 705 ループ終了命令A 706 ループ命令B 707 並列命令C 708 ループ終了命令B 802〜804,806〜808,810〜812,8
14〜815,817要素 805 メモリ種別テーブルA 809 ソート後並列命令実行回数テーブル 813 メモリ種別テーブルB 816 メモリ種別テーブルC 901 Yメモリデータ配置 902 Xメモリデータ配置 903 アクセス命令 904 並列命令A 905 並列命令B 1003 データ配置手段 1101 Yメモリデータ配置 1102 アドレス設定命令A 1103 アクセス命令A 1104 アドレス設定命令B 1105 インクリメント命令B 1106 アドレス設定命令C 1107 インクリメント命令C 1108 アセンブラ記述プログラム 1109 演算命令A 1110 演算命令B 1111 演算命令C
11, 101 Compiling device 12, 102 Auxiliary storage device 101, 1001 Lexical analysis means 102, 1002 Syntax analysis means 103, 1004 Code generation means 104 Data layout optimization means 105 Code re-generation means 106, 1005, 601 Source program 107, 700 Intermediate program 108,401,801 Parallel instruction execution count table 109,405, Memory type table 110,1006,900 Assembler description program 201 Memory configuration 202 Instruction memory 203 Data memory X 204 Data memory Y 205 General-purpose register 206 Data Pointer register 207 Data pointer register syntax 208 Address setting instruction syntax 209 Access instruction syntax 210 Increment instruction syntax 21 Parallel instruction syntax 212 Access field X 213 Access field Y 302 to 318, 501 to 516 Processing step 402 DP register pseudonym A 403 DP register pseudonym B 404 Total loop count 406 DP register pseudonym 407 Memory type 602 Data definition statement 603 Product outside loop Sum operation processing 604 Product-sum operation processing during 50 loops 605 Product-sum operation processing during 100 loops 701 Clear instruction 702 Parallel instruction A 703 Loop instruction A 704 Parallel instruction B 705 Loop end instruction A 706 Loop instruction B 707 Parallel instruction C 708 Loop end instruction B 802-804, 806-808, 810-812, 8
14 to 815,817 elements 805 Memory type table A 809 Sorted parallel instruction execution count table 813 Memory type table B 816 Memory type table C 901 Y memory data arrangement 902 X memory data arrangement 903 Access instruction 904 Parallel instruction A 905 Parallel instruction B 1003 Data arrangement means 1101 Y memory data arrangement 1102 Address setting instruction A 1103 Access instruction A 1104 Address setting instruction B 1105 Increment instruction B 1106 Address setting instruction C 1107 Increment instruction C 1108 Assembler description program 1109 Operation instruction A 1110 Operation instruction B 1111 Operation Instruction C

───────────────────────────────────────────────────── フロントページの続き (56)参考文献 「1992年電子情報通信学会秋季大会論 文集」P.1−104〜105 「1990年電子情報通信学会春季大会論 文集」P.1−212 「電子情報通信学会技術研究報告」V ol.94,No.121(DPS94 43− 60)P.83−90 (58)調査した分野(Int.Cl.6,DB名) G06F 9/45 ──────────────────────────────────────────────────続 き Continuation of the front page (56) References “Electronic Information and Communication Engineers Autumn Meeting 1992 Collection”, p. 1-104-105 "Proceedings of the 1990 IEICE Spring Conference," p. 1-212 “IEICE Technical Report”, Vol. 94, no. 121 (DPS94 43-60) P. 83-90 (58) Fields surveyed (Int. Cl. 6 , DB name) G06F 9/45

Claims (4)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】 補助記憶装置に格納されている原始プロ
グラムを読み出し字句に分解する字句解析手段と、前記
字句解析手段により字句解析された構文を認識する構文
解析手段とを有し、プログラム命令に用いられるデータ
の配置先を定め、前記構文解析手段の解析結果および前
記配置先に基づきアセンブラ記述プログラムを生成し、
前記補助記憶装置に格納するコンパイル装置において、 前記プログラム命令が2つの独立アドレス空間メモリの
データを同時アクセスする並列命令であるとき、前記各
データの仮配置先をそれぞれ定め、前記構文解析手段の
解析結果および前記仮配置先に基づき中間プログラムを
生成するコード生成手段と、 前記中間プログラム中の前記並列命令およびループ命令
を参照し並列命令参照回数およびループ回数から前記並
列命令ごとの並列命令実行回数としてループ回数累計を
算出し、前記各独立アドレス空間メモリを識別するメモ
リ種別を前記並列命令実行回数の大きい命令順に前記仮
配置先ごと選択して登録するメモリ種別テーブルを生
成し、データ配置を最適化するデータ配置最適化手段
と、 前記中間プログラムおよび前記メモリ種別テーブルに基
づきコード再生成を行い前記アセンブラ記述プログラム
を生成し前記補助記憶装置に格納するコード再生成手段
と、を備えることを特徴とするコンパイル装置。
1. A lexical analyzer for reading a source program stored in an auxiliary storage device into read lexicals, and a lexical analyzer for recognizing a lexical analyzed syntax by the lexical analyzer. Determine the location of the data to be used, generate an assembler description program based on the analysis result of the syntax analysis means and the location,
In the compiling device for storing in the auxiliary storage device, when the program instruction is a parallel instruction for simultaneously accessing data of two independent address space memories, a provisional destination of each of the data is determined, and an analysis by the syntax analysis unit is performed. Code generating means for generating an intermediate program based on a result and the temporary placement destination; and referring to the parallel instruction and the loop instruction in the intermediate program, from the number of parallel instruction references and the number of loops as a parallel instruction execution number for each parallel instruction. A memo for calculating the total number of loop times and identifying each of the independent address space memories.
A data type optimizing means for generating a memory type table for selecting and registering a re-type for each of the temporary allocation destinations in the order of the number of times of parallel instruction execution, and optimizing data allocation; and the intermediate program and the memory type A code regenerating means for regenerating code based on a table, generating the assembler description program, and storing the program in the auxiliary storage device.
【請求項2】 前記コード生成手段が、前記並列命令に
アクセスされるデータを指定するデータ・ポインタ・レ
ジスタの名称としてデータ・ポインタ・レジスタ仮名を
割り当て前記仮配置先を指定する手段を備える、請求
項1記載のコンパイル装置。
2. The apparatus according to claim 1, wherein the code generation unit includes a unit that assigns a data pointer register pseudonym as a name of a data pointer register that specifies data accessed by the parallel instruction and specifies the temporary placement destination. The compiling device according to claim 1.
【請求項3】 補助記憶装置に格納されている原始プロ
グラムを読み出し字句に分解する字句解析ステップと、
前記字句解析ステップにより字句解析された構文を認識
する構文解析ステップとを有し、プログラム命令にアク
セスされるデータの配置先を定め、前記構文解析ステッ
プの解析結果および前記配置先に基づきアセンブラ記述
プログラムを生成し、前記補助記憶装置に格納するコン
パイル方法において、 前記プログラム命令が2つの独立アドレス空間メモリの
データを同時アクセスする並列命令であるとき、前記各
データの仮配置先をそれぞれ定め、前記構文解析手段の
解析結果および前記仮配置先に基づき中間プログラムを
生成するコード生成ステップと、 前記中間プログラム中の前記並列命令およびループ命令
を参照し並列命令参照回数およびループ回数から前記並
列命令ごとの並列命令実行回数としてループ回数累計を
算出し、前記各独立アドレス空間メモリを識別するメモ
リ種別を前記並列命令実行回数の大きい命令順に前記仮
配置先ごと選択して登録するメモリ種別テーブルを生
成し、データ配置を最適化するデータ配置最適化ステッ
プと、 前記中間プログラムおよび前記メモリ種別テーブルに基
づきコード再生成を行い前記アセンブラ記述プログラム
を生成し前記補助記憶装置に格納するコード再生成ステ
ップと、を含むことを特徴とするコンパイル方法。
3. A lexical analysis step of decomposing a source program stored in an auxiliary storage device into a read lexical,
A syntax analysis step of recognizing a syntax lexically analyzed by the lexical analysis step, determining a location of data accessed by a program instruction, and assembler description program based on the analysis result of the syntax analysis step and the location. Wherein the program instruction is a parallel instruction for simultaneously accessing data in two independent address space memories, a temporary destination of each of the data is determined, and the syntax A code generation step of generating an intermediate program based on an analysis result of the analysis means and the temporary placement destination; and a parallel processing for each of the parallel instructions based on a parallel instruction reference count and a loop count by referring to the parallel instruction and the loop instruction in the intermediate program. calculates the loop count accumulated as an instruction execution count, each Note identifies the stand address space memory
Generates a memory type table for registering by selecting re type for each of the temporary placement destination large instruction order of the parallel instruction execution count, and data placement optimization step of optimizing the data arrangement, said intermediate program and the memory type Regenerating code based on a table to generate the assembler description program and storing the program in the auxiliary storage device.
【請求項4】 前記コード生成ステップが、前記並列命
令にアクセスされるデータを指定するデータ・ポインタ
・レジスタの名称としてデータ・ポインタ・レジスタ仮
名を割り当て前記仮配置先を指定するステップを含
む、請求項3記載のコンパイル方法。
4. The code generating step includes a step of assigning a data pointer register pseudonym as a name of a data pointer register designating data to be accessed by the parallel instruction and designating the temporary placement destination. The compiling method according to claim 3.
JP3386396A 1996-02-21 1996-02-21 Compiling apparatus and method Expired - Lifetime JP2944500B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3386396A JP2944500B2 (en) 1996-02-21 1996-02-21 Compiling apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3386396A JP2944500B2 (en) 1996-02-21 1996-02-21 Compiling apparatus and method

Publications (2)

Publication Number Publication Date
JPH09231087A JPH09231087A (en) 1997-09-05
JP2944500B2 true JP2944500B2 (en) 1999-09-06

Family

ID=12398347

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3386396A Expired - Lifetime JP2944500B2 (en) 1996-02-21 1996-02-21 Compiling apparatus and method

Country Status (1)

Country Link
JP (1) JP2944500B2 (en)

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
「1990年電子情報通信学会春季大会論文集」P.1−212
「1992年電子情報通信学会秋季大会論文集」P.1−104〜105
「電子情報通信学会技術研究報告」Vol.94,No.121(DPS94 43−60)P.83−90

Also Published As

Publication number Publication date
JPH09231087A (en) 1997-09-05

Similar Documents

Publication Publication Date Title
CN109976761B (en) Software development kit generation method and device and terminal equipment
US5815720A (en) Use of dynamic translation to collect and exploit run-time information in an optimizing compilation system
Van Praet et al. Instruction set definition and instruction selection for ASIPs
US6226789B1 (en) Method and apparatus for data flow analysis
US6502237B1 (en) Method and apparatus for performing binary translation method and apparatus for performing binary translation
US6199095B1 (en) System and method for achieving object method transparency in a multi-code execution environment
US5689712A (en) Profile-based optimizing postprocessors for data references
US6535903B2 (en) Method and apparatus for maintaining translated routine stack in a binary translation environment
Polychronopoulos et al. Parafrase-2: An environment for parallelizing, partitioning, synchronizing, and scheduling programs on multiprocessors
Chandra et al. AVPGEN-a test generator for architecture verification
US5048018A (en) Debugging parallel programs by serialization
US6072952A (en) Method and apparatus for coalescing variables
US7028291B2 (en) Debugging method and debugging device
US6286133B1 (en) Method and apparatus for strategic compilation of source programs into two or more target languages
JPH07182194A (en) Method and apparatus for automatic generation of testing driver for selective execution of testing function by computer apparatus
JP2000035893A (en) Method for statically initializing arrangement of data processing system, data processing method, data processing system and computer readable storage medium storing program making computer execute its control procedure
Ebcioglu et al. Optimizations and oracle parallelism with dynamic translation
Coleman et al. The mobile programming system, Janus
US6330691B1 (en) Use of dynamic translation to provide breakpoints in non-writeable object code
Plevyak et al. Type directed cloning for object-oriented programs
JP3437932B2 (en) Code generation method and apparatus for array range check, and versioning method and apparatus
JP2944500B2 (en) Compiling apparatus and method
Davidson Simplifying code generation through peephole optimization
Oberhuber et al. DETOP-an interactive debugger for PowerPC based multicomputers
US6721945B1 (en) Optimization of calls in programming languages using pointers for passing reference parameters

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19990608