JPS61110240A - 最適化コンパイラ - Google Patents

最適化コンパイラ

Info

Publication number
JPS61110240A
JPS61110240A JP19403485A JP19403485A JPS61110240A JP S61110240 A JPS61110240 A JP S61110240A JP 19403485 A JP19403485 A JP 19403485A JP 19403485 A JP19403485 A JP 19403485A JP S61110240 A JPS61110240 A JP S61110240A
Authority
JP
Japan
Prior art keywords
instruction
bits
register
valid
bit
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
JP19403485A
Other languages
English (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS61110240A publication Critical patent/JPS61110240A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 A、産業上の利用分野 本発明は、最適化アルゴリズムを使ってコードの品質が
改善される、ディジタル計算機用のコンパイラに特に有
用である。またアセンブラにも使用できるが、最適化ア
センブラは一般的ではない。
本発明は、コンパイラまたはアセンブラによって生成さ
れた目的コードの品質を改善するものである。
本発明は、アキュムレータまたは一組の汎用レジスタを
使用し、オペランドの長さが異なる2種以上の形式で存
在する、一種または数種の命令形式をもつ計算機に適用
できる。さらに、本発明を適用するには、より短い形式
の命令が使用できる場合、その短形命令の方が有利とな
る何らかの理由がなければならない、多くの機種では、
実行がより速くまた少しの記憶域しか占めないため、短
かい形式の方が有利である。
B、開示の概要 命令セット中の一部の命令が短形式と長形式とをもち、
短形式の命令は実行速度が速いかまたはより少しの記憶
域しか占めないような機械用の、コンパイラまたはアセ
ンブラで生成されるコードの品質を改善する方法、この
方法は、まず各計算命令の結果オペランドのどのビット
が後に有効に使用されるかを、プログラムを逆方向にた
どる事によって決定する0次にそのようにして計算され
た有効ビットを用いて、有効ビット位置では正しい結果
を与える短形式の命令を使用して効率的なコードの生成
を行なう。
C0従来技術 ]ンパイラによって生成されるコードの品質は、最初の
コンパイラが生成されて以来の問題である。
市販された最初のコンパイラであるIBMのFORTR
AN  Iコンパイラの主目的は、科学計算の分野で、
アセンブリ言語プログラマがr手ノでコード化すること
によって直接生成されるコードの品質に匹敵する目的コ
ードを生成することであった。
今日、計算機が使用できるあらゆる分野で使用できる高
水準言語が設計されている。最初のFORTRAN言語
TR法範囲のプログラミング・タスクに使用できるよう
になっている。しかし、特に得られるコードを生産環境
に使用すべき場合には、コンパイラで生成されるコード
の品質が高いことが一層重要である。熟練したアセンブ
リ言語プログラマが生成するコードは、依然としてコン
パイラで生成されるコードの測定基準となっている。
1950年代以降、コンパイラで生成されるコードの品
質を改善するための多数の最適化技術が開発され精巧化
されてきた。事実、こ九らの最適化法の多くは原理的に
知られており、最初のFORTRANコンパイラを生成
したチームが何らかの形で使用してきた。
最適化コンパイラでしばしば使用されている最適化法は
、2つのクラスに区分でき、一般に大域的最適化および
ビープホール式最適化と呼ばれる。
大域的最適化は、コンパイルされるプログラム全体の分
析にもとづくものである。その例は、「コル式最適化は
、「基本ブロック」や隣接する2個だけの命令など比較
的小さなプログラム領域の分析にもとづくものである。
本発明は大域的最適化としてまたは基本ブロック・レベ
ルで実現することができ、また大域的分析から通常は容
易に入手できる部分的な大域的情報をの 使用し1次にこY情報を基本ブロック・レベルで精巧化
することができる。沢山の情報が利用できるほど、効果
が高くなる。大域的分析からの情報のうち、ライブ/プ
ツト情報を使うと有利である。
この情報は、ある命令の各レジスタ・オペランドについ
て、そのレジスタを新しい値で再ロードする前に再度使
用できるかどうかを教えるものである。命令のレジスタ
・オペランドがr死」んでいる場合、その命令がそのレ
ジスタの「最終使用」ということになり、命令の実行後
、プログラム実行に影響を与えずにレジスタの内容を何
らかの方法で変更することができる。一方、命令のレジ
スタ・オペランドが「生」きている場合は、レジスタの
内容を再度使用する実行経路があり得るため、命令実行
後にレジスタの内容は変更できない。
下記の参照文献で、ライブ変数分析が考察されている。
J、D、 Ullman、 Irデータ流れ分析技術ノ
調査」r第2回米日計算機会議記事録J、AFIPSプ
レス、ニューシャーシー州モントヴエール、1975年
(“A 5urve  of Data Flow^n
alSiS7、’ 5econd USA−Japan
 Co+1puterConference  Pro
ceedings、AFIPS  Press、Mon
tvale+New Jersey、 335−342
頁(参考文献37件))。
A、 V、 AhaおよびJ、 D、υl1man、 
rコンパイラ設計の原理」、アデイソンーウエスリー、
1977年(“Pr1nciples of Co+5
pilar Design”。
Addiso−weslay) M、 S、 Hecht、 r計算機プログラムの流れ
分析」エルセピア、ニューヨーク州ノースホランド、1
977年(”Folv Analysis of Co
mputerPrograms”、 Hlsevier
、 North−Holland、 New York
)モトローラMC68000は、本発明を使用できる計
算機の一例である。この計算機は、下記のように3つの
形式の加算命令及び3つの形式の即値加算命令を有する
ADD、L  rl、 r2  ADDl、L  02
3.  rl^DD、V  rl、 r2  ^DDI
J  [23,rl^DD、B  rl、 r2  A
DDl、B  023.  rlADD、L (ロング
加算)は、レジスタr1の32ビツトの内容全体をレジ
スタr2に加算し、結果をr2に入れる。ADD、W 
(ワード加算)は、rlの右側16ビツトをr2の右側
16ビツトに加算し、r2の左側16ビツトは元のまま
にする。ADD、B (バイト加算)は、rlの右側8
ビツトをr2の右側8ビツトに加算し、r2の左側24
ビツトは元のままにする。同様に、ADDl、L (ロ
ング即値加算)は、ある数(123と示しである)を、
レジスタr1の32ビツトの内容全体に加算し、ADD
l、Wは、右側16ビツトに加算し、ADDl、Bは右
側8ビツトに加算する。
命令ADD、WとADD、Bは、ADD、Lよりも実行
が速く、したがってどちらでもよい状況ではADD、L
よりも有利である。命令ADD I 。
WとADDl、BはADDl、Lよりも実行が速く、ま
た少しの記憶域しか占めず、したがってADDl、Lよ
りも有利である。
モトローラMC:68000では、他の多数の型式の命
令にも「長」形式と「短」形式があり、短形の方が実行
が速く、またしばしば少しの記憶域しか占めない、命令
のタイミングを含めてさらに詳シイコトは、rMc68
000 16ビツトまイクロプロセッサ・ユーザ用マニ
ュアル」第2版、モトローラ社(1980年1月)(“
MC:68000 16−bit Microproc
essor User’s Manual”、5eco
nd edition、 Motorola、 Inc
、、 )に出ているe本発明によって実現されるコード
改善の一例として、コンパイラが下記の命令列を生成し
たものと仮定する。
ADD、L  r2.rl SUBl、L  $16.r1 MOVE、W  rl、6 (r5) また、レジスタr1の右側16ビツトを、レジスタr5
の内容+6でアドレス指定される記憶位置に記憶するM
OVE、W命令が、レジスタr1の最終使用であると仮
定する。その場合、本発明ではADD、L命令の代りに
ADD、、Wを使い、5UB1.L命令の代りにSUB
 1.Wを使う。
後者の形は前者よりも実行が速く、また5UBI。
W命令は5UB1.Lよりも少しの記憶域しか占めない
D0発明が解決しようとする問題点 ある生成された命令を、プログラムによって実行される
計算全体を変えないという意味では同等るモジュールを
もつ最適化コンパイラを提供することが、本発明の主目
的である。
E1問題点を解決するための手段 本発明では、プログラムの「ライブネス」分析の概念の
一般化が利用される。
本発明では、通常のやり方のようにレジスタ中のどこか
のビットが生きているかどうかを示す要約ビットのみを
計算するのではなく、この一般化を利用して汎用レジス
タのどのビットがプログラムのある時点で「生きて」い
るかが計算される。
以下の説明では、こめ一般化を「有効ビット分析」と呼
ぶことにする。
モトローラMC68000用の最適化コンパイラとして
、本発明を説明する。
本発明の適用の第1段階は、コンパイラされるプログラ
ムの「有効ビット分析」を行なうことである。これは、
各命令について、その命令の結果のどのビットが「有効
Jであるかを決定するプロセスである。(話を簡単にす
るため、結果は1つしかないと仮定する。)あるビット
が計算された後にプログラムによって使用される場合、
そのビットは有効である。これは、結果の各ビットを検
査してそれが「生きているJないし「有効である」かど
うかを決定する以外は1周知の「ライブネス」と同じ概
念である0通常のライブネス分析では、各命令について
、結果の何れかのビットが「生きでいる」ないし有効で
ある」かどうかを示す要約ビットを、1つだけ計算する
。有効ビット分析を行なうことができる水準は3種ある
1、通常のライブネス分析と同じく、大域的。
2、大域ライブネス分析からの援助を伴う基本ブロック
上(実際には分岐間)の水準。
3、援助なしの基本ブロック上(分岐間)の水準。
上記の最初の選択枝は、計算が最も高価になるが、最高
の結果を与える。最後のものは、計算が最も安価である
が、最も貧弱な結果を与える。第2のものは、何らかの
形でライブネス分析を行なった場合に(3)よりも計算
が少しだけ高価になり、中間の品質の結果を与える折衷
案である。ここでは選択枝(2)について説明するが、
本発明はこの特定の方法に限られるものではない。
F、実施例 第1図は、典型的な最適化コンパイラの枠内で、どうす
れば水準(2)の有効ビット分析(ブロック5)を最も
都合よく行なえるかを示したものである0重要なことは
、有効ビット分析の前に大域的コード最適化(ブロック
3)を行なうことである。これは、通常のライブネス分
析が大域的コード最適化の一部分であり、ライブネス分
析の副産物である「最終使用」ビットが必要な為である
有効ビット分析の前にレジスタの割り振り(ブロック4
)を行なうことが、必要ではないまでも有利である。そ
の場合レジスタの割り振りを最初に行なえば、有効ビッ
ト分析をマシンの実レジスタによって行なうことができ
、また通常はレジスタがかなり少数(例えば、モトロー
ラMC68000では16個)なので、より効率的なコ
ンパイラが得られる。
有効ビット分析は、最終コード生成(ブロック6)の前
に行わねばならない、コンパイラの最終コード生成モジ
ュールにより、有効ビット分析の結果を使って、各命令
をどんな形で(8ビツト、16ビツト、または32ビツ
ト)生成するかが決まる。
第2図は、第1図のブロック5に示された有効ビット分
析の高水準流れ図である。この分析は。
プログラム全体にわたる単一逆方向バスで行われる。こ
こに示した処理は、基本ブロックで行なうこともできる
が、ここでは分岐間で行なうものとして示しである。こ
れはプログラミングが同じくらい容易であり、ときには
より秀れた品質のコートが生成される。この方式では、
プログラム中のラベル点が無視される(ブロック3)、
しかし、分岐命令(ブロック5)は、各レジスタ中でど
のビットが有効であるかについてのプログラムの知識を
、「すべでのレジスタのすべてのビットが有効であると
推定される」状態にリセットする。これは、プログラム
が情報をもたない時点でとる安全状態である。
命令がラベル点を表すものでなく、また分岐ないしサブ
ルーチン「戻り」命令でもない場合は、その命令は「加
算」、「ロード」、「記憶」。
「桁送り」なと通常の計算命令である。第2図のブロッ
ク6として示す計算命令の処理を、第3図により詳しく
示しである。
このプログラムは、ここで有効ビット・テーブル(SB
T)と呼ぶビット列を用いて動作する。
このテーブルは行数がマシンのレジスタ数(例えばモト
ローラMC68000では16個)に等しく、列数が、
マシンのレジスタ長さくMC68000では32)に等
しいものである。典型的な処理時点では、このビット列
は次のような形になることがある。
32ビツト 0 000OFFFF   8  FFFFFFFFI
  FFFFFFFF   9 000OFFFF2 
 FFFFFFFF  10 000001FF3  
