JPH04322329A - 多機種対応型情報処理システム、および、方法 - Google Patents
多機種対応型情報処理システム、および、方法Info
- Publication number
- JPH04322329A JPH04322329A JP3091980A JP9198091A JPH04322329A JP H04322329 A JPH04322329 A JP H04322329A JP 3091980 A JP3091980 A JP 3091980A JP 9198091 A JP9198091 A JP 9198091A JP H04322329 A JPH04322329 A JP H04322329A
- Authority
- JP
- Japan
- Prior art keywords
- program
- instruction
- abstract
- register
- machine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 72
- 230000010365 information processing Effects 0.000 title claims 23
- 230000006870 function Effects 0.000 claims abstract description 38
- 238000012545 processing Methods 0.000 claims description 51
- 238000003860 storage Methods 0.000 claims description 19
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 6
- 238000005094 computer simulation Methods 0.000 claims description 2
- 238000005457 optimization Methods 0.000 abstract description 36
- 238000013519 translation Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 47
- 230000008569 process Effects 0.000 description 27
- 239000013598 vector Substances 0.000 description 21
- 230000014509 gene expression Effects 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 10
- 230000007704 transition Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 7
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 6
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 238000005206 flow analysis Methods 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 101100120298 Rattus norvegicus Flot1 gene Proteins 0.000 description 1
- 101100412401 Rattus norvegicus Reg3a gene Proteins 0.000 description 1
- 101100412403 Rattus norvegicus Reg3b gene Proteins 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/47—Retargetable compilers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
め要約のデータは記録されません。
Description
グラムから機械語プログラムへの翻訳方式であって、複
数機種の計算機に共通の中間形式(オブジェクトプログ
ラム)を用いる方式に関する。
機上で実行する方法を大別すると、一般に、コンパイラ
方式、インタプリタ方式と呼ぶ、以下の2つに分けられ
る。
プログラムを、実行すべき計算機の機械語プログラムに
変換した上で、変換後の機械語プログラムを直接実行す
る。
械語とは別の言語(中間語)を設定し、 実行す
べき計算機上で中間語を解釈実行する別のプログラム(
インタプリタ) を予め用意しておく。高級言語
で記述されたプログラムを中間語プログラム に
変換し、変換後の中間語プログラムをインタプリタを用
いて実行する。
の利点は、以下の理由によるプログラム実行の高速性に
ある。
当する機械語の実行以外に、各中間語に対応する処理へ
の振り分けやオペランドのアドレス計算等が必要である
。一方コンパイラ方式では直接に機械語を実行するので
、これらが不要である。
脈と実行する計算機の特性とを考慮した処理の省略(最
適化)が可能である。一方、インタプリタ方式では、イ
ンタプリタ自身は中間語プログラムに対して汎用性を持
つので、インタプリタは中間語プログラムをそのまま実
行するのみで、プログラムの文脈を考慮した処理の省略
ができない。また、中間語プログラムにも実行する計算
機の特性が反映されていないので、例えば、高級言語で
記述された特定の変数を目標計算機のレジスタにマッピ
ングし、処理の高速化を図ることも不可能である。
ログラムの運用形態という視点から見ると、従来の方法
では、(運用方法1)コンパイラ方式を採用し、変換後
の機械語プログラムを保存し繰返し直接実行する。
、中間語プログラムを保存しインタプリタによって繰返
し実行する。
は、それぞれの実行時間の短縮という観点からコンパイ
ラ方式を採用する場合が圧倒的に多いが、以下のような
デメリットも生じている。
語プログラムに変換するコンパイラが機種ごとに必要で
あり、コンパイラの開発量が大きくなる他、保守や拡張
をそれぞれの機種に対応のして行なう必要があり、保守
・拡張のオーバヘッドが大きくなる。
種で実行する場合、機種ごとにコンパイル(ソースプロ
グラムから機械語プログラムへの変換)が必要であり、
機械語プログラムの管理のオーバヘッドが大きい。
で接続されている環境において、同一のプログラムに対
する機械語プログラムが機種対応に複数必要となり、バ
ージョン管理やディスクスペースに問題があるほか、同
一プログラムの分散実行が困難である。
ステムのなかには、ソースプログラムがなく、機械語プ
ログラムのみで運用されている場合がある。このような
システムでは、構成機種の移行・変更が困難である。ま
た、ハードウェア技術の進歩により計算機アーキテクチ
ャの高度化が容易となっているが、機械語プログラム財
産の継承のため、アーキテクチャの変更に強い制限が課
せられしまう。
存運用の形態としては特定の計算機に依存しない中間語
プログラムを採用し、中間語プログラムを実行するに際
して高速化のために目標計算機の機械語プログラムに変
換するという、コンパイラ方式とインタプリタ方式のそ
れぞれの利点のみを採った方式を採用すればよい。しか
し、現在のところ、そのような方式を採用した具体的な
システムは見当らない。
方式に関しては、” A.Aho, R.Seti,a
nd J.Ullman: Compilers. p
ronciples,Techniques and
Tools, Addison−Wesly1986
”に詳しい。
ない中間語プログラムを、繰返し実行するプログラムの
保存運用形態として採用するためには、実行速度が従来
のコンパイル方式による機械語プログラムと同等のレベ
ルになることが必要である。
存運用形態の中間語プログラムをインタプリタによって
実行するのではなく、実行の直前において機械語プログ
ラムに変換し実行すること (2)上記機械語プログラムへの変換において、実行す
べき計算機の特性を考慮した最適化を実施することが不
可欠である。
全体を与えること、即ち、保存運用のための中間語の具
体的な形式を与え、それを実行開始時点で機械語プログ
ラムに変換し最適化を実施する具体的な方法を設定する
ことにある。
間語は、以下の理由により上記を実現するための中間語
として利用することができない。
式には、インタプリタによる最適化を前提としていない
ので、機械語プログラムに変換する際に実施すべき最適
化に必要な情報を含んでいない。
レジスタ上での演算を主体としたレジスタマシンと、演
算スタックを備えスタック上での演算を主体にしたスタ
ックマシンに大別できる。現状では、世の中に実存する
計算機の大半はレジスタマシンである。インタプリタ方
式の中間語では、中間語およびインタプリタ設計の容易
さから、スタック上の演算を想定したものが多い。スタ
ック上の演算をレジスタ間の演算に変換することは不可
能ではないが、スタック上の値は使い捨てを想定したも
のであり、一方レジスタを効率的に活用するためには、
レジスタ上の値をできるだけ繰返し利用することが必要
である。即ち、スタックマシン的な中間語プログラムか
らレジスタマシンの効率的な機械語プログラムに変換す
ることは非常に困難な部分がある。
プログラムを保存運用形態とし実行直前に機械語プログ
ラムに変換する方式では、以下の要件を満たすことが必
要である。
に重点を置き、中間語プログラムレベルでレジスタの存
在を意識したプログラムのシーケンスとなっていること
。また、中間語プログラムまでの変換時点で、実施可能
な最適化が実施されていること。
スタの利用方法の最適化が実施可能であること。即ち、
レジスタへの値のロード、レジスタからの値のストアの
各命令の発行回数を最小化するように、レジスタの利用
を決定し、それら命令が不要ならば削除できること。ま
た、それら最適化に必要な情報を中間語プログラムから
得られること。
中間語プログラムの特定のシーケンス(複数命令)を代
替できることがある。このような場合、一般に、機械語
1命令で実現した方が効率的である。中間語複数命令に
対応する機械語命令が目標計算機に存在するならば、そ
れを利用した機械語プログラムを生成できること。
語)プログラムを、従来のコンパイラ方式に習って、オ
ブジェクトプログラムと呼ぶ。
明では、ソースプログラムを実行計算機の機械語プログ
ラムに変換するシステムを、次の3つのサブシステムに
より構成する。
、目標計算機の機種に依存しない形式のオブジェクトプ
ログラム(抽象オブジェクトプログラム)を生成するサ
ブシステム (2)リンカ:コンパイラにより生成された複数の抽象
オブジェクトプログラムを、一つの抽象オブジェクトプ
ログラムに結合するサブシステム (3)インストーラ:リンカにより結合された抽象オブ
ジェクトプログラムを、実行計算機の機械語プログラム
に変換するサブシステム。
ェクトプログラムを共通化するため、本発明では、複数
のレジスタを持つ抽象計算機(Abstruct Re
gister Machine、以下ARMと呼ぶ)を
設定し、その命令列を共通のオブジェクトプログラム(
以下、抽象オブジェクトプログラムと呼ぶ)の基本部分
として利用する。
スタ数は、概念上無限であるが、実用上は抽象オブジェ
クトプログラムの形式により制限される)(2)命令機
能として、レジスタ−メモリ間のデータ転送、レジスタ
上の演算(四則演算、論理演算、シフト演算、比較)、
実行制御(無条件分岐、条件分岐、副プログラム呼び出
し/復帰)を持つ。
記号名称で表現される。
列をオブジェクトプログラムの基本部分とした理由は、
以下の通りである。
々の実行計算機の機械語プログラムへの変換を高速にす
るには、オブジェクトプログラムと機械語プログラムの
意味的ギャップをできるだけ小さくすることが望ましい
。現在広く用いられている計算機は、複数個のレジスタ
を持つレジスタマシンであり、一般のレジスタマシンの
持つ命令セットの意味的な共通部分を命令セットとして
持つARMを設定することで、意味変換のオーバヘッド
をなくし機械語プログラムへの変換を高速にする。
語プログラムの実行の高速化の鍵の一つは、レジスタの
有効利用である。ARMをコンパイラの目標計算機とす
ることにより、コンパイラはレジスタを最大限に利用し
た命令列を生成することができる。
ものにより構成する。
定義、最適化のための埋め込み情報、ソースレベルデバ
ッグのための埋め込み情報) (c)生成制御指示子(抽象レジスタの割当て/解放の
指示、抽象レジスタの割当て状態によるARM命令語列
の選択) (d)ソースレベルデバッグのための変数名、及び、手
続き名の辞書 抽象レジスタに対しては、生成制御指示子によりレジス
タの種別を指定するが、具体的な計算機でそれが何に対
応するかまでは指定しない。このようにすることにより
、抽象オブジェクトプログラムの中で、レジスタを機種
に依存しない形で表面化する。
ログラムを生成するために次の2つをインストーラに設
定する。
用可能なレジスタの種別と数) (ii)ARMの命令語列パターンから実行計算機命令
語列パターンへの変換規則なお、上記において、ARM
の命令語列パターンと実行計算機の命令語列パターンは
、それぞれ、複数個の命令から構成される。
を1対1に対応させない理由は以下による。
マシンの命令セットの厳密な意味での共通部分ではない
。従って、実行計算機の命令中にARMの対応命令が存
在しないことがある。この場合、1ARM命令を、実行
計算機の数命令で実現する必要がある。
の命令列に対応する命令を実行計算機が備えている場合
がある。(例:レジスタ−メモリ演算命令等)一般に、
実行計算機の命令数を減らしたほうが実行速度が向上す
るため、このような場合は1命令で実現する。
計算機の機械語プログラムへの変換方法インストーラは
、ARMの抽象レジスタと実行計算機の実レジスタとの
対応を管理するテーブル(以下、レジスタ管理テーブル
)を持ち、以下の様に動作する。
象レジスタ割当て指示により、抽象レジスタと実レジス
タの対応付けを試みる。実行計算機仕様のレジスタ用途
指定に記述された範囲で、他の抽象レジスタと対応して
いない実レジスタ、即ち、空いていないレジスタが存在
すれば、当該実レジスタと指示された抽象レジスタとを
対応させる。
ジスタ解放の指示により、抽象レジスタと実レジスタと
の対応付けを解除する。
成制御指示子により、抽象レジスタが実レジスタと対応
しているか否かを検査し、ARM命令語列を選択する。
に対し、実行計算機仕様におけるARMの命令語列パタ
ーンから実行計算機命令語列パターンへの変換規則を適
用し、実行計算機の命令語列の生成と、抽象レジスタ番
号の実レジスタ番号への置換とを実施する。
令語列において、メモリアドレスを記号名称から数値番
地へ変換する。
、ソースプログラムを抽象オブジェクトプログラムに翻
訳する。また、この時に、ソースプログラムレベルの最
適化、及び、レジスタの利用を前提としたARM命令語
レベルの最適化を行なう。
、上記の方法により抽象オブジェクトプログラムから実
行計算機の機械語プログラムを生成する。
算機の機械語プログラムは、(1)コンパイラによりソ
ースプログラムレベルの最適化とレジスタの利用に関す
る最適化が実施される、(2)インストーラの実レジス
タ割当て機能により、実行計算機が備える実レジスタを
最大限に利用することができる、(3)インストーラの
命令語列パターン置換機能により、例えば、連続するA
RMの複数命令語列を実行計算機の対応する1命令語に
置き換えることができ、 実行計算機が備える高
機能命令を生かすことができる、ので、従来の(コンパ
イラ方式)によって生成される機械語プログラムと同等
程度の実行速度性能を維持したまま、複数機種間でオブ
ジェクトプログラムを共有することができる。
明する。
から機械語プログラムへの翻訳システムの構成の一例を
示している。
ンカ1002、インストーラ1003の各サブシステム
からなる。
1004を入力し、構文解析、意味解析、および後述す
るソースプログラムレベルでの最適化等を行ない、抽象
オブジェクトプログラムである ArmCodeプログ
ラム1005を出力する。なお、 ArmCodeは、
本発明の特徴の一つであるので、 ArmCodeの仕
様については図4〜図12を用いて後で詳細に説明する
。また、これに関連して、コンパイラの構成については
図2により、コンパイラにおける最適化処理については
、図13〜図22により後述する。
04からコンパイラが生成した ArmCodeプログ
ラム1005、他のソースプログラム1006から同様
にコンパイラが生成した ArmCodeプログラム1
007、及び、 ArmCodeプログラムライブラリ
1008を入力し、各プログラム間のルーチン参照関係
の解決、変数・定数参照関係の解決、データ領域の統合
、及び、命令領域の統合を行ない、結合済 ArmCo
deプログラム1009を出力する。リンカ自身の機能
は、ArmCodeを通常の機械語とみなした従来のオ
ブジェクトプログラムのリンケージエディタの機能の一
部と同等であり、以下では詳細に述べない。
Codeプログラム1009を入力し、個別の目標計算
機の仕様情報1010であるレジスタ用途指定1019
および機械命令選択規則1020を用いて、実レジスタ
割付、機械命令選択、機種依存最適化を行ない、機械語
プログラム1011を計算機A1012のメモリ上に展
開する。インストーラにおける処理も本発明の特徴であ
り、これについては図23〜図30を用いて後で詳細に
説明する。
械語プログラム1011を実行する。
ラム1013から生成された ArmCodeプログラ
ム1014が、他の ArmCodeプログラムや A
rmCodeプログラムライブラリ1008との結合を
必要としない場合、インストーラ1003は、 Arm
Codeプログラム1014を直接入力し、機械語プロ
グラムに展開することができる。
械語プログラムを生成するが、インストーラ1015は
、計算機Bの仕様情報1018を用いて計算機B101
7用の機械語プログラムを生成する。従って、本システ
ムでは、同一の結合済 ArmCodeプログラム10
09から、複数の計算機(計算機A1012、計算機B
1017)の機械語プログラム(機械語プログラム10
11、機械語プログラム1016)を生成し、それぞれ
の計算機で当該プログラムを実行することができる。
から、異なる仕様の複数の計算機の機械語プログラムを
生成した例については、図31〜図35によって後述す
る。
コンパイラの一つの実施例を示すものである。ソースプ
ログラム3102は、まずコンパイラ3100の構文・
意味解析部3104によって構文解析、意味解析されて
中間語3106に変換され、ソースプログラムで使われ
ている各種の記号の情報が記号表3108に記載される
。その中間語3106に対して、中間語最適化部311
0によって制御フロー解析・データフロー解析して大域
的最適化を行い、抽象レジスタマシン命令の列としての
最適化前の ArmCode(Abstract re
gister machine Code)列3112
を生成する。その後、抽象レジスタ命令の最適化処理3
114を行って、最適化された抽象レジスタマシン命令
列としての抽象オブジェクトプログラム3116を生成
する。構文解析、意味解析、制御フロー解析、データフ
ロー解析、大域的最適化の方法については、A. V.
Aho, R. Sethi,J. D. Ullm
an 著、Compilers Principles
, Techniques, and Tools (
Addison−Wesley Publishing
Co., 1986) 等で述べられている。 抽象レジスタ命令の最適化処理については後で説明する
。
ン命令 ArmCode の構成にある。ArmCod
e は、本発明で目的とする処理、すなわちオブジェク
トプログラムをロード時に対象機種に合わせた機械命令
に高速に変換する処理に適した構成と内容を有している
。
くの縮小命令セット計算機すなわちRISCマシンに共
通に適用できるものであり、ArmCode−R(Ab
stract RegisterMachine Co
de for RISC machines)と呼ぶ。
る。
ore型命令でのみ行う。
ない(16かそれ以上ある)。
constant)を持つ。
で表現される。
計算機の機械命令そのものではないが、それに容易に変
換できるものであり、命令の表現形式には次の特徴があ
る。
抽象レジスタとして表現される。
記号名称によって表現される。
る。
、それは ArmCode−R を表す。
ログラムと具体計算機の機械語プログラムとの対応関係
を示したものである。ソ−スプログラム2910は、既
に述べたように、コンパイラとリンカ2912で翻訳・
結合されて、抽象オブジェクトプログラム2920に変
換される。この抽象オブジェクトプログラムは、抽象レ
ジスタマシンの命令である ArmCode の列
として表される。
の計算機に共通的なモデル計算機の命令であり、その個
々の命令に含まれる代表的項目は、抽象オペレ−タ29
21と抽象レジスタ指定2923、メモリ/定数指定2
925である。抽象オペレ−タは、メモリとレジスタ間
のデ−タ転送を指示するロ−ド、ストアや、算術演算と
しての加減算など、多くの計算機に普遍的に備わってい
る命令を表す。抽象レジスタ指定は、抽象レジスタマシ
ンのレジスタを表すものであり、実在のレジスタにおけ
るような使用個数の制限はないものとする。メモリや定
数の指定2924は、番地や値の大きさに制限のない点
以外は、実在の計算機におけるメモリや定数と同様の扱
いができるものとする。
々の機種に合わせて作られたインスト−ラによって、対
象機種の機械語命令列に変換される。たとえば、図10
0の抽象レジスタマシン命令列2920は、機種A用イ
ンスト−ラ2930を使うと機種A用の機械語命令列2
950に変換され、機種C用インスト−ラ2940を使
うと機種C用の機械語命令列2960に変換される。抽
象レジスタマシンの命令と具体計算機の命令は、必ずし
も1対1に対応するのではなく、一般には抽象レジスタ
マシンのm個の命令からなる命令列が具体計算機のn個
の命令からなる命令列に変換される。各々の機械語命令
に含まれるオペレ−タやレジスタ指定、メモリ/定数指
定は、その機種固有のものである。例えば、機種A用の
機械語プログラム2950のオペレ−タ2951やレジ
スタ指定2953、メモリ/定数指定2955は、機種
A固有のものであり、機種B用の機械語プログラム29
60のオペレ−タ2961やレジスタ指定2963、メ
モリ/定数指定2965は、機種B固有のものである。
には、計算機が実際に実行する命令とその構造を記述す
る機械語生成命令と、機械語生成を制御する生成制御文
が含まれる。例えば次のような形をとる。
5,0,0xc0000000);if (alc10
) { Load RegMd Ar10 Vbase OdD
isp v;}Add RegCon Ar11 N
oreg OdCi 6;機械語生成命令には下記の種
類のものがあり、抽象オブジェクトプログラムではそれ
らをセミコロンで区切って書き並べる。
他)(2)プログラムの構造を表す疑似命令(Sta
rt/Pend, Block/End, Stmt,
他)(3)記号名称を指示する疑似命令 (Entry, External, Label,
Name, 他)(4)メモリを指定する疑似命令 (Dword, Dconst, Daddr, 他)
(5)デバッガ等むけの記号情報を指定する疑似命令(
Sinf, 他) 生成制御文は、図4に示すように、条件文3120と代
入文3122、関数参照文3124からなり、その中で
は定数と単純変数を含む式が使える。生成制御関数とし
ては、3124に示すように、次のものが使える。
ジスタ種別,判定変数, 命令番号, 温存個数,優先
度)第1引数で指定した抽象レジスタに対して、第2引
数で指定した種別の物理レジスタの割付を要求する。命
令番号は割付要求に先行するレジスタ使用命令の順序番
号であり、温存個数は割付後も温存すべきレジスタの個
数を表す。優先度はレジスタ割付の優先度である。第3
引数の判定変数の値は、割要求時点で物理レジスタが割
り付けできれば1となり、割り付けできなければ0とな
る。
指定した抽象レジスタに対する物理レジスタを解放する
。
表す。抽象レジスタ使用命令に一連番号をつけておき、
現地点よりp個先で使われるものには pー1個の0の
後に1が一つあるベクトルを対応させる。優先度はビッ
トベクトルを符号無しの整数値と見て大きいものの方が
高いとする。従って、すぐ次で使われる抽象レジスタの
優先度は、それより後ろで使われるものより高い。複数
箇所で使われるときは、それらのビットベクトルをOR
したベクトルを対応させる。現地点が一つすすむとその
ビットベクトルは一つ左へシフトされる。左シフトの際
、左へあふれたビットは捨てられ,右端には0が補われ
る。従って、抽象レジスタの優先度は、使用位置の直前
で最も高くなり使用位置を過ぎると下がる。
1ビットと限定しているのではない。抽象レジスタを使
う命令の列、あるいは機械語対応命令の列を固定長の区
間に区切り、その各々の区間ごとに一つのビットを対応
させ、注目している抽象レジスタがその区間で使われて
いれば1とし、使われていなければ0とすることにして
もよい。このようにすれば、短いビットベクトルで長い
命令列のレジスタ使用状況を表現できる。区間の長さを
1とすれば上で述べた対応関係となる。
ループの長さ(の数分の1)の距離でまた使われるとし
て、その長さ(の数分の1)の調整数だけ右へシフトし
たビットベクトルを算術加算し、それを優先度を表すビ
ットベクトルとする。
alloc 関数ではこの優先度を指定し、その優先
度が使用可能な物理レジスタの個数の内にあれば割付を
行い、なければ割付しない。以前割り付けた抽象レジス
タの優先度は、使用位置が近ずいていれば上がり、過ぎ
ていれば下がるので、割付地点での他レジスタの優先度
と比較して割り付けるか否かを決める。優先度が低くて
あふれた抽象レジスタはメモリに割り付けされる。優先
度については、後ほど図9でさらに詳しく説明する。
す。ArmCode−R の各命令3130は、オペレ
−タ3132、アドレスモ−ド3134、第1オペラン
ド3136、第2オペランド3138、第3オペランド
3140で構成される。それらは以下の内容を表す。
スモ−ド オペランド形態の区分第1オ
ペランド レジスタ R1、リテラル
c1または ArmCode番地 c1 第3オペランド メモリ番地,ディスプ
レースメント d3、リテラル c3、ラベル c3、
ArmCode番地 c3、他 ここで、各オペランド3136、3138、3140は
図4に示す通り、次のように表現される(機械語生成命
令の仕様参照): レジスタ 抽象レジスタ番号メモリ番地
絶対番地、または変数名を表す記号表の位置、また
はメモリ内の番地を表す抽象レジスタ番号デイスプレ−
スメント ベ−スレジスタに対する変位を表す数
値 リテラル 整定数(演算対象としての数値、
文字コ−ド、または文字列表や注釈表の位置)ラベル
レベル表 LBL の項目番号ArmC
ode番地 ArmCode の一つの命令の位置
第3オペランドは、オペランドの型を示す小項目とオペ
ランドを表す小項目の組合せとして、次のように表現さ
れる。
目 s3OdLab c3 ラベル表(LBL
)記載項目 c3Odci c3 命令内ス
カラ定数 c3OdCL c3 c3 で示
されるメモリ内スカラ定数OdCS c3
ストリング定数 c3OdGvar s3 コン
パイラで生成された一時変数 s3OdDisp c3
ディスプレ−スメント c3OdNo N
ull 第3オペランドのないことを表現第1オペラ
ンド3136は、ロ−ド系や演算系の命令では結果の格
納先を示し、ストア系の命令ではストアすべきデ−タを
保持しているレジスタを示し、条件分岐命令では、条件
判定の対象デ−タを保持しているレジスタを示す。
ンドの個数とその役割を示す。
、第1オペランド(オペランド1)3136、第2オペ
ランド(オペランド2)3138、第3オペランド(オ
ペランド3)3140の可能な組み合わせを示すもので
あり、RegReg, RegMI 等の各々のアドレ
スモード3170に対して、オペランド1(3172)
、オペランド2(3174)、オペランド3(3176
)がどんな役割を持つかを示している。空白の部分はそ
のオペランドが有効でないことを示す。オペランドが単
なるレジスタなら、そのレジスタの値を利用ないし設定
する。オペランドが定数なら、その値を利用する。オペ
ランドがアドレスレジスタなら、そのアドレスレジスタ
の内容をメモリ番地とみなしてオペランドをアクセスす
る。オペランドがベ−スレジスタとディスプレ−スメン
トで指定されていれば、ベ−スレジスタの内容とディス
プレ−スメントを加算した数をオペランドのメモリ番地
としてアクセスする。アドレスモ−ド RegRCC
では、定数 c3 と c4 は 255 以下の正の
整数であるとして、第3オペランドの中に詰合せていれ
る。
示す。そこで使う記号の意味は下記の通りである。
す時、a は絶対番地を表す数値 c でも記号表の位
置を表す数値 s でも良い。
a^ : 番地 a の内容でポイントされる(aの内
容を番地とする)レジスタまたはメモリ ( ): 括弧内を一つの記号として扱う−> : 右
のレジスタや変数への代入<− : 左のレジスタや変
数への代入ロ−ド命令3210には次のものがある。(
図7)Load オペランド2、3で示され
る1語のデ−タをオペランド1のレジスタにロ−ド。
示される1バイトのデ−タをオペランド1のレジスタに
右詰めでロ−ド。
R1 <− [R2^]RegMR
R1 <− [([R2]+d)^]RegMD
R1 <− [d]RegCon R1
<− c3RegAdr R1 <− [R2]
+dストア命令3220には次のものがある。(図7)
Store オペランド1の1語のデ−タをオ
ペランド2、3で示す場所にストア。
1バイトのデ−タをオペランド2、3で示す場所にスト
ア。
[R1] −> R2^RegMR
[R1] −> ([R2]+d)^RegMD
[R1] −> d整数型2項算術演算命令32
30には、次のものがある。 (図7) Add オペランド1にオペランド2を加
算し、結果をオペランド1にいれる。
か0になる。
ペランド2を減算し、結果をオペランド1にいれる。
1より大なら1となり、そうでなければ0となる。
ランド2を乗算し、結果をオペランド1にいれる。
ランド2で除算し、商をオペランド1にいれる。
こと以外はAdd と同じ。
こと以外はSub と同じ。
せて加算すること以外は Add と同じ。
せて減算すること以外は Sub と同じ。
−> R1RegCon ([R1] op c
3) −> R1ここで、op は演算子 実数型2項算術演算命令3240には、次のものがある
。 (図8) AddR オペランド1にオペランド2を加
算し、結果をオペランド1にいれる。
ペランド2を減算し結果をオペランド1にいれる。
ランド2を乗算し、結果をオペランド1にいれる。
ランド2で除算し、商をオペランド1にいれる。
−> R1RegCon ([R1] op c
3) −> R1ここで、op は演算子。
ある。(図8) And オペランド1にオペランド2を
and し、結果をオペランド1にいれる。
ランド2を or し、結果をオペランド1にいれる
。
ランド2を xor し、結果をオペランド1にいれる
。
−> R1RegCon ([R1] op c
3) −> R1ここで、op は演算子。
。 (図8) Negate オペランド1を符号反転し、結果
をオペランド1にいれる。
ト反転し、結果をオペランド1にいれる。
し、結果をオペランド1に残す。
図8) Compar オペランド1と2の内容を比較し
、条件コ−ドを設定。
, [R1]=[R2] なら Eq, [R1]<[
R2] なら Lt。
なら Gt, [R1]=c3 なら Eq, [R
1]<c3 なら Lt。
る。 (図8) TZero モ−ド Reg1 0なら条件コー
ドを Eqとし、そうでなければ Ne とする。
R1]の第3オペランド c3 の示すビット位置が、
0なら条件コードをEq とし、1なら Ne とする
。
。 (図9) BrEq 条件コ−ドが Eq なら、オペ
ランドで指定された位置に跳ぶ。
でなければ、オペランドで指定された位置に跳ぶ。
なら、オペランドで指定された位置に跳ぶ。
または Eqなら、オペランドで指定された位置に跳
ぶ。
または Eqなら、オペランドで指定された位置に跳
ぶ。
なら、オペランドで指定された位置に跳ぶ。
ば直後の命令に進む。
す位置が跳び先の命令番地。
び先の命令番地。
。 (図9) Jump オペランドで指定された位置に跳
ぶ。
す位置が跳び先の命令番地。
び先の命令番地。
をもつ。(図9) Call 戻り番地を記録した後、オペラン
ドで指定された副プログラムへ跳ぶ。
2]+d 番地へ跳ぶ。
にいれ、LBL[c3] の示す副プログラム番地へ跳
ぶ。
した後、[R1]番地へ跳ぶ。
つ。(図9) Return オペランドで指定した副プログラ
ムから、Callで記録した戻り番地へ跳ぶ。
へ跳ぶ。
した戻り番地置をLIFO方式で取り出してそこへ跳ぶ
。
第2または第3オペランドで示された個数 n だけ、
左または右へシフトする。
ト左シフトする。 右の n ビットは 0 となる。
ト右シフトする。 左の n ビットは 0 となる。
はシフトビット数。
ジスタ、[R2] はシフトビット数。
図10)いずれも第1オペランド R1 の内容を、第
2または第3オペランドで示された個数 n だけ、左
または右へ回転する。
ト左へ回転する。
ト右へ回転する。
は回転ビット数。
ジスタ、[R2] は回転ビット数。
る。 (図10) GetBit RegCC R1 の c2 ビ
ットから始まる c3 ビットのデ−タを右詰めでR1
にいれる。R1の左部分は0となる。
の c2 ビットから始まる c3 ビットのデ−タを
右詰めでR1 にいれる。R1の左部分は0となる。
の 右 c4 ビット長のデ−タをR2 の c3 ビ
ットから始まるc4 ビット長のフィ−ルドにいれる。 他のビットフィールドの内容は不変である。
る。 (図10) ItoR RegReg R1 の内容を、整
数から実数に変換して R2 にいれる。
の内容を、実数から整数に変換して R2 にいれる。
の内容を、整数から長精度実数に変換して R2 にい
れる。
の内容を、長精度実数から整数に変換して R2 にい
れる。
ある。(図11) SaveSt RegMR その時点でのプロセ
ッサの状態をメモリに待避する。
ード、マスク、他) LoadSt RegMR メモリに格納されて
いる情報に従って、プロセッサの状態を回復する。
図11) Nop Reg0 何もしない。機械命
令としては1語を占める。
は次のものがある。(図11) Start Cont1 OdSym s3 の示す
(記号表の)名前をもつオブジェクト開始疑似命令 SubP Cont1 Odsym s3 で示さ
れる副プログラムの開始を示す。
ク開始End Cont0 ブロック終了
Loops Cont1 OdLab LBL[c3
] で示されるラベルを反復開始点とするループ文の先
頭を示す。
LBL[c3] で示されるラベルを反復開始点とする
ループ文の末尾を示す。
グラム又はユニットの終わり(End の後ろに De
fine Storage や Define Con
stant が続き、最後に Pend が付く)St
mt Cont1 OdCi c3 を文番号とす
る文の開始位置を示す。
次のものがある。(図11) Entry Cont1 OdSym s3 の示す
(記号表の)名前を入り口名として示す疑似命令 Extern Cont1 OdSym s3 の示
す(記号表の)名前が外部名であることを示す疑似命令 Label Cont1 OdLab c3 が記号
表を持つ LBL表番号(ユ−ザラベル)の時、その記
号表の名前をラベル名として定義する疑似命令。
(生成ラベル)の n 時、その生成ラベル名¥nをラ
ベル名として定義する疑似命令。
3 がメモリ定数を表す LRG表番号 m の時、定
数名 ¥¥Cm をラベル名として定義する疑似命令。
s3 が生成変数を表す記号表番号 k の時、生成
変数名 ¥¥Tk をラベル名として定義する疑似命令
。
s3 の示す(記号表の)名前を直前のOpLabel
の名前とEQUする命令メモリを指定する疑似命令34
10には次のものがある。 (図12) Dconst Cont1 OdCi c3 を整定
数値とする定数定義Dconst Cont1 OdC
S c3 を1語の文字列とみなす定数定義 Dconst Cont1 OdCS c3 を1語
の文字列定数とする定数定義 Dword Cont1 OdCi c3 語のメ
モリをとる Define Storage 命令 Daddr Cont1 OdSym s3 の示
す(記号表の)名前に対する Define Addr
ess MCode Cont1 OdCi c3 の指す
機械語 MRT[c3] を生成する命令 デバッガ等向けの記号情報を指定する疑似命令3420
には次のものがある。(図12) PInf Cont1 OdCi c3 の示す位
置にあるプログラム特性情報表の情報を示す。
3 の示す位置にある記号情報を示す。
なるソースプログラム3102の一つの例である。これ
は大域的変数を指定する宣言文3610や、関数名称の
指定3614、関数内の局所的変数の宣言3616、及
び、3620から始まる実行文の列等で構成されている
。3610の文頭にある1や3620の文頭にある10
等の番号は、それぞれの文の文番号を表す。図14から
図16は、このソースプログラムを ArmCode
の列に変換した例である。これではまだ最適化処理を行
っていない。
ースプログラムの宣言文3610に対応するものであり
、3702は同じく3616に対応するものである。3
710から始まるArmCodeの列は、ソースプログ
ラムの3620から始まる実行文の列に対応するもので
ある。
度について具体的に説明する。このArmCode で
抽象レジスタを使っている命令は、先頭に*印をつけた
3720、3722等の命令である。3710の al
loc 命令は Vbase という抽象レジスタに物
理レジスタの割付要求をしているものであるが、その優
先度として 0x62489700+0x002248
97 を指定している。Vbase というレジスタは
3722, 3734, 3758, 3770,
3790,3828, 3846, 3850, 38
56, 3860 の命令で使われているが、これらを
alloc のある位置 3710 からみて何番目
の抽象レジスタ使用命令かと数え、使っているところを
1、使っていないところを0としたビットベクトルを作
ってみると、図17の3910に示すように 0110
0010010010001001011100000
000 となる。これを16進数で表現したものが37
10の 0x62489700である。図14から図1
6のプログラムでは、 3868 の命令から3728
の命令へ戻るループがあり、その中には抽象レジスタ
を使う命令が23個ある。この実施例では、ループ内の
抽象レジスタ使用命令の個数を3で割って余りがあれば
切り上げたものをループに対する優先度の調整数として
いる。ループ内で使われている Vbase のビット
ベクトルは3910の第2ビットを0にした 0010
0010010010001001011100000
000 であり、これを23を3で割って切り上げた数
8だけ右へずらすと3912のように 0000000
0001000100100100010010111
となる。これを16進数で表現したものが 0x00
224897 である。従って、Vbase の割付要
求時の優先度は、図14の3710に示すように、両者
を符号無し整数として加算した数 0x6248970
0+0x00224897 となる。同様にして、37
18 の Ar5 等に対する優先度が3918、39
20で示すように算出されている。
はなく、既に述べたように、注目している命令の位置が
進むとともに左へシフトされてゆく。従って、ループの
先頭部の 3732 の位置では、レジスタ使用命令を
ふたつ越ているので、Vbase と Ar5のレジス
タ優先度は図17の3914と3918に示すように、
2つ左へシフトされ、Vbase の優先度は 0x8
9225C00+0x0089225C となり、Ar
5の優先度は3922と3924に示すように 0x4
4110000+0x00441100 となる。これ
が 3732 で割付要求される Ar6 の優先度
0xE0000000 と比較されるのである。
ビットベクトルを作成する手順を示すフロ−チャ−トで
ある。レジスタrの優先度ビットベクトルをPrで表す
と、まずそれをリセットする(ステップ3930)。そ
して、次のArmCode を取りだし(ステップ39
32)、それがル−プの開始でなければ(ステップ39
34)、レジスタ使用命令か否かを調べ(ステップ39
36)、レジスタ使用命令であればrの優先度ビットベ
クトルを1ビット左へずらし(ステップ3938)、レ
ジスタrを使っていれば(ステップ3940)、Prの
右端1ビットを1にし(ステップ3942)、レジスタ
rを使っていなければPrの右端1ビットを0にする(
ステップ3943)。次の ArmCode 命令がル
−プの終了またはレジスタrの開放命令であればrに対
する優先度ビットベクトルの算出を終了させ(ステップ
3944)、そうでなければ次の ArmCode 命
令の取りだしから繰り返す。
始命令であれば(ステップ3934)、レジスタrのそ
のル−プ内の優先度ビットベクトルをLrで表すことに
して、Lrをステップ3930からステップ3944ま
でと同じ手順で算出する。このようにして求めたLrに
対して、ル−プ内の抽象レジスタ使用命令数を3で割っ
て余りがあれば切り上げた数だけLrを左へずらす等の
調整を行い(ステップ3947)、その結果をそのル−
プを含む命令列の優先度ビットベクトルPrに加算する
(ステップ3948)。このようにして、一つの抽象レ
ジスタrに対する割り付け優先度ビットベクトルPrを
算出する。この処理を各々の抽象レジスタに対して実行
する。
mCode の実行時の効率を向上させるオブジェクト
最適化の一つの段階を示す実施例である。ArmCod
e の列をまず、制御の流入点や分岐点で区切り、多く
の基本ブロックに分割する(ステップ3952)。各基
本ブロックは、先頭の命令から最後の命令まで、常に一
直線に実行されるという特徴を持つ。図14から図16
では、3712から3722、3724から3748、
3750から3778等がそれぞれ一つの基本ブロック
であり、各々の先頭にはそれらの接続関係を示す生成制
御命令 bblock がついている。ある基本ブロッ
クbが実行されるのは必ず他の基本ブロックaが実行さ
れた直後である場合、基本ブロックaの後ろにbを接続
してゆくことを繰り返してできる基本ブロックの列を拡
張基本ブロックと呼ぶことにする。3724 から始ま
る基本ブロックと 3750 から始まる基本ブロック
、3780 から始まる基本ブロックでは、後ろのもの
は前のものが実行された直後に実行されるので、この3
つの基本ブロックをつないだものは拡張基本ブロックで
ある。3840 から始まる基本ブロックのように、先
行する基本ブロックや後続する基本ブロックが一意に確
定できないため拡張できない基本ブロックは、それ単独
で一つの拡張基本ブロックとする。次に、この拡張基本
ブロック内で共通式の削除を行う。そのため、第一の拡
張基本ブロックからはじめて(ステップ3954)、そ
の拡張基本ブロック内での共通式を摘出し(ステップ3
956)、後続の共通式を既出の共通式の結果を表すレ
ジスタや変数で置き換える(ステップ3958)。これ
を最後の拡張基本ブロックに到達するまで繰り返す(ス
テップ3960,3962)。この処理は、前掲の A
ho, Sethi, Ullman の著書に述べら
れている方法を ArmCode に適用することによ
って実現できる。
命令列をこのような処理や後で述べる最適化処理を行っ
て変換した抽象レジスタ命令列である。図14から図1
6、および図20、図21を使って、上記の最適化処理
を具体例で説明する。図14から図16の抽象レジスタ
Ar8 の値の算出命令列3758,3760とAr
12 の算出命令列3790,3792、Ar15 の
算出命令列3828,3830は、 Ar6 の算出命
令列3734,3736と同じであり、Ar9 を求め
る命令3764は は Ar7 を求める命令3740
と同じである。同様に、Ar13 は Ar11、Ar
15 と Ar16 は Ar5 と同じである。従っ
て、図20、図21では、4098でAR6とAR11
を再使用し、4076でAR7を再使用し、4108と
4110,4112でAR5を再使用するというように
、これらの抽象レジスタは同じ値を持つ抽象レジスタで
置き換えており、AR8とAR12、AR15、AR9
、AR13、AR15、AR16の値を求める命令列を
削除している。この置き換えに伴い、抽象レジスタの使
用頻度と使用位置が変わるので、各抽象レジスタの割付
優先順位も変わる。図20、図21の4028等のal
loc命令はこれをも示している。
ArmCode に対して、さらにループ内不変式を
ループ外に移動するとともに、分岐最適化を行っている
。図22は、その過程を示すフローチャートである。フ
ロー解析によってループを検出したあと(ステップ42
02)、内側のループからはじめて(ステップ4204
)、ループ内不変式を検出し(ステップ4206)、そ
れをループ開始直前に移動して(ステップ4208)、
ループ内で同じ計算を何度も行うことを回避している。 これを一番外側のループに至るまで繰り返す(ステップ
4210,4212)。図14から図16の Ar10
と Ar11、Ar17 は3728で始まり3874
で終わるループの中では値が変わらないので、それを算
出する命令列3770と3786、3860をループの
前に移動してある。それらが図20から図21の403
8と4044、4050である。
BrGe での分岐先 L3(3806)には L5
への無条件分岐命令(3808)があるので、この B
rGe の分岐先を L5 とすることにより、L3
での無条件分岐命令(3808)を削除できる。また、
3802の Jump の跳び先 L4(3812)
にも L5 への無条件分岐命令(3814)があるの
で、この Jump の分岐先を L5 とすることに
より、L4 での無条件分岐命令(3814)も削除で
きる。このようにして、実行効率を向上させるために抽
象レジスタマシンでの命令列効率化を行った結果が図2
0と図21に示す ArmCode である。
命令列(ArmCode−R の命令列)から実際の計
算機の機械命令列を生成する方法について説明する。
タの種別を示したものである。4260は算術演算の用
途 RcArith として使える物理レジスタが8番
から23番までのレジスタであることを示している。同
様にして、4262の RcAddr は番地計算用に
使えるレジスタを示し、4264の RcSect は
セクションの開始位置を示すのに使えるレジスタを示し
、4266の RcReturn は 副プログラムか
らの復帰に使うレジスタ、4268の RcFuncv
al は関数値を入れるのに使えるレジスタ、4270
の RcParmは引数を入れるのに使えるレジスタ、
4272の RcNosave は副プログラム参照時
に待避・回復されないレジスタ、4274の RcTe
mpは一時的に使うレジスタ、4276のRcFixe
d は用途の固定されたレジスタ、4278の RcA
ny はレジスタ割付の対象となるすべてのレジスタを
表す。
ジスタとの対応関係の一部を示したものである。抽象レ
ジスタ4280は、任意個数使えるものとしているが、
機種Aの物理レジスタ4282の数は32個に限定され
ている。 関数値を入れる抽象レジスタ4284を Funcva
l0, Funcval1 で表すと、それを物理レジ
スタ2と3に対応付ける(4290、4291)。引数
を入れる抽象レジスタ4285として Param0,
Param1, ... Param p が使われ
ているとすると、それらを物理レジスタ4から7に対応
付ける(4291、4292)。算術演算の抽象レジス
タ4286として Ar0, Ar1, ... Ar
q が使われているすると、それらを物理レジスタ8
から23までに対応付ける(4292、4294)。番
地計算用の抽象レジスタ4287として Addr0,
Addr1, ... Addr r が使われてい
るとすると、それらを物理レジスタ16から23に対応
付ける(4293、4296)。セクション開始位置を
示す抽象レジスタ4288として Sect0, Se
ct1, ... Sect s が使われているとす
ると、それらを物理レジスタ20から23に割り付ける
(4295、4297)。ここで、引数用抽象レジスタ
の数 p+1 や、算術演算用抽象レジスタの数q+1
等は、物理レジスタの数に拘束されることなく、ソ−
スプログラムで要求される数だけ使っている。この抽象
レジスタをどのようにして対象機種の物理レジスタに割
り付けるかは、後で図26から図29で説明する。
方式を示す図である。この方式では、パタン照合を行う
部分4556と、機械命令選択規則の表4630を持ち
、それに抽象レジスタマシン命令列4640を与えると
、機械語プログラム4650を生成する。機械命令選択
規則の表4630には、入力パタンとそれに対する出力
パタンが対応付けて入れてある。抽象レジスタマシンの
命令列4640から一つの命令4602を取り出したと
すると、機械命令生成規則の入力パタンでそれに合致す
るものを探す。この例では、第i番目の生成規則463
2の入力パタンiが合致するので、それに対応する生成
パタンiに従って置き換えを行い、機械命令4652を
生成する。この際、抽象レジスタを物理レジスタに置き
換えるとか、前後の状況に合わせて生成仕方を変える等
の処理を行うが、それについては、後で図29から図3
5で説明する。
の一部を示したものである。これは、4300や431
2等に示す抽象レジスタマシンの命令列の後ろに、{}
で囲んで、それに対応する機械語命令の生成仕方をC言
語に近い形で示す形態をとる。4312や4316等の
先頭にある|記号は、命令列の場合分けを示す記号であ
る。抽象レジスタマシンのオペランド Reg1 や
C, V 等は{}の中では$記号をつけて $Reg
1,$C, $V 等のように表されている。
定数をロードする抽象レジスタマシン命令に対する機種
Aの機械命令の生成仕方を、4302で始まる{}内の
文の列で示すものである。そこでは、定数が0かそれよ
り大きく 65536 未満であれば4304の指定に
従って機械命令を生成し、そうでなければ4308と4
310の指定に従って機械命令を生成することを表して
いる。この規則を図20の命令4030に適用して生成
されたのが図28の機械命令4500である。この例で
は、レジスタ割付の結果として、図27の4400に示
すように、抽象レジスタ Ar5 には物理レジスタ
$08, Ar6には $17 等と、それぞれの種別
に対応する物理レジスタが割り付けられている。
きには、alloc による要求時には物理レジスタを
割り付けず、それが実際に使われる時に再度割付処理を
行う。 図20の4046で抽象レジスタ Ar17 に物理レ
ジスタ割付要求を出しているが、ここでは割付後にも温
存しておくべきレジスタの数を2と指定しており、優先
度もあまり高くないので、この時点では割付ができなか
ったとすると、4048の条件が満たされないので、4
050ではロード命令は生成されず、Ar17 が変数
nの値を表すことが記録される。Ar17 を使う41
12の比較命令のところでは、まだ物理レジスタが割り
付けられていないので、この抽象レジスタ命令を処理す
る時にレジスタ割付処理が再度実行され、この時点では
Ar17 の優先度は最も高くなっているので割付が
実行され、その値を設定するロード命令も生成される。 この例で Ar17 に物理レジスタ$09が割り付け
られたとすると、4046での記録に従って、そこに変
数nの値をロードする命令が生成される。その結果、4
526の sub $24,$08,$12 の命令の代わりに lw $09,n($16) sub $24,$08,$09 の2命令が生成される。このように物理レジスタが割り
付けられていない抽象レジスタを使うときにそれに物理
レジスタを割り付けてそこに値を設定するのは、図26
の機械命令選択規則の4304等で使われている関数g
enの中で行う。
て、抽象オブジェクトプログラムから機種A用の機械語
プログラムを生成する。その際、対象計算機に合わせて
、最適な命令系列の選択や、物理レジスタの最適利用を
図る。この例では、図26の生成規則4302で定数の
大きさに合わせて生成する命令系列を変えるとか、使え
る物理レジスタの種類と数に合わせて抽象レジスタとの
対応付けを行い、一度値を設定した $11 等の物理
レジスタはできるかぎり何度も利用するようにしている
。機械語に変換したあと、機種固有の表現に伴って生ず
る共通式があれば、その再計算を削除する等の最適化処
理を行なうが、その処理内容は、図19で述べたのと同
様である。
ローチャートである。初期設定(ステップ4552)の
あと、抽象オブジェクトプログラムを構成するArmC
ode命令を一つ取り出し(ステップ4554)、図2
6に示すような機械語選択規則に書かれた ArmCo
de列のパタンのどれに適合するかを調べるパタン照合
(ステップ4556)を行う。読んだ部分に適合するパ
タンがなければその時の照合状態を記録し(ステップ4
560)、次のArmCode命令取り出しへと進む。 適合するパタンがあれば、そのパタンに対する機械語生
成の記述に従って、生成処理の準備を行い(ステップ4
562)、記述された内容がレジスタ割付を要求するも
のならばその処理を行い(ステップ4564)、メモリ
割付を要求するものならばその処理を行い(ステップ4
566)、具体的な機械命令の生成を要求するものなら
ばその処理を行い(ステップ4568)、デバッグ情報
等に関する制御情報の付加を要求するものならばそれら
を機械語プログラムに付加し(ステップ4570)、レ
ジスタ割付やメモリ割付、あるいは生成すべき命令の選
択等に関する生成制御情報の設定を要求するものならば
それらの設定を行う(ステップ4572)。そして、機
械語生成の記述に記された次の文へ進むことを繰り返し
(ステップ4576)、そこに記された動作の終わりに
達すれば(ステップ4574)、このパタンに対する生
成処理の後始末を行い(ステップ4578)、照合状態
を現状に合うよう変更して(ステップ4580)、パタ
ン照合処理に戻る。抽象オブジェクトプログラムが全部
処理されたことがわかれば機械語生成を終了させる(ス
テップ4582)。
うにして機械語を生成するインスト−ラの内部構造を示
す図である。インスト−ラ4530は、ArmCode
の列4531とその機種の機械命令生成規則4532
から機械語4549を生成する。照合は基本的には状態
遷移表を利用する形をとる。そのため、状態遷移表作成
プログラム4533によって、機械命令生成規則453
2を一旦状態遷移表4535に変換する。この状態遷移
表4535は、入力としての個々の ArmCodeと
状態番号の組合せに対し、実行すべきアクションと次に
遷移すべき状態番号を示す表である。状態遷移に基づく
パタン照合を行う部分では、入力される ArmCod
eとその時の状態から状態遷移表によってアクションル
−チン4538の内の適切なル−チンを選択し実行する
。そのときの状態遷移経歴を記録するのが状態スタック
4544である。対象機種固有のレジスタ用途指定を記
載しておくのがレジスタ用途指定表4546であり、処
理中のプログラムにおける抽象レジスタと物理レジスタ
の対応関係を記録するのがレジスタ対応表4548であ
る。
なるある機種Bにおける物理レジスタの種別を示したも
のである。4600は算術演算の用途 RcArith
として使える物理レジスタが1番から7番までと16
番から23番までのレジスタであることを示している。 同様にして、4602の RcAddr は番地計算用
に使えるレジスタを示し、4614の RcTemp
は一時的に使うレジスタを示すというように、第23図
に示す機種Aの場合とは異なった物理レジスタの使い方
が指定されている。
ジスタとの対応関係の一部を図示したものである。機種
Aの場合と同様に、抽象レジスタ4620は、任意個数
使えるものとしているが、機種Bの物理レジスタ462
2の数は32個に限定されている。関数値を入れる抽象
レジスタ4624を Funcval0, Funcv
al1 で表すと、それを物理レジスタ8と9に対応付
ける(4631、4632)。引数を入れる抽象レジス
タ4625としてParam0, Param1, .
.. Param p が使われているとすると、それ
らを物理レジスタ24から29に対応付ける(4633
、4634)。算術演算の抽象レジスタ4626として
Ar0, Ar1, ... Ar q が使われて
いるすると、それらを物理レジスタ1から7までと16
から23までに対応付ける(4635、4636、46
37、4638)。番地計算用の抽象レジスタ4627
としての Addr0, Addr1, ... Ad
dr r も同様に、物理レジスタ1から7までと16
から23までに対応付ける(4639、4640、46
41、4642)。
の一部を示したものである。4700は定数をロードす
るArmCode命令に対する機械命令の生成仕方を示
し、4712はメモリからのロードに対する機械命令、
4716はレジスタReg1とReg2を加えた結果を
Reg3に入れるArmCode命令列に対する機械命
令の生成仕方を示すというように、図20から図21の
抽象オブジェクトプログラムの機械語プログラムへの変
換に必要な機械命令選択規則を表している。図34は、
図20から図21のプログラムにおける抽象レジスタに
対する機種Bの物理レジスタの対応関係を4780等で
示したものであり、alloc、free等の生成制御
命令によってレジスタ割付を行った結果である。
30に適用して生成されたのが図35の機械命令480
0であり、規則4722を図20の4032に適用して
得られたのが図35の機械命令4802である。このよ
うにして、機種B用のインストーラでは、図20から図
21の抽象オブジェクトプログラムに図33の規則を適
用してゆくことにより、図35の機種B用の機械語プロ
グラムを生成する。
トプログラムから、機種A用のインストーラは機種A用
の機械語プログラムを生成し、機種B用のインストーラ
は機種B用の機械語プログラムを生成する。本実施例で
は、2つのインスト−ラの間では、機械命令選択規則と
物理レジスタ用途指定は異なるが、図29に示す処理内
容は同じである。
タ割付に関する最適化の処理の大部分が対象機種に依存
しないコンパイラで行なわれ、かつ、コンパイラでのフ
ロ−解析やレジスタ割付等に関する情報がインスト−ラ
に渡されるので、インスト−ラでは、あまり複雑な処理
をしなくても、実行効率のよい機械語プログラムを生成
できる。従って、プログラムを起動するたびに、インス
ト−ラによって、機種非依存な抽象オブジェクトプログ
ラムから対象機種向けの機械語プログラムを生成しても
、実行効率やインスト−ラによる処理時間が問題となる
ことはない。
形式でソフトウェアを配布すれば、複数の機種に対して
同一の抽象オブジェクトプログラムを配布すればよくな
り、機種ごとにソフトウェアを調整またはコンパイルし
なおす必要はないので、保守と管理が著しく容易となる
。
トプログラムは、ソ−スプログラムに比べて、処理操作
が細かいレベルに分解されており、その構造と記述順序
も異なるので、抽象オブジェクトプログラムからソ−ス
プログラムを復元することはほとんど不可能である。従
って、抽象オブジェクトプログラムの形でソフトウェア
を利用者に配布すれば、ソ−スプログラムに含まれるソ
フトウェアの実現方式やアルゴリズムを秘匿したまま、
同一プログラムを複数の機種で実行することや、使用機
種を変更することを利用者側で実現できる。
種システムで、同一のソースレベルデバッグシステムが
利用可能となる。以下、その実施例について図36から
図45を用いて説明する。
たデバッグシステムのブロック図である。デバッガ51
00は、ソースプログラム5101をコンパイルしてで
きた抽象オブジェクトプログラム5102をデバッグす
るのに用いられる。インストーラ5103は、抽象オブ
ジェクトプログラムを機械語プログラム5107に変換
するのに用いられる。 主記憶装置5104は、機械語プログラム5107およ
びデバッグ情報テーブル5108を格納するのに用いら
れる。表示装置5105は結果をユーザに表示するのに
、入力装置5106はユーザからの入力を受け付けるの
にそれぞれ使われる。
ャートである。まず、抽象オブジェクトプログラム51
02を読み込む(ステップ5120)。抽象オブジェク
トプログラムにはソースプログラム上での位置等を示す
ソース情報が含まれているので、次に、これに基づいて
ソース・抽象オブジェクト対応テーブルを作成する(ス
テップ5121)。次に、読み込んだ抽象オブジェクト
プログラムを入力としてインストーラを実行し、機械語
プログラムを主記憶装置上に作成する(ステップ512
2)。その際、抽象オブジェクトプログラムと機械語プ
ログラムの対応をとるための、抽象オブジェクト・機械
語対応テーブルを作成する(ステップ5123)。なお
、本実施例では、ソース・抽象オブジェクト対応テーブ
ルと、抽象オブジェクト・機械語対応テーブルは合わせ
て1つのテーブル(ソース・抽象オブジェクト・機械語
対応テーブル)として構成する。このテーブルはデバッ
グ情報テーブル5108に含まれる。次に、ユーザが、
必要なデバッグ用コマンドを入力するので(ステップ5
124)、そのコマンドの種類に従って分岐をする(ス
テップ5125)。表示コマンドの場合は表示処理を行
い(ステップ5126)、ブレークポイント設定コマン
ドの場合はブレークポイント設定処理を行い(ステップ
5127)、実行コマンドの場合は実行処理を行い(ス
テップ5128)、その処理が終了した後、ステップ5
125から繰り返す。これらのコマンド処理については
図38から図43を用いて詳しく説明する。入力コマン
ドが終了コマンドであった場合は終了する。
は変数iの値を表示するコマンドであり、表示コマンド
名5131と、変数名5132とからなる。
り、図37のステップ5126の処理を詳しくしたもの
である。まず、表示コマンド内の変数名を取りだす(ス
テップ5133)。次に、ソース・抽象オブジェクト・
機械語対応テーブル(以降、単に対応テーブルと呼ぶこ
ともある)を用いて、その変数の内容が格納されている
主記憶上のアドレスに変換する(ステップ5134)。 次に、ステップ5134で得られたアドレスの内容を主
記憶から読み出し(ステップ5135)、読み出した内
容を、変数のデータ型に従って変換し、表示装置上に表
示する(ステップ5136)。
例である。この例はソースプログラムの文番号10の文
にブレイクポイントを設定するコマンドであり、コマン
ド名5141と、文番号5142とからなる。
ローチャートであり、図37のステップ5127の処理
を詳しくしたものである。まず、コマンド内の文番号を
取り出す(ステップ5143)。そして、対応テーブル
内の、その文番号にブレークポイントが設定されている
ことを示すフラグを、オンにする(ステップ5144)
。
プログラムの実行を行うコマンドであり、コマンド名5
151だけからなる。
り、図37のステップ5128の処理を詳しくしたもの
である。まず、1命令だけを実行する(ステップ515
2)。これは、命令を1つだけ実行するごとに、トラッ
プがかかって制御がデバッガに戻るようなモードでCP
Uを走らせることによって可能である。次に、命令のア
ドレスを取り出す(ステップ5153)。これはプログ
ラムカウンタ等の内容を読み出すことによって可能であ
る。最後に取りだしたアドレスにブレークポイントが設
定されているかを、対応テーブルを使って調べ、設定さ
れていなければステップ5152から繰り返し、設定さ
れていれば終了する(ステップ5154)。
グラム例である。ここでは、各文の文番号5160と、
その文のソースプログラムの記述5161を示している
。文番号は、実際のソースプログラムの中には含まれな
い。なお、本実施例の以降の説明では、このソースプロ
グラムを例として用いる。
語対応テーブルの一例を示した図である。対応テーブル
は、(a)文情報テーブルと(b)変数情報テーブルと
からなる。文情報テーブルは、ソースプログラム文番号
5170と、抽象オブジェクトプログラム命令アドレス
5171と、機械語プログラム命令アドレス5172お
よびブレークポイント設定フラグ5173の4つのフィ
ールドを持つ。例えばエントリ5174は、ソースプロ
グラムの文番号10の文が、抽象オブジェクトプログラ
ムでは、「000060」というアドレスに位置する命
令となり、機械語プログラムでは「000040」とい
うアドレスに位置する命令となり、さらにその文にはブ
レークポイントが設定されていることを示している。
変数種別5176と、型5177と、行番号5178、
および機械語アドレス5179の5つのフィールドを持
つ。変数名5175はソースプログラムにおける変数名
、変数種別5176は局所変数/大域変数の区別、型5
177はその変数のデータ型、文番号5178はその変
数が宣言されたソースプログラム上の位置を表す。機械
語アドレス5179はその変数の機械語プログラム上で
のアドレス情報を示すもので、局所変数の場合はフレー
ムポインタからのオフセットを、大域変数の場合は変数
領域ベースアドレスからのオフセットを表す。例えばエ
ントリ5180は、変数iが、局所変数であり、型はi
ntで、ソースプログラムの文番号4に位置し、機械語
プログラム上ででフレームポインタからのオフセットが
−4であることを示している。
デバッグシステムは、機種に依存しない抽象オブジェク
トプログラムを実行可能な機械語プログラムに変換する
インストーラを備えているので、同一の抽象オブジェク
トプログラムが複数機種システム上でデバッグできると
いう効果がある。
ードまたはCD−ROM等で抽象オブジェクトプログラ
ムを供給し、マシンに依存せずに即実行可能なシステム
が提供できる。例えば、ゲームプログラムをICカード
に内蔵し、インストーラを個々のマシンに内蔵すること
により、同一のゲームを異なるマシン(ICカード装置
)で実行することができる。以下ではそのような実施例
を図46から図50を用いて説明する。
たICカード装置のブロック図である。本ICカード装
置は、制御装置5000、主記憶装置5002、ICカ
ード読み取り/書き込み装置5005、キーボード50
06、表示装置5007よりなる。制御装置5000は
CPU5001を内蔵している。また、主記憶装置50
02はインストーラ5003を内蔵している。ICカー
ド5008はICカード読み取り/書き込み装置500
5を通じて、ICカード装置と接続される。また、IC
カード内のプログラムは、インストーラによって、機械
語プログラム5004として主記憶装置内に格納される
。
。ユーザからの入力は、キーボード5006を通して行
われ、また、ユーザへの応答は表示装置5007に表示
される。ICカードはICカード挿入口5009から挿
入される。
ある。接点5010を通してICカードとICカード読
み取り/書き込み装置とデータをやりとりする。記憶素
子5011には、ICカード装置で実行されるべき抽象
オブジェクトプログラム5012と、データ5013が
記憶されている。
ブジェクトプログラムを実行するフローチャートである
。まず、ICカード5008をICカード挿入口500
9に挿入し(ステップ5020)、ICカードに内蔵さ
れている抽象オブジェクトプログラムとデータを読み出
す(ステップ5021)。次に制御部5000が、読み
込まれた抽象オブジェクトプログラムを入力としてイン
ストーラを起動する(ステップ5022)。その結果、
実行可能な機械語プログラム5004が主記憶装置内に
できるので、そのプログラムを実行する(ステップ50
23)。実行の結果、必要ならば結果データをICカー
ドに書き込み(ステップ5024)、カードを返却し(
ステップ5025)、終了する。
装置の間で、同一のICカード内の抽象オブジェクトプ
ログラムを実行する場合の様子を示した図である。ここ
では、互いに異なる命令体系を持つCPU−A5038
とCPU−B5039をそれぞれ制御装置内に含む、I
Cカード装置AとICカード装置Bを例として用いる。 ICカード5008内の抽象オブジェクトプログラムは
、ICカード装置Aで使用する場合には、インストーラ
A5034によってCPU−Aの機械語からなる機械語
プログラムA5036に変換される。一方、ICカード
装置Bで使用される場合には、インストーラB5035
によってCPU−Bの機械語からなる機械語プログラム
B5037に変換される。
ムを記憶する媒体としてICカードを用いたが、本発明
はそれに限定されるものではなく、CD−ROMやフロ
ッピーディスクを用いたシステムにも適用できる。
計算機上での ArmCodeプログラムの共有を示す
実施例である。
サーバ1102、及び、実行計算機システム(ここでは
、計算機システムA1103、及び、計算機システムB
1104)が接続されている。
が接続されており、ファイルサーバ1102は実行計算
機に対してディスク装置1105上のファイルを提供す
る。
リモートファイル管理プログラム(1106、1107
)を用いてディスク装置1105上のファイルにアクセ
スする。また、それぞれの実行計算機システムは、 A
rmCodeプログラムをそれぞれの機種の機械語プロ
グラムに変換するインストーラ(1108、1109)
を備えている。
eプログラム1110を各実行計算機システムで実行す
る場合、計算機システムA1103では、リモートファ
イル管理プログラム1106を通じて得られる Arm
Codeプログラム1110をインストーラ1108に
より機械語プログラム1111に変換し、これを実行す
る。計算機システムBにおいても同様に機械語プログラ
ム1112を生成し、これを実行する。
プログラム1110をネットワ−ク上の複数機種の計算
機で実行することができ、オブジェクトプログラムの共
通化が実現される。
クトプログラムの共通化ができず、同一機能を持つオブ
ジェクトプログラムを機種毎に保持する必要があった。 ある機能に関して、機種毎に必要であったオブジェクト
プログラムファイルを上記の様に ArmCodeプロ
グラムファイルに一本化することにより、以下のメリッ
トが生じる。
容量が削減される。
deプログラムに対してのみ実施すればよく、これを複
数のオブジェクトプログラムに対して同時に実施する必
要がないので、オブジェクトプログラムのバージョン管
理の手間が大幅に軽減される。
より運用していた計算機システムを、他の計算機システ
ムにリプレースする実施例である。
稼働する機械語プログラムに対するディスク装置120
2上の保存形式として ArmCodeを用いている。 即ち、計算機システムA1201で、ある機能を実現す
る場合、その機能に対応するディスク装置1202上の
ArmCodeプログラム1204を、インストーラ1
203により機械語プログラム1205に変換し、実行
している。
ラを備えた他の計算機システムに、容易にリプレースす
ることができる。
1208を備えており、ディスク装置1207上の A
rmCodeプログラムを機械語プログラムに変換して
実行できる。計算機システムA1201を計算機システ
ムB1206にリプレースするには、ディスク装置12
02上のArmCodeプログラム1204をディスク
装置1207に複写するだけでよい。即ち、計算機シス
テムB1206において、計算機システムA1201で
実現されていたある機能を実現する場合には、その機能
に対応するディスク装置1207上の複写された Ar
mCodeプログラム1204を、インストーラ120
8により機械語プログラム1209に変換し、実行する
。
形式として ArmCodeを用いることにより、以下
のメリットが生じる。
再コンパイルやプログラムの再作成などの計算機の移行
時の手間を削減でき、移行のための時間が短縮される。
となく機械語を設定することができ、システムとしての
性能を最大化する方向で計算機システムの設計が可能と
なる。
用の最適化とインストーラの実レジスタ割当て機能によ
り、実行計算機のレジスタを有効利用した機械語命令列
を生成できる、(2)インストーラの命令語パターン置
換機能により、実行計算機が備える高機能命令を利用で
きる。
ログラムへの翻訳システムの一実施例の構成を示す図で
ある。
令の列としての抽象オブジェクトプログラムを生成する
コンパイラの構成を示す図である。
す図である。
の種類を示す図である。
である。
ペランドの関係を示す図である。
命令の仕様を示す図(その1)である。
命令の仕様を示す図(その2)である。
命令の仕様を示す図(その3)である。
成命令の仕様を示す図(その4)である。
成命令の仕様を示す図(その5)である。
成命令の仕様を示す図(その6)である。
ラムの一つの例を示す図である。
ブジェクトプログラムの生成例であり、まだ最適化処理
をしていないものを示す図(その1)である。
ブジェクトプログラムの生成例であり、まだ最適化処理
をしていないものを示す図(その2)である。
ブジェクトプログラムの生成例であり、まだ最適化処理
をしていないものを示す図(その3)である。
ラムでのレジスタ割付の優先度の算出過程を例示する図
である。
トル作成手順を示したフロ−チャ−トである。
、共通式削除の過程を示したフロ−チャ−トである。
ブジェクトプログラムの例であり、最適化処理を行なっ
た後の抽象レジスタマシン命令列示す図(その1)であ
る。
ブジェクトプログラムの例であり、最適化処理を行なっ
た後の抽象レジスタマシン命令列示す図(その2)であ
る。
行なう処理のフロ−チャ−トである。
図である。
す図である。
ある。
図である。
ラムに対する機種Aでの物理レジスタ割付状況を示す図
である。
ラムから機種A用のインスト−ラによって生成された機
械語プログラムの例を示す図である。
ャ−トである。
。
表す図である。
ラムに対する機種Bでの物理レジスタ割付状況を示す図
である。
図である。
ラムに対する機種Bでの物理レジスタ割付状況を示す図
である。
ラムから機種B用のインスト−ラによって生成された機
械語プログラムの例を示す図である。
ステムのブロック図である。
。
ある。
である。
を示す図である。
ブルの一例を示す図である。
装置のブロック図である。
ログラムを実行するフローチャートである。
一のICカード内のプログラムを実行する場合の様子を
示した図である。
ArmCodeプログラムの共有を示す一例を示す図で
ある。
た計算機システムを、他の計算機システムにリプレース
する一例を示す図である。
005,1007,1014 ArmCodeプログ
ラム(抽象オブジェクトプログラム) 1008 ArmCodeプログラムライブラリ10
09 結合済ArmCodeプログラム1010
計算機Aの仕様情報 1011 計算機Aの機械語プログラム1012
計算機A 1015 計算機Bのインストーラ 1016 計算機Bの機械語プログラム1017
計算機B 1018 計算機Bの仕様情報 3100 コンパイラ 3102 ソ−スプログラム 3104 構文・意味解析部 3106 中間語 3108 記号表 3110 中間語最適化部 3112 最適化前のArmCode3114 抽
象レジスタ命令最適化部3116 抽象レジスタマシ
ン命令列としての抽象オブジェクトプログラム
Claims (26)
- 【請求項1】ソースプログラムを抽象オブジェクトプロ
グラムに変換するコンパイラと、複数の抽象オブジェク
トプログラムを一つの抽象オブジェクトプログラムに結
合するリンカと、抽象オブジェクトプログラムを具体計
算機の機械語プログラムに変換するインストーラと備え
た情報処理システムであって、該抽象オブジェクトプロ
グラムは、抽象レジスタマシンの命令語列からなり、該
抽象レジスタマシンは、複数個のレジスタと、レジスタ
とメモリとの間の転送命令と、レジスタ上の演算命令と
、命令実行の順序を制御する分岐命令とを持ち、該イン
ストーラは、命令仕様の異なる複数機種の具体計算機に
対応して複数備えており、あるソースプログラムから該
コンパイラにより変換された同一の抽象オブジェクトプ
ログラムを、それぞれの機種のインストーラを用いて複
数機種の具体計算機に対してそれぞれの機械語プログラ
ムに変換し実行することを特徴とする情報処理システム
。 - 【請求項2】請求項1における抽象オブジェクトプログ
ラムは、対象計算機における機械命令列を表す機械語対
応命令の他に、機械語の生成仕方を制御する生成制御命
令、叉はプログラムの構造を表す疑似命令、叉はプログ
ラムの命令の位置と記号名称を対応づける疑似命令、叉
はプログラムで使うメモリの位置あるいは大きさと記号
名称を対応づける疑似命令、叉はデバッグ情報指定用の
疑似命令を含むことを特徴とする情報処理システム。 - 【請求項3】請求項2における抽象オブジェクトプログ
ラムは、機械語対応命令に対する具体計算機の機械語の
生成位置をレジスタの割付状況に合わせて選択する指示
を含むことを特徴とする情報処理システム。 - 【請求項4】請求項1における抽象オブジェクトプログ
ラムは、レジスタの割付指示または開放指示を含むこと
を特徴とする情報処理システム。 - 【請求項5】請求項1における抽象オブジェクトプログ
ラムは、レジスタの種別、またはレジスタの割付優先度
、または温存レジスタ数の指示を含むことを特徴とする
情報処理システム。 - 【請求項6】請求項5のレジスタの割付優先度は、抽象
レジスタの使用頻度又は使用位置に依存させることを特
徴とする情報処理システム。 - 【請求項7】請求項1におけるコンパイラは、抽象レジ
スタマシン命令列における命令実行の重複を回避するた
めの命令列の変換を行い、命令の削除、叉は変更、又は
移動を行った結果としての抽象オブジェクトプログラム
を生成する機能を有することを特徴とする情報処理シス
テム。 - 【請求項8】請求項1におけるインストーラは、抽象オ
ブジェクトプログラムにおけるレジスタに対して具体計
算機の物理レジスタを割り付ける機能を有すること、叉
は抽象オブジェクトプログラムにおけるメモリ指定疑似
命令の指示に合致するようにメモリ割付を行う機能を有
すること、抽象オブジェクトプログラムから具体計算機
の機械語プログラムを生成することを特徴とする情報処
理システム。 - 【請求項9】請求項1におけるインスト−ラは、抽象レ
ジスタマシンのレジスタに対する具体計算機における物
理レジスタの割付を即座に行うか即座には行わないかを
選択できる機能を有すること、叉は物理レジスタを割付
けできたか否かを告知する機能を有することを特徴とす
る情報処理システム。 - 【請求項10】請求項1におけるインスト−ラは、抽象
レジスタマシンのレジスタに対する具体計算機の物理レ
ジスタの割付優先度を、割付指示のあった後も記録する
機能を有することを特徴とする情報処理システム。 - 【請求項11】請求項1におけるインスト−ラは、抽象
レジスタマシンのレジスタである抽象レジスタに対して
、具体計算機の物理レジスタの割付優先度を、割付優先
度の指定後であっても、処理下の抽象レジスタマシン命
令の位置叉は該抽象レジスタを使う抽象レジスタマシン
命令の位置に合わせて変化させる機能を有することを特
徴とする情報処理システム。 - 【請求項12】請求項1におけるインストーラは、同一
形式の抽象レジスタマシン命令列であっても、対応する
機械語命令列を前後の命令列の構成に合わせて変えた形
で、機械語プログラムを生成することを特徴とする情報
処理システム。 - 【請求項13】請求項12におけるインストーラは、同
一形式の抽象レジスタマシン命令列であっても、対応す
る機械語命令列を具体計算機の物理レジスタの割付状況
に合わせて変えた形で、機械語プログラムを生成するこ
とを特徴とする情報処理システム。 - 【請求項14】請求項12におけるインストーラは、具
体計算機の特性に合わせた機械語プログラム最適化機能
を有することを特徴とする情報処理システム。 - 【請求項15】請求項1におけるインストーラは、抽象
レジスタマシン命令の列に対する機械語命令生成規則に
従って、抽象オブジェクトプログラムから機械語プログ
ラムを生成することを特徴とする情報処理システム。 - 【請求項16】請求項14におけるインストーラは、抽
象レジスタマシン命令の列に対する機械語命令生成規則
を対象機種に合わせて変えることにより、同一の抽象オ
ブジェクトプログラムから、異なる機械語プログラムを
対象機種に合わせて生成することを特徴とする情報処理
システム。 - 【請求項17】ソースプログラムをオブジェクトプログ
ラムに変換するコンパイラと、オブジェクトプログラム
の指示に従って演算を実行する対象計算機を有する情報
処理システムにおいて、該オブジェクトプログラムは、
対象計算機における機械命令列を表す機械語対応命令の
他に、レジスタの割付・解放を制御する生成制御命令、
叉はソ−スプログラムの構造を表す疑似命令、叉はプロ
グラムの命令の位置と記号名称を対応づける疑似命令、
叉はプログラムで使うメモリの位置あるいは大きさと記
号名称を対応づける疑似命令、叉はデバッグ情報指定用
の疑似命令を含むことを特徴とする情報処理システム。 - 【請求項18】ソースプログラムを機械語対応命令列を
含む抽象オブジェクトプログラムに変換するコンパイラ
、または複数の抽象オブジェクトプログラムを結合して
結合済みの抽象オブジェクトプログラムを生成するリン
カ、並びに、いずれかの該抽象オブジェクトプログラム
を機械語プログラムに整えて具体計算機のメモリ内に格
納するインストーラを有し、該機械語プログラムは何等
の変換なしに具体計算機で実行できる機械命令列で構成
される機械語プログラム生成システムにおいて、相異な
る命令体系を持つ複数機種の各機種毎に該インストーラ
を備えることにより、同一の抽象オブジェクトプログラ
ムで指定された処理操作を複数機種の各々の具体計算機
の上で実行させることを特徴とする機械語プログラム生
成システム。 - 【請求項19】高級言語で書かれたソースプログラムと
、上記ソースプログラムを翻訳してできた抽象オブジェ
クトプログラムとを入力とするデバッグシステムであっ
て、上記抽象オブジェクトプログラムは、複数のレジス
タを持ち、レジスタとメモリの間の転送命令、レジスタ
上の演算命令、命令の順序をを制御する命令を持つ抽象
レジスタマシンの命令語列からなり、さらに、上記デバ
ッグシステムは、上記抽象オブジェクトプログラムを実
行可能な機械語プログラムに変換する手段を備えている
ことを特徴とする、デバッグシステム。 - 【請求項20】同一の抽象オブジェクトプログラムを複
数の機種で実行させる請求項18のデバッグシステム。 - 【請求項21】同一のデバッグシステムを複数の機種で
実行させる請求項18のデバッグシステム。 - 【請求項22】可搬型記憶媒体と、前記可搬型記憶媒体
が装着され、前記可搬型記憶媒体と情報の授受を行う情
報処理装置とを有する情報処理システムにおいて、上記
可搬型記憶媒体は、抽象オブジェクトプログラムを内蔵
し、上記抽象オブジェクトプログラムは、複数のレジス
タを持ち、レジスタとメモリの間の転送命令、レジスタ
上の演算命令、命令の順序をを制御する命令を持つ抽象
レジスタマシンの命令語列からなり、さらに、上記情報
処理装置は、上記抽象オブジェクトプログラムを読みだ
し、実行可能な機械語プログラムに変換する手段を備え
ていることを特徴とする、情報処理システム。 - 【請求項23】上記可搬型記憶媒体がICカードである
、請求項21の情報処理システム。 - 【請求項24】上記可搬型記憶媒体がCD−ROMであ
る、請求項21の情報処理システム。 - 【請求項25】複数機種の計算機をネットワークで結合
したネットワーク計算機システムであって、該ネットワ
ーク上の少なくとも一つの計算機は、請求項1に記載さ
れた抽象オブジェクトプログラムを備えたサーバであり
、該ネットワーク上のそれぞれの計算機は、サーバの持
つ該抽象オブジェクトプログラムにアクセスする手段と
、請求項1に記載されたインストーラとを備え、該ネッ
トワーク上のそれぞれの計算機において、サーバにより
提供される抽象オブジェクトプログラムを、それぞれの
インストーラにより、それぞれの機械語プログラムに変
換し実行することを特徴とするネットワーク計算機シス
テム。 - 【請求項26】請求項1に記載された抽象オブジェクト
プログラムとインストーラとを用いて運用している計算
機システムを、請求項1に記載されたインストーラを備
えた他の計算機システムで置き換え、置き換え前の抽象
オブジェクトプログラムを、置き換え後の計算機システ
ムで実行することを特徴とする計算機システムリプレー
ス方法。
Priority Applications (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP09198091A JP3602857B2 (ja) | 1991-04-23 | 1991-04-23 | 多機種対応型情報処理システム、および、方法 |
EP97121170A EP0834803A3 (en) | 1991-04-23 | 1992-04-22 | Computer with program installer |
EP97121157A EP0838754A3 (en) | 1991-04-23 | 1992-04-22 | Program installer |
EP92106888A EP0510616B1 (en) | 1991-04-23 | 1992-04-22 | Retargetable information processing system |
DE69230707T DE69230707T2 (de) | 1991-04-23 | 1992-04-22 | An das Ziel anpassbares Informationsverarbeitungssystem |
US07/872,773 US5586323A (en) | 1991-04-23 | 1992-04-23 | Compilier system using an intermediate abstract form and machine-specific installers |
US09/080,241 US20020026633A1 (en) | 1991-04-23 | 1998-05-18 | Retargetable information processing system |
US09/222,954 US6343373B1 (en) | 1991-04-23 | 1998-12-30 | Retargetable information process system |
US10/762,373 US20040154007A1 (en) | 1991-04-23 | 2004-01-23 | Retargetable information processing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP09198091A JP3602857B2 (ja) | 1991-04-23 | 1991-04-23 | 多機種対応型情報処理システム、および、方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11301898A Division JPH10254712A (ja) | 1998-04-23 | 1998-04-23 | 多機種対応型情報処理システム、および、方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH04322329A true JPH04322329A (ja) | 1992-11-12 |
JP3602857B2 JP3602857B2 (ja) | 2004-12-15 |
Family
ID=14041646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP09198091A Expired - Fee Related JP3602857B2 (ja) | 1991-04-23 | 1991-04-23 | 多機種対応型情報処理システム、および、方法 |
Country Status (4)
Country | Link |
---|---|
US (4) | US5586323A (ja) |
EP (3) | EP0510616B1 (ja) |
JP (1) | JP3602857B2 (ja) |
DE (1) | DE69230707T2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021225A (en) * | 1996-10-03 | 2000-02-01 | Nec Corporation | Image processing apparatus |
US6305013B1 (en) | 1998-04-01 | 2001-10-16 | Nec Corporation | Compiling method for generating target program in accordance with target processor type, compiling device, recording medium with compiling program recorded therein and recording medium with conversion table used in compiling recorded therein |
JP2002527815A (ja) * | 1998-10-10 | 2002-08-27 | ヴィクトリア・ユニバーシティ・オブ・マンチェスター | プログラムコード変換方法 |
JP2012088909A (ja) * | 2010-10-19 | 2012-05-10 | Tokyo Univ Of Agriculture & Technology | 変換器及び変換方法 |
JP2017021752A (ja) * | 2015-07-15 | 2017-01-26 | 富士通株式会社 | プログラムの最適化装置、最適化プログラム、及び、最適化されたプログラムの製造方法 |
Families Citing this family (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3602857B2 (ja) * | 1991-04-23 | 2004-12-15 | 株式会社日立製作所 | 多機種対応型情報処理システム、および、方法 |
US5715460A (en) * | 1993-06-14 | 1998-02-03 | International Business Machine Corp. | Template based facility for formatting compiler output |
DE69434845T2 (de) * | 1993-07-22 | 2007-05-16 | Koninklijke Philips Electronics N.V. | Multimedia-System zur interaktiven Darstellung von Benutzerinformation und Massenspeicher zum Gebrauch mit einem solchem System |
FR2721468B1 (fr) * | 1994-06-17 | 1996-07-26 | Alcatel Mobile Comm France | Procédé de partage de ressources physiques et dispositif d'interface pour la mise en Óoeuvre du procédé. |
EP0731971A1 (en) * | 1994-09-30 | 1996-09-18 | Koninklijke Philips Electronics N.V. | Multimedia system receptive for presentation of mass data comprising an application program inclusive of a multiplatform interpreter, and a platform subsystem arranged for interaction with said multiplatform interpreter, and mass memory for use with such system or subsystem |
US6748586B1 (en) * | 1994-09-30 | 2004-06-08 | Koninklijke Philips Electronics N.V. | Data processing system receptive for presentation of data comprising an application program and a multiplatform interpreter, and a platform subsystem arranged for interaction with said multiplatform interpreter, and memory for use with such system or subsystem |
US5590331A (en) * | 1994-12-23 | 1996-12-31 | Sun Microsystems, Inc. | Method and apparatus for generating platform-standard object files containing machine-independent code |
US5860006A (en) * | 1995-09-15 | 1999-01-12 | Apple Computer, Inc. | Processor independent network operating system loadable modules |
US6151618A (en) * | 1995-12-04 | 2000-11-21 | Microsoft Corporation | Safe general purpose virtual machine computing system |
GB9526129D0 (en) * | 1995-12-21 | 1996-02-21 | Philips Electronics Nv | Machine code format translation |
JP3720442B2 (ja) * | 1995-12-25 | 2005-11-30 | 株式会社ハドソン | デバッグ機能付きromカートリッジ |
US5761512A (en) * | 1995-12-27 | 1998-06-02 | International Business Machines Corporation | Automatic client-server complier |
US6199095B1 (en) * | 1996-01-29 | 2001-03-06 | Compaq Computer Corporation | System and method for achieving object method transparency in a multi-code execution environment |
US6091897A (en) * | 1996-01-29 | 2000-07-18 | Digital Equipment Corporation | Fast translation and execution of a computer program on a non-native architecture by use of background translator |
GB9613450D0 (en) * | 1996-06-27 | 1996-08-28 | Europay Int Sa | Payment system |
DE69714752C5 (de) * | 1996-10-25 | 2015-08-13 | Gemalto Sa | Verwendung einer hohen programmiersprache in einem mikrokontroller |
US6086632A (en) * | 1996-10-31 | 2000-07-11 | Nec Corporation | Register optimizing compiler using commutative operations |
US7077312B2 (en) * | 1998-10-27 | 2006-07-18 | Diebold, Incorporated | Automated banking machine system and method |
JP3816961B2 (ja) * | 1997-10-02 | 2006-08-30 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | バーチャルマシン命令を処理するためのデータ処理装置 |
DE69836902T2 (de) * | 1997-10-02 | 2007-10-18 | Koninklijke Philips Electronics N.V. | Auf variable instruktionen eingestellter computer |
DE19751955A1 (de) * | 1997-11-24 | 1999-06-02 | Biotechnolog Forschung Gmbh | Virtueller Roboter |
JPH11327879A (ja) * | 1998-05-15 | 1999-11-30 | Fujitsu Ltd | 変数検索装置及び方法並びに変数検索プログラムを記録したコンピュータ読取り可能な記録媒体 |
US6829759B1 (en) * | 1998-10-29 | 2004-12-07 | Texas Instruments Incorporated | System and method for generating a translation display |
FR2794543B1 (fr) * | 1999-06-04 | 2001-08-24 | Gemplus Card Int | Migration de differents langages sources vers un support d'execution |
US6889260B1 (en) * | 1999-06-10 | 2005-05-03 | Ec Enabler, Ltd | Method and system for transferring information |
US6802056B1 (en) * | 1999-06-30 | 2004-10-05 | Microsoft Corporation | Translation and transformation of heterogeneous programs |
US6625807B1 (en) * | 1999-08-10 | 2003-09-23 | Hewlett-Packard Development Company, L.P. | Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation |
GB9920676D0 (en) * | 1999-09-01 | 1999-11-03 | Tao Group Ltd | Translating and executing object-oriented computer programs |
US6754892B1 (en) * | 1999-12-15 | 2004-06-22 | Transmeta Corporation | Instruction packing for an advanced microprocessor |
AR033549A1 (es) | 2000-08-07 | 2003-12-26 | Diebold Inc | Maquina automatica para operaciones bancarias, metodos para operarla y medio legible por computadora |
US20040015820A1 (en) * | 2000-09-25 | 2004-01-22 | Edward Balassanian | Method and system for dynamic delivery of beads |
US20070016692A1 (en) * | 2000-10-16 | 2007-01-18 | Edward Balassanian | Method and system for dynamic delivery of beads |
US6907446B1 (en) * | 2000-10-16 | 2005-06-14 | Implicit Networks, Inc. | Method and system for dynamic delivery of beads |
EP1211598A1 (en) * | 2000-11-29 | 2002-06-05 | Texas Instruments Incorporated | Data processing apparatus, system and method |
US20020116699A1 (en) * | 2000-12-18 | 2002-08-22 | Armin Amrhein | Apparatus and method for checking the status of control systems |
US6934709B2 (en) | 2001-03-26 | 2005-08-23 | Matrixone, Inc. | Interface definition language compiler |
US6721943B2 (en) * | 2001-03-30 | 2004-04-13 | Intel Corporation | Compile-time memory coalescing for dynamic arrays |
US7140010B2 (en) * | 2001-03-30 | 2006-11-21 | Sun Microsystems, Inc. | Method and apparatus for simultaneous optimization of code targeting multiple machines |
US20030009750A1 (en) * | 2001-07-09 | 2003-01-09 | Robert Hundt | Optimizing an executable computer program having linkage functions |
US7117488B1 (en) | 2001-10-31 | 2006-10-03 | The Regents Of The University Of California | Safe computer code formats and methods for generating safe computer code |
EP1369778A3 (en) * | 2002-01-09 | 2004-01-02 | Matsushita Electric Industrial Co., Ltd. | Program distribution system |
US7331040B2 (en) * | 2002-02-06 | 2008-02-12 | Transitive Limted | Condition code flag emulation for program code conversion |
GB0202728D0 (en) * | 2002-02-06 | 2002-03-27 | Transitive Technologies Ltd | Condition code flag emulation for program code conversion |
US7117484B2 (en) * | 2002-04-16 | 2006-10-03 | International Business Machines Corporation | Recursive use of model based test generation for middleware validation |
US7703077B2 (en) | 2002-04-30 | 2010-04-20 | Microsoft Corporation | Programming model to detect deadlocks in concurrent programs |
JP4153732B2 (ja) * | 2002-06-19 | 2008-09-24 | 株式会社東芝 | ハードウェア動作記述変換方法及びそのためのプログラム |
JP4080809B2 (ja) * | 2002-08-01 | 2008-04-23 | 松下電器産業株式会社 | データの記憶領域への配置を決定するコンパイラ装置及び配置決定方法 |
US7603332B2 (en) * | 2002-08-06 | 2009-10-13 | Siemens Energy & Automation, Inc. | Devices, systems, and methods for mediated rule-based translation system configuration information |
US20040078781A1 (en) * | 2002-10-16 | 2004-04-22 | Novy Ronald Stephen | Algorithm for creating and translating cross-platform compatible software |
TWI244184B (en) * | 2002-11-12 | 2005-11-21 | Siliconware Precision Industries Co Ltd | Semiconductor device with under bump metallurgy and method for fabricating the same |
US9910653B2 (en) * | 2003-02-07 | 2018-03-06 | Nokia Technologies Oy | Software distribution |
GB2411990B (en) * | 2003-05-02 | 2005-11-09 | Transitive Ltd | Improved architecture for generating intermediate representations for program code conversion |
US7685581B2 (en) * | 2003-06-27 | 2010-03-23 | Microsoft Corporation | Type system for representing and checking consistency of heterogeneous program components during the process of compilation |
US7086041B2 (en) * | 2003-06-27 | 2006-08-01 | Microsoft Corporation | Extensible type system for representing and checking consistency of program components during the process of compilation |
US7559050B2 (en) * | 2003-06-30 | 2009-07-07 | Microsoft Corporation | Generating software development tools via target architecture specification |
US7707566B2 (en) | 2003-06-26 | 2010-04-27 | Microsoft Corporation | Software development infrastructure |
US7788652B2 (en) * | 2003-06-27 | 2010-08-31 | Microsoft Corporation | Representing type information in a compiler and programming tools framework |
US7698539B1 (en) | 2003-07-16 | 2010-04-13 | Banning John P | System and method of instruction modification |
US7606997B1 (en) | 2003-07-18 | 2009-10-20 | Guillermo Rozas | Method and system for using one or more address bits and an instruction to increase an instruction set |
US7526750B2 (en) * | 2003-10-15 | 2009-04-28 | Microsoft Corporation | Object-based systematic state space exploration of software |
US7797669B1 (en) * | 2004-02-13 | 2010-09-14 | Microsoft Corporation | Analysis of distributed software systems via specification substitution |
JP2005309841A (ja) * | 2004-04-22 | 2005-11-04 | Fujitsu Ltd | インストール制御プログラム、インストール方法およびインストール装置 |
US7589719B2 (en) | 2004-07-15 | 2009-09-15 | The Regents Of The University Of California | Fast multi-pass partitioning via priority based scheduling |
US7996833B2 (en) * | 2004-07-31 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | Method and system for replacing instructions and instruction blocks in computer code |
US7950010B2 (en) * | 2005-01-21 | 2011-05-24 | Sap Ag | Software deployment system |
US7533373B2 (en) * | 2005-01-25 | 2009-05-12 | Taiwan Semiconductor Manufacturing Co., Ltd | Method for prevention of system execution malfunction |
KR101332911B1 (ko) | 2005-05-11 | 2013-11-26 | 퀄컴 인코포레이티드 | 분산 처리 시스템 및 방법 |
US20060265387A1 (en) * | 2005-05-20 | 2006-11-23 | International Business Machines Corporation | Method and apparatus for loading artifacts |
US9455844B2 (en) * | 2005-09-30 | 2016-09-27 | Qualcomm Incorporated | Distributed processing system and method |
US8286158B2 (en) | 2006-02-06 | 2012-10-09 | Imation Corp. | Method and system for installing portable executable applications |
JP2008097249A (ja) * | 2006-10-11 | 2008-04-24 | Internatl Business Mach Corp <Ibm> | プログラム中の命令列をより高速な命令に置換する技術 |
US7720931B2 (en) | 2006-10-13 | 2010-05-18 | International Business Machines Corporation | System and method of remotely managing and loading artifacts |
US7761559B2 (en) * | 2006-10-13 | 2010-07-20 | International Business Machines Corporation | System and method of remotely managing and loading artifacts |
EP1927956A1 (en) * | 2006-11-30 | 2008-06-04 | Incard SA | Multi-applications IC Card with secure management of applications |
US8209662B2 (en) | 2006-12-04 | 2012-06-26 | Microsoft Corporation | Application retargeting |
US8930909B1 (en) * | 2007-07-13 | 2015-01-06 | The Mathworks, Inc. | Debugging using presentation layer representations of objects |
US20090063623A1 (en) * | 2007-08-31 | 2009-03-05 | International Business Machines Corporation | Determining connection information to use to access an artifact from an application on a remote server |
US7895462B2 (en) * | 2008-02-25 | 2011-02-22 | International Business Machines Corporation | Managing recovery and control of a communications link via out-of-band signaling |
US8762125B2 (en) * | 2008-02-25 | 2014-06-24 | International Business Machines Corporation | Emulated multi-tasking multi-processor channels implementing standard network protocols |
JP2009211190A (ja) * | 2008-02-29 | 2009-09-17 | Hitachi Ltd | 情報処理装置 |
US8341607B2 (en) * | 2008-03-13 | 2012-12-25 | International Business Machines Corporation | Condensing pattern matcher generation for intermediate language patterns |
US8904366B2 (en) * | 2009-05-15 | 2014-12-02 | International Business Machines Corporation | Use of vectorization instruction sets |
US9134977B2 (en) * | 2010-02-26 | 2015-09-15 | Red Hat, Inc. | Compiler operation for handling conditional statements |
US8375373B2 (en) * | 2010-04-19 | 2013-02-12 | Microsoft Corporation | Intermediate language support for change resilience |
US9081626B2 (en) * | 2010-05-03 | 2015-07-14 | Renesas Electronics America Inc. | Method and apparatus for converting software |
US20120124555A1 (en) * | 2010-11-11 | 2012-05-17 | Codekko Software, Inc. | Optimization of Compiled Control Objects |
US8464232B2 (en) | 2010-12-27 | 2013-06-11 | Aleksandr F. Urakhchin | Compiler compiler system with syntax-controlled runtime and binary application programming interfaces |
US9098317B2 (en) * | 2011-03-16 | 2015-08-04 | Microsoft Technology Licensing Llc | Optional retargeting of library references |
US8789026B2 (en) * | 2011-08-02 | 2014-07-22 | International Business Machines Corporation | Technique for compiling and running high-level programs on heterogeneous computers |
US9043766B2 (en) * | 2011-12-16 | 2015-05-26 | Facebook, Inc. | Language translation using preprocessor macros |
US9274772B2 (en) | 2012-08-13 | 2016-03-01 | Microsoft Technology Licensing, Llc. | Compact type layouts |
US9569184B2 (en) * | 2012-09-05 | 2017-02-14 | Microsoft Technology Licensing, Llc | Generating native code from intermediate language code for an application |
CN110554875B (zh) * | 2018-05-30 | 2021-01-15 | 北京三快在线科技有限公司 | 代码转换方法及装置、电子设备、存储介质 |
JP6950634B2 (ja) * | 2018-07-03 | 2021-10-13 | オムロン株式会社 | 制御装置および制御方法 |
CN111091612B (zh) * | 2019-10-09 | 2023-06-02 | 武汉凌久微电子有限公司 | 一种抽象目标码架构的着色语言机器码生成方法及装置 |
US11294649B1 (en) * | 2021-01-13 | 2022-04-05 | Amazon Technologies, Inc. | Techniques for translating between high level programming languages |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4667290A (en) * | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
US5151989A (en) * | 1987-02-13 | 1992-09-29 | International Business Machines Corporation | Directory cache management in a distributed data processing system |
JPH0391980A (ja) | 1989-09-04 | 1991-04-17 | Matsushita Electric Ind Co Ltd | 波長可変レーザ装置 |
US5187789A (en) * | 1990-06-11 | 1993-02-16 | Supercomputer Systems Limited Partnership | Graphical display of compiler-generated intermediate database representation |
US5339419A (en) * | 1990-06-25 | 1994-08-16 | Hewlett-Packard Company | ANDF compiler using the HPcode-plus compiler intermediate language |
US5280613A (en) * | 1990-06-25 | 1994-01-18 | Hewlett-Packard Company | ANDF installer using the HPcode-Plus compiler intermediate language |
US5276881A (en) * | 1990-06-25 | 1994-01-04 | Hewlett-Packard Company | ANDF producer using the HPcode-Plus compiler intermediate language |
US5560009A (en) * | 1990-09-21 | 1996-09-24 | Hewlett-Packard Company | Generating symbolic debug information by merging translation and compiler debug information |
JP3602857B2 (ja) * | 1991-04-23 | 2004-12-15 | 株式会社日立製作所 | 多機種対応型情報処理システム、および、方法 |
JPH06250633A (ja) * | 1993-02-26 | 1994-09-09 | Fujitsu Ltd | 多階調フォント生成方法及び多階調フォント生成装置 |
JP3405890B2 (ja) | 1996-10-15 | 2003-05-12 | 株式会社クボタ | 水田作業機 |
-
1991
- 1991-04-23 JP JP09198091A patent/JP3602857B2/ja not_active Expired - Fee Related
-
1992
- 1992-04-22 EP EP92106888A patent/EP0510616B1/en not_active Expired - Lifetime
- 1992-04-22 EP EP97121157A patent/EP0838754A3/en not_active Withdrawn
- 1992-04-22 EP EP97121170A patent/EP0834803A3/en not_active Withdrawn
- 1992-04-22 DE DE69230707T patent/DE69230707T2/de not_active Expired - Fee Related
- 1992-04-23 US US07/872,773 patent/US5586323A/en not_active Expired - Fee Related
-
1998
- 1998-05-18 US US09/080,241 patent/US20020026633A1/en not_active Abandoned
- 1998-12-30 US US09/222,954 patent/US6343373B1/en not_active Expired - Fee Related
-
2004
- 2004-01-23 US US10/762,373 patent/US20040154007A1/en not_active Abandoned
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021225A (en) * | 1996-10-03 | 2000-02-01 | Nec Corporation | Image processing apparatus |
US6305013B1 (en) | 1998-04-01 | 2001-10-16 | Nec Corporation | Compiling method for generating target program in accordance with target processor type, compiling device, recording medium with compiling program recorded therein and recording medium with conversion table used in compiling recorded therein |
JP2002527815A (ja) * | 1998-10-10 | 2002-08-27 | ヴィクトリア・ユニバーシティ・オブ・マンチェスター | プログラムコード変換方法 |
US8006237B2 (en) | 1998-10-10 | 2011-08-23 | International Business Machines Corporation | Program code conversion |
US8037461B2 (en) | 1998-10-10 | 2011-10-11 | International Business Machines Corporation | Program code conversion |
JP2012088909A (ja) * | 2010-10-19 | 2012-05-10 | Tokyo Univ Of Agriculture & Technology | 変換器及び変換方法 |
JP2017021752A (ja) * | 2015-07-15 | 2017-01-26 | 富士通株式会社 | プログラムの最適化装置、最適化プログラム、及び、最適化されたプログラムの製造方法 |
Also Published As
Publication number | Publication date |
---|---|
EP0834803A3 (en) | 1999-02-17 |
EP0838754A3 (en) | 2006-06-07 |
US20040154007A1 (en) | 2004-08-05 |
EP0510616A2 (en) | 1992-10-28 |
JP3602857B2 (ja) | 2004-12-15 |
EP0838754A2 (en) | 1998-04-29 |
US5586323A (en) | 1996-12-17 |
DE69230707D1 (de) | 2000-04-06 |
US20020026633A1 (en) | 2002-02-28 |
DE69230707T2 (de) | 2000-11-16 |
EP0510616B1 (en) | 2000-03-01 |
EP0510616A3 (en) | 1993-06-16 |
EP0834803A2 (en) | 1998-04-08 |
US6343373B1 (en) | 2002-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH04322329A (ja) | 多機種対応型情報処理システム、および、方法 | |
Schwarz et al. | Plto: A link-time optimizer for the Intel IA-32 architecture | |
Leupers et al. | Retargetable compiler technology for embedded systems: tools and applications | |
US5481708A (en) | System and methods for optimizing object-oriented compilations | |
Van Put et al. | Diablo: a reliable, retargetable and extensible link-time rewriting framework | |
JP5036801B2 (ja) | 高級プログラミング言語におけるプログラムをハイブリッド計算プラットフォームの統一された実行可能要素に変換するためのプロセス | |
JP5851396B2 (ja) | 処理方法 | |
JP4050764B2 (ja) | コンパイルシステム | |
US8423976B2 (en) | Extreme pipeline and optimized reordering technology | |
JP4403080B2 (ja) | 再構成可能なハードウェアエミュレーションによる制御データフローグラフを用いたデバッグ | |
US5966539A (en) | Link time optimization with translation to intermediate program and following optimization techniques including program analysis code motion live variable set generation order analysis, dead code elimination and load invariant analysis | |
US7530061B2 (en) | Programmatic access to the widest mode floating-point arithmetic supported by a processor | |
JP2006505056A (ja) | 制御フローグラフ表現を制御データフローグラフ表現に変換するためのシステムおよび方法 | |
Blickstein et al. | The GEM optimizing compiler system | |
Moona | Processor models for retargetable tools | |
Souza et al. | ISAMAP: instruction mapping driven by dynamic binary translation | |
Leupers | LANCE: AC compiler platform for embedded processors | |
JPH10254712A (ja) | 多機種対応型情報処理システム、および、方法 | |
JP2004348759A (ja) | 多機種対応型情報処理システム、および、方法 | |
Spink et al. | Efficient dual-ISA support in a retargetable, asynchronous dynamic binary translator | |
Harris | A just-in-time Java bytecode compiler | |
Scheller | Retargeting a C Compiler to the HAPRA/FAPRA Architecture | |
Molnar et al. | A microprogramming support tool for pipelined architectures | |
Edition | HP Fortran Programmer's Guide | |
Hohenauer et al. | Assembler Optimizer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040721 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040830 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040927 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081001 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091001 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |