JPH03102427A - 利用者変数の強制型変換処理方式 - Google Patents

利用者変数の強制型変換処理方式

Info

Publication number
JPH03102427A
JPH03102427A JP23944389A JP23944389A JPH03102427A JP H03102427 A JPH03102427 A JP H03102427A JP 23944389 A JP23944389 A JP 23944389A JP 23944389 A JP23944389 A JP 23944389A JP H03102427 A JPH03102427 A JP H03102427A
Authority
JP
Japan
Prior art keywords
type
performance
item
program
conversion
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.)
Pending
Application number
JP23944389A
Other languages
English (en)
Inventor
Masahiro Takeda
昌弘 竹田
Takeshi Kosuge
健 小菅
Kazuo Sugata
菅田 和男
Shunji Hamamichi
浜道 俊次
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 JP23944389A priority Critical patent/JPH03102427A/ja
Publication of JPH03102427A publication Critical patent/JPH03102427A/ja
Pending legal-status Critical Current

Links

Abstract

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

Description

【発明の詳細な説明】 (概要〕 COBOLやPL/lなどの計算機言詔のコンパイラに
おいて,利用者変数を強制的に別の型に書き換える最適
化を行うよ・うにした利用者変数の強制型変換処理方式
に関し オブジェク1・生成にあたって,利用者変数を最適な型
に自動変換する手段を設けることによりアーキテクチャ
に応して実行性能を向上させることを目的とし プログラムに定義されているデータから,型の変換が可
能な項目を抽出する変換可能項目抽出部と,変換可能項
目として抽出された項目についてどの型に変換したとき
に,最大の性能を発揮できるかを計算する型変換による
実行性能計算部と実行性能の計算結果に基づき,最適な
型にテキストを書き換えるテキスト書き換え部とを備え
,利用者変数を強制的に別の型に書き換える最適化を行
うように構或する。
〔産業上の利用分野〕
本発明は,COi30L、やPL/lなどの計算機言語
のコンパイラにおいて,利用者変数を強制的に別の型に
書き換える最適化を行うようにした利用者変数の強制型
変換処理方式に関する。
〔従来の技術] COBOL,PL/Iなどの高級言語は,同一の実体を
表現するのに.様々な型を用いることができる。1列え
ば,COBOLにおいては,同し9桁の数字に対して,
2進.内部10進,外部10進の3種の表現が許されて
いる。これは.ファイル中のデータを目で確認できるよ
うに外部10進で定義したり,性能を考慮して.内部1
0進や2進で定義したり,目的に応して使い分けること
ができるようにするためである。
しかし,大多数の高級言語の利用者は,大型コンピュー
タが10進系の命令を強力にザボートしていることから
.これらの目的を正確に把握しないで.データの型を決
定しているのが現状である。
また,従来のコンパイラは,利用者が指定した型につい
ては,型変換による最適化を考慮−υず,利用者が指定
した型のままオブジェク1ブログラJ・を生威している
〔発明が解決しようとする課題] ところで,最近の半導体技術の進歩によって各種の高速
なマイクロプロセッヅが登場している。
ところが,これらのマイクロフ゜ロセ・冫サは,通常の
命令を高速に実行するが,命令セットが,前述したよう
な高級言語に特有なデータの型には対応していない。
例えば,10進加算を実行する場合,大型コンピュータ
では1命令で実行するものを,そのような命令が用意さ
れていないマイクロプロセッザでは,数十から数百ステ
ップもの命令に展開する必要があるため,十分な性能を
確保できないことがある。
これを解決する1つの方法は,高級言詔の利用者が,デ
ータの使用目的を十分に把握して.適切な型を宣言する
ことであるが,通常の利用者にとっては,それは容易な
ことではない。適切な型を宣言することができたとして
も,高級言語利用者が,自分自身で最適化を意識してプ
ログラムをコーディングしなければならないこと自体が
問題である。
また,すでに蓄積されたソフトウェア資産を流用する場
合に,適切な型を選び直すことは,ほとんど不可能です
らある。さらに,最適な型の宣言は,各アーキテクチャ
ごとに異なるという問題もある。
本発明は上記問題点の解決を図り,オブジェク1・生或
にあたって,利用者変数を最適な型に自動変換する手段
を設けることにより,アーキテクチャに応して実行性能
を向上させることを目的としている。
[課題を解決するための手段] 第1図は木発明の構威例を示す。
第1図において,10はCOBOI、やPL/1などの
高級言語で記述されたソースプログラム1lはCPUお
よびメモリなどからなる処理装置12ぱソースプログラ
ノ、10を機械語に翻訳するコンパイラ,13は変換可
能項目抽出部.I4ぱ型変換による実行性能計算部,1
5はテキス1・書き換え部,16はコンパイラ12によ
るソースプログラム10の解析情報からなる中間テキス
1−17はソースプログラム10の翻訳結果であるオブ
ジェク[・プログラムを表す。
ソースプログラ1、10は,計算機が扱う数値を表現す
る型が複数種類用意されている高級言語で記述されたプ
ログラムである。
本発明では,コンパイラ12ぱ,数値の型に関係する最
適化のために.特に,変換可能項目抽出部13,型変換
による実行性能計算部14,テキスト書き換え部15の
処理手段を備えている。
6 変換可能項目抽出部13ば,ソースプログラム■0にお
いて利用者が定義しているデータから型の変換が可能な
項目を抽出する。
型変換による実行性能計算部14ば.変換可能項目抽出
部13により,変換可能項目として抽出された項目につ
いて,どの型に変換したときに最大の性能を発揮できる
かを決めるために,それぞれの型に応じて決まる機械語
命令を仮定して実行時間を計算する。
テキスト書き換え部15は,実行性能の計算結果に基づ
き,中間テキスト16を,最適な型に書き換える処理を
行う。
これにより,利用者変数を強制的に別の型に書き換える
最適化を行う。
(作用〕 コンパイラ12に,プログラム内で作業用として使用さ
れている利用者変数について,各アーキテクチャの相違
をふまえながら,最良のオブジェクトが生成されるよう
に強制型変換を行う機構を組み込む。したがって,利用
者が,2進演算や内部IO進演算などの実行速度がいく
らであるかなどを知らなくても,自動的に実行上最適な
型による演算が行われるようになる。
〔実施例〕
第2図は本発明の一実施例による処理の例,第3図は本
発明の一実施例による型変換の例を示す。
本発明によるコンパイラ12の処理の流れは例えば第2
図(イ)に示すようになる。処理■が本発明に関連する
部分で,他の処理部分は従来と同様である。
■ ソースプログラム10を人力する。
■ 人力したソースプログラム10について,字句解析
を行う。
■ 構文解析を行う。
■ 構文解析結果について,意味解析を行う。
■ 本発明に係る利用者変数の強制型変換処理を行う。
■ 通常の汎用最適化処理を行う。この最適化処理は.
従来と同様である。
■ 最適化処理の結果について,レジスタや領域などの
割り付けを行う。
■ 機械語命令などからなるオブジェクトプログラJ、
17を」,1戊し,出力する。
本発明に関連する強制型変換処理■の部分は第2図(口
)に示す処理(a)〜(f)のようになる。
(a)  最適化情報の収集を行う。ここでは,一般的
な最適化情報の収集を行うとともに,処理(b)を呼び
出して,強制型変換のための情報の収集を行う。
(b)  変換可能項目の抽出を行・う。
高級言語の利用者定義語は,プログラム内で作業用に使
用されている項目と,他プログラムとのインタフェース
に使用されている項目とからなる。他プログラムとのイ
ンタフェースに使用されている項目については.型変換
を行うと処理矛盾が生しる可能性がある。また,プログ
ラム内で作業用に使用されている項目であっても,高級
言語の再定義の機能を利用して.別の型属性で参照され
る項目については,同様に型の変換を行ってはならない
。そこで,そのような項目を除いた作業用変数などを変
換可能項目として抽出する。
(C)  型変喚による丈行性能をn1智ずる。
そのため すべての中間テキストについて,命令実行ク
ロックの計算制御を行う。命令数やクロック数は.計算
機のアーキテクチャによって異なるので.アーキテクチ
ャに応した各演算のコストテーブル20を用意しておき
.それに従って,各型についてのトータルのクロック数
を計算する。なお,静的に最適な型を選択てきるものに
ついては.各型ごとのクロツク数の計算を省略してもよ
い。
(d)  処理(C)を中間テキス1・の終了まで繰り
返す。
(e)  計算結果により,型の変換可能項目について
,どの型属性に変換したときに,最大性能を発揮できる
かを調べ,変換すべき型属性を決定する。
(f)  決定した型属性になるように,コンパイラ1
2が保持する中間辞@/テキス[・などを書き換え,オ
ブジェクト生成のために使用する中間テキストが格納さ
れる各簿への反映を行う。
次に,第3図に示すCOBOLのソースプログラム10
をもとに,具体的な型変換の例を説明する。
C O B O Lの言語仕様については,周知である
ため.ソースプログラム10の内容についての詳細な説
明は省略するが,ここでは,利用者がプログラム中に定
義したデータとして,A,B,Cの項目がある。
(i)変換可能項目の抽出 A,B,Cは,ソースプログラム10では ずべて内部
10進項目として定義されている。ここで2数字項目A
はファイル節内で定義されたレコードに属する。したが
って,他プログラムとのインタフェース上,型変換は不
可能である。
一方.作業場所節で定義された数字項目B,  Cは,
同一の集団項目に属する項目であるが1 これば,Bお
よびCを含む集団項目名GROUP lによる参照がな
いため,変換可能である。
そこで,BおよびCを変換可能項目として抽出する。
(j1)実行性能計算 この翻訳対象のプログラムが動作する計算機が2進項目
の加算を2クロック,内部10進項目の加算を合計10
0クロンク,2進項目から内部10進項目への変換およ
び内部10進項目から2進項目への変換が,それぞれ合
計100クロックで実行するアーキテクチャであったと
する。
数字項目Bは,ループ制御変数として用いられており.
他のデータ項目との関係がない。すなわち,次のような
意味で単独に使用されている。
IF II>100 TIIFN GO TO (PE
RFOl?Mの出口)八l)DITOB. したがって,項目Bば1 内部10進項目ではなく,2
進項目としたほうが高速に実行できることになる。
項目Cは,内部10進項目である項目Aとの加算(AD
D A To C)に使用されている。
この項目Cを2進とした場合,計算は,項目Aを2進に
変換した後,2進項目で演算を行うことで実現する。こ
の場合,コス1・は.内部10進から2進への変換コス
1・と,2進加算のコストの和となる。すなわち,1.
00+2=102クロックとなる。
項目Cを内部10進とした場合,項目Aとの加算は内部
10進のまま行うので,時間的なコス1・は.内部10
進加算のコストで,100クロックとなる。したがって
,項目Cは,内部IO進のまま演算したほうが速いこと
がわかる。
( iii )テキスト書き換え 実行性能計算により,項目Bは2ij@,項目Cば内部
10進で処理したほうが実行性能がよいことがわかる。
そこで,項目B,Cに関する中間辞書/テキストを,そ
れぞれBが2進.Cが内部1o進となるように書き換え
る。これ以後のオブジェクトを生戒ずる処理では,すべ
てBが2進 Cが内部10進で扱われる。
以上の例では,項目Cは.このプログラムの宣言どおり
.内部10進で扱うのが一番性能がよいという結果にな
ったが.例えば演算コストに関する他の条件はすべて回
しで,内部10進同士の加算が100クロックでばな<
.200クロツクかかるアーキテクチャ上で実行すると
する。
この場合,項目Cについての演算コスI・ば次のように
なる。
(1)項目Cを内部10進とした場合.この加算を実行
するクロックは.200クロンクとなる。
(2)項目Cを2進とした場合.この加算を実行ずるク
ロックば,100+2=102クロックとなる。
したがって,このアーキテクチャでは,同しプログラム
でも,項目Cを内部10進ではな<,2進で扱った方が
性能がよいことになる。
以上の例では,数字項目の型変換を述べたがこれ以外に
,プール系についてもこれと同し最適化が実施できる。
〔発明の効果] 以上説明したように,本発明によれば,強制型変換によ
る最適化により,最近登場した1チップのマイクロブロ
センサを搭載したワークステーションや パーソナルコ
ンピュータで動作する高級言語の性能−1の問題,すな
わち2 lO進系の命令が貧弱であるという欠点を克服
することができる。
これにより,これらのワークステーション等を利用する
高級言語利用者は.ホストのプログラム流用やプログラ
ム作或時に注意しなければならない性能問題から解放さ
れる。
また.大型コンピュータにおいても,2進命令と内部1
0進命令の性能差は,普通4〜5倍はあるので.ホスト
でコンパイルしてプログラムを実行する場合でも,この
最適化は十分な効果がある。
図中,10ばソースプログラム,11は処理装置 12
ぱコンパイラ.13は変換可能項目抽出部,14ば型変
換による実行性能酎算部.1−5Ljテキスト書き換え
部,16は中間テキスト.17ばオブジェクトプログラ
ムを表す。

Claims (1)

  1. 【特許請求の範囲】 計算機が扱うデータを表現する型が複数種類用意されて
    いる高級言語で記述されたプログラム(10)を翻訳す
    るコンパイラ(12)における利用者変数の強制型変換
    処理方式であって、 プログラムに定義されているデータから、型の変換が可
    能な項目を抽出する変換可能項目抽出部(13)と、 変換可能項目として抽出された項目について、どの型に
    変換したときに、最大の性能を発揮できるかを計算する
    型変換による実行性能計算部(14)と、 実行性能の計算結果に基づき、最適な型にテキストを書
    き換えるテキスト書き換え部(15)とを備え、 利用者変数を強制的に別の型に書き換える最適化を行う
    ようにしたことを特徴とする利用者変数の強制型変換処
    理方式。
JP23944389A 1989-09-14 1989-09-14 利用者変数の強制型変換処理方式 Pending JPH03102427A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23944389A JPH03102427A (ja) 1989-09-14 1989-09-14 利用者変数の強制型変換処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23944389A JPH03102427A (ja) 1989-09-14 1989-09-14 利用者変数の強制型変換処理方式

Publications (1)

Publication Number Publication Date
JPH03102427A true JPH03102427A (ja) 1991-04-26

Family

ID=17044850

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23944389A Pending JPH03102427A (ja) 1989-09-14 1989-09-14 利用者変数の強制型変換処理方式

Country Status (1)

Country Link
JP (1) JPH03102427A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008084339A (ja) * 2000-07-10 2008-04-10 Microsoft Corp 統一データ型システムおよび方法
JP2011070696A (ja) * 2000-07-10 2011-04-07 Microsoft Corp データ型を処理するシステムおよび方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008084339A (ja) * 2000-07-10 2008-04-10 Microsoft Corp 統一データ型システムおよび方法
JP2011070696A (ja) * 2000-07-10 2011-04-07 Microsoft Corp データ型を処理するシステムおよび方法
JP4668971B2 (ja) * 2000-07-10 2011-04-13 マイクロソフト コーポレーション データ型を処理するためのシステムおよびメソッドのコールを実行する方法
US8065668B2 (en) 2000-07-10 2011-11-22 Microsoft Corporation Unified data type system and method
US9690554B2 (en) 2000-07-10 2017-06-27 Microsoft Technology Licensing, Llc Unified data type system and method

Similar Documents

Publication Publication Date Title
Metcalf et al. Modern fortran explained
JP2609093B2 (ja) ソフトウエアプログラムを生成するための装置及びその方法
WO2015078139A1 (zh) 移植方法及源到源编译器
Metcalf et al. Modern Fortran Explained: Incorporating Fortran 2023
CN110851142A (zh) 一种将Transact-SQL程序转换为Java程序的方法
CN108153522B (zh) 基于模型转换由midcore生成Spark和Hadoop程序代码的方法
Cordy et al. Practical metaprogramming
CN102541614A (zh) 基于代码分析的计算模块输入输出数据自动解析方法
Neustadter et al. The design and implementation of a prototype structured modeling environment
Bennett A methodology for automated design of computer instruction sets
JPH03102427A (ja) 利用者変数の強制型変換処理方式
JP6982920B1 (ja) ソースコード変換装置、及びプログラム
Carlson A survey of high-level language computer architecture
Maliavko Novel functional-imperative programming language El: a brief introduction
Tan et al. Design and implementation of an automatic RTPA code generator
Lecarme et al. Computer‐aided production of language implementation systems: A review and classification
Greenes Mumps: second decade design considerations
Bailey et al. Implementing ML on distributed memory multiprocessors
Winstanley Reflections on instance derivation
Cordy et al. Metaprogram implementation by second order source transformation
Reid et al. Modern Fortran Explained: Incorporating Fortran 2023
Wang ASCII Shrug: An Overview of the History, Basics, and Challenges of Computer Science
KR0169909B1 (ko) 목표 프로세서용 어셈블리 코드 생성기를 작성하는 방법
CN112579088A (zh) 面向异构混合编程的一站式程序编译方法
Pearce Interactive simulation on minicomputers: Part 2-Implementation of the ISIS language