FFFFFFFF  11 7FFFFFFF4  F
FFFFFFo  12 0FOFOFOF5 000
00OFF  13 000OFFOO6FFFFFF
FF  14  FFFFFFFF7  FFFFFF
FF  15  FFFFFFFFここでは、ビットを
16進法で示した0例えば” OOOOF F F F
 ” +!、16個のゼ0−ビットの後に16個の1ビ
ツトが続くことを表している。
ビット列の値は、命令ストリーム中でプログラムが逆方
向に走査すると変化する。ある時点で、ビット列が上記
のような値である場合、その時点でレジスタ0の左側1
6ビツトは有効でない(「死んでいる」)が、右側16
ビツトは有効なことになる。”FFFFFFFF”の値
は、関連するレジスタのすべてのビットが有効なことを
意味し、他の場合も同様である。
ここで、第3図を参照しながら、命令をどのように処理
してその結果の有効ビットを決定するかを見ていくこと
にする。このプロセスは、ある結果の有効ビットを命令
の入力オペランドに伝播することである0次に、プログ
ラムが命令ストリームを逆走査するとき、それが現命令
の入力オペランドから以前の命令の結果オペランドに伝
播される。ビットがどのようにして結果から入力オペラ
ンドに伝播されるかは、第3図に示すように命令の型式
(加算1桁送り、記憶など)によって決まる。開始する
ためには、プログラムは、R初に出会った命令の結果の
どのビットが有効であるかを知るか、または仮定しなけ
ればならない、ここで説明しているプロセスの場合、最
初の出会う命令は、そのすべての結果ビットが有効なも
のと仮定する。これは、分岐命令に出会ったとき、16
X32ビット列全体をすべて1と初期設定することによ
り記録される。
次に、コードの分岐と分岐の間のセクションの真中が現
在処理中であり、加算命令または減算命令に出会ったと
仮定する。具体的には、次のような命令であると仮定す
る。        ′。
ADD、L  rl、r2 これはレジスタr1の内容をレジスタr2の内容に加算
するという意味である。レジスタr2は、命令への入力
であり、かつ命令の結果である1次のような3アドレス
命令であると考えた方が考えやすい。
ADD、L  rl、r2.r3 ただし、r3は結果レジスタである。
まず、有効ビット・テーブルの位1 r 3を参照して
、結果のどのビットが有効であるかを知ることが必要で
ある。テーブルから検索されたビット・マスクは加算命
令と連関(して記憶)され、後でアセンブリ、最終コー
ド生成モジュールがそれを使って最適形式の加算命令を
生成できるようにする。実際には、効率上、2ビツトの
みを加算命令と関連させて、その命令がロング(32ビ
ツト)形、ワード(16ビツト)形、またはバイト(8
ビツト)形のどの形で生成されるかを記録するだけで充
分である。MC68000では、この3種の形しかない
、この2ビツトを命令と連関させることを、以下では、
命令の「マーキング」と呼ぶことにする。
(SBTで決定される)結果レジスタr3の有効ビット
がX’ 00008012’であると仮定する。その場
合、結果の有効ビットはすべてレジスタr3の右側16
ビツトに含まれるので、加算命令を「ワード」形ないし
16ビツト形としてマークすることができる。加算は右
から左へ進行するプロセスなのでレジスタr1とr2の
左側16ビツトが結果の有効ビットに影響を与えること
はないが、右側16ビツトはいずれも影響を与えること
があり得る。したがって、この命令の場合のレジスタr
1とr2の有効ビットは、x’oo。
0FFFF’ となる、それが9次にSBTテーブルの
レジスタr1とr2の行に記録される。加算命令がその
ブロックでのrl(またはr2)の最終使用である場合
、rl(またはr2)に対するテーブル位置がX’ 0
OOOFFFF’ にセットされる。これは、rコード
最適化」段階でセットできる上記のライブネス・ビット
をみて決定される。加算命令がrl(またはr2)の最
終使用でない場合は、X’ 0OOOFFFF’ をテ
ープ/l/の位置rl(またはr2)の内容と○Rして
、そのテーブル位置に記憶する。これは、それらのレジ
スタが加算命令の下方で使用されており、その使用が逆
走査中の初期に処理されているので、rl及びr2があ
る有効ビットを有している可能性があるからである。こ
の加算(または減算)命令の処理は、第3図のブロック
lとブロック2に示されている。逆走査が進行するにす
れて、rlまたはr2をセットする命令に出会うことが
ある。
この時点で、その命令はテーブルの位@ r 1または
r2を参照して、そのレジスタのどのビットが有効であ
るかを決定する0次に、この情報を上記の加算命令の処
理と同様にして、入力オペランドに伝播する。
もう−例として、rバイト記憶J命令に出会ったものと
仮定する。(第3図のブロック9とブロック10)この
命令は、次のように書かれる。
MOVE、B  rl、d (r2.r3)この場合、
レジスタr1は記憶されるバイトを含んでおり、r2と
r3と記憶域をアドレス指定する働きをするベース・レ
ジスタおよびインデックス・レジスタである。d”は変
位(定数)であり、有効度分析では何の役割ももたない
、このMOVE命令は、結果レジスタをもたない、(ど
のレジスタの内容も変更しない)、これはレジスタの右
側8ビツトのみを使用する。したがって。
X’ 0OOOOOFF’のマスクがORされてテーブ
ルのrlの位置に入れられる。MOVE命令はベース・
レジスタとインデックス・レジスタの右側24ビツトを
使用し、したがってX’0OFFFFFF’ のマスク
がORされてテーブルのr2とr3の位置に入れられる
第3図は、6種の型式の命令の処理を示したものである
。「ロートノ命令や「桁送り」命令など。
第3図に示されていない他の型式の命令を含むように、
このプロセス全体を拡張すべきである。
ここでは比較的基本的な例として、分岐間のコード系列
を下記のように仮定する。
rlの有効値 MOVB、L 4(r2)、rl     0OOOF
FOOLSR,L 18. rl       OOO
OOOFFAMDl、L X’00000OFF’、r
l  00000OFFMOVE、B rl’、 0(
r2)    FFFFFFFFプログラムは、メモリ
からロング・ワード(32ビツト)を読み取り、その右
側8ビツトを桁送り(LSR=右論理桁送り)シ、それ
をマスクX′00000OFF’ とANDL、、 レ
ジスタr1の右側バイトを主メモリに記憶する。rrl
の有効値」という見出しのついて欄は、逆方向に処理が
進むとき、有効ビット列の1つの行、rlに対する行を
示す1次に、この命令列が処理されるとき。
rlの有効値がどうなるかについて説明する。
最初に、(最下行)rlの有効値がX’FFFFFFF
F’ にセットされる。これは、どんな知識もない場合
にとるべきものである。次にMOVE、B命令と出会う
。この例では、この命令でのrlの使用は「最終使用」
とフラグされているものと仮定する。それは、rlの次
にダッシュ(′)をつけて示されている0次に、第3図
のブロック10に従って、rlの有効値がテーブル中で
X′00000OFF’ にセットされる。
次に、ANDl、Lに出会う、この命令は、rlを入力
レジスタとしても結果レジスタとしても使用する。その
結果、rlの有効値x’ooo。
0OFF’ がvXりX’ 0OOOOOFF’ とA
NDされ、結果であるX’ 0OOOOOFF’ がO
Rされてテーブルのrの位置に入れられる。結果は、X
’ 0OOOOOFF’である。(rlの有効値は変化
なし)これらのステップは第3図のブロック12にまと
めて示しである。
ここで、有効ビット分析プログラムは、AND命令が非
有効ビットのみをターン・オフし、したがって無視でき
ることを認めることができる。別法として、直接マスク
は8個の1ビツトで終るので、命令をバイト形式として
マークし、!&終コード生成でそれを削除することもで
きる。
次に、LSR,Lに出会う、結果の有効値はX′000
00OFF’なので、これはバイト形式でマークされる
。入力レジスタr1の有効値は、左側に8位置桁送りさ
れた結果レジスタr1の有効値である。(桁送りの取扱
いは、第3図に示してない、) 最後に、MOVE、Lに出会う、結果レジスタ(rl)
の有効値はX’ 0OOOFFOO’であり、右側16
ビツトだけが有効なので、これはワード(16ビツト)
形式でマークされる。
上記のように計算したマーキングを使うことによって、
最終コード生成では、上記に示したものと等価な下記の
命令をより迅速でより短い命令として出力することがで
きる。
MOVE、V  4 (r2) 、 rl (メモリか
らのロード命令) LSR,118,rl MOVE、B  rl’、  0(r2) (メモリへ
の記憶命令)上記の例で生じる、最終コード生成が知ら
なければならないことが2つある。(1)変位が(この
例では4から6に)2つだけ増加すると、その命令によ
って許容される限界(MC68000では32767)
内に収まらない場合は、MOVE。
LをMOVE、Wに変えることができない。(2)LS
R命令の最も効率的な形の選択は、結果の有効値と桁送
り量によって決まる。この例では、結果の有効値は、X
’ 0OOOOOFF’ であるが、レジスタr1の位
I!16〜23のビットが位置24〜31に桁送りされ
るため、LSR命令をLSR,Bにすることはできない
しかし、それを元のLSR,Lよりは速いLSR,Wに
することはできる。
当然のことながら、ビット・テーブルに示した特定の有
効値の値は、特定のシステム構成および特定の命令書式
にあわせて変更しなければならない。本発明は、例えば
16ビツト・フルワード機械構成にも45ビツトまたは
64ビツト機械構成にも、同様に応用できるはずである
。さらに具体的にいえば、本発明の利点は、短形命令を
使うと。
機械時間または記憶スペースが少なくてすむような、ア
ーキテクチャの機械で実現されることに注目すべきであ
る。
【図面の簡単な説明】
第1図は、本発明が特に有用な最適化コンパイラの超高
水準機能流れ図である。 第2図は、所期の有効ビット分析を実施するための、本
明細書で開示されるコンパイラ・モジュールの高水準流
れ図である。 第3図は、ある種の計算形式の命令が、本明細書で開示
されるコンパイラ・モジュールによってどのように処理
されるかを示す、より詳しい流れ図である。 出願人  インターナ・ショナル・ビジネス・マシーン
ズ・コーポレーション 代理人  弁理士  頓  宮  孝  −(外1名) 97Q 第1図

Claims (1)

  1. 【特許請求の範囲】 命令の系列を調査し、上記命令系列中の命令の文脈に基
    づいて、各命令の結果のどのビットが後に有効に使用さ
    れるかを判定する手段と、 上記有効に使用されると判定されたビット位置において
    正確な結果を与える命令のうち、最も効率的な形式の命
    令を生成する手段とを有する最適化コンパイラ。
JP19403485A 1984-10-31 1985-09-04 最適化コンパイラ Pending JPS61110240A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US66680084A 1984-10-31 1984-10-31
US666800 1984-10-31

Publications (1)

Publication Number Publication Date
JPS61110240A true JPS61110240A (ja) 1986-05-28

Family

ID=24675539

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19403485A Pending JPS61110240A (ja) 1984-10-31 1985-09-04 最適化コンパイラ

Country Status (3)

Country Link
EP (1) EP0180077B1 (ja)
JP (1) JPS61110240A (ja)
DE (1) DE3586234T2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5132972A (en) * 1989-11-29 1992-07-21 Honeywell Bull Inc. Assembly language programming potential error detection scheme sensing apparent inconsistency with a previous operation
EP1229440B1 (en) 1993-05-27 2007-05-02 Matsushita Electric Industrial Co., Ltd. Program converting unit and processor improved in address management
JP3233245B2 (ja) * 1993-07-01 2001-11-26 日本電気株式会社 言語処理方法
WO1995031767A1 (en) * 1994-05-11 1995-11-23 Vlsi Technology, Inc. Floating-point processor with apparent-precision based selection of execution-precision
WO2002041145A2 (en) * 2000-11-20 2002-05-23 Zucotto Wireless Inc. System and methods providing runtime byte code simplification for platform independent languages

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51115744A (en) * 1975-04-04 1976-10-12 Hitachi Ltd Assembler order word length automatic setting method
JPS5854449A (ja) * 1981-09-28 1983-03-31 Fujitsu Ltd 分岐命令短縮化処理方式
JPS58161045A (ja) * 1982-03-19 1983-09-24 Fujitsu Ltd コンパイラにおけるレジスタ管理方式

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51115744A (en) * 1975-04-04 1976-10-12 Hitachi Ltd Assembler order word length automatic setting method
JPS5854449A (ja) * 1981-09-28 1983-03-31 Fujitsu Ltd 分岐命令短縮化処理方式
JPS58161045A (ja) * 1982-03-19 1983-09-24 Fujitsu Ltd コンパイラにおけるレジスタ管理方式

Also Published As

Publication number Publication date
EP0180077B1 (en) 1992-06-17
DE3586234D1 (de) 1992-07-23
EP0180077A2 (en) 1986-05-07
EP0180077A3 (en) 1988-06-22
DE3586234T2 (de) 1992-12-10

Similar Documents

Publication Publication Date Title
US4763255A (en) Method for generating short form instructions in an optimizing compiler
US6061783A (en) Method and apparatus for manipulation of bit fields directly in a memory source
US4539635A (en) Pipelined digital processor arranged for conditional operation
JPH04172533A (ja) 電子計算機
JPS63132338A (ja) コード生成方法
JPH0253810B2 (ja)
JPH0721034A (ja) 文字列複写処理方法
JPH06110703A (ja) コンパイル方法
JP2004086837A (ja) データ処理装置
US4598358A (en) Pipelined digital signal processor using a common data and control bus
JPS61110240A (ja) 最適化コンパイラ
US5390306A (en) Pipeline processing system and microprocessor using the system
JP2002229778A (ja) 高速ディスプレースメント付きpc相対分岐方式
JPS6212529B2 (ja)
JPH034936B2 (ja)
JP2748957B2 (ja) データ処理装置
US20080313428A1 (en) Microprocessor
RU2066067C1 (ru) Центральный процессор для многопроцессорной вычислительной системы
US6772292B2 (en) Two area stack
JP4545777B2 (ja) データ処理装置
US5093784A (en) Data processor with efficient transfer between subroutines and main program
JPS62295138A (ja) アドレス生成方式
JP3464019B2 (ja) レジスタの割付方式
KR100246465B1 (ko) 마이크로프로세서 스택 명령어의 수행사이클을 줄이기 위한 장치 및 그 방법
JP2722493B2 (ja) レジスタ割り付け処理方法