JPH08234997A - レジスタ割付け方法 - Google Patents

レジスタ割付け方法

Info

Publication number
JPH08234997A
JPH08234997A JP4018895A JP4018895A JPH08234997A JP H08234997 A JPH08234997 A JP H08234997A JP 4018895 A JP4018895 A JP 4018895A JP 4018895 A JP4018895 A JP 4018895A JP H08234997 A JPH08234997 A JP H08234997A
Authority
JP
Japan
Prior art keywords
register
source program
virtual
unit
hardware
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
JP4018895A
Other languages
English (en)
Inventor
Takahiro Morota
貴弘 諸田
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP4018895A priority Critical patent/JPH08234997A/ja
Publication of JPH08234997A publication Critical patent/JPH08234997A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】アセンブラによるプログラミング工数を削減
し、最適な割付けを行うレジスタ割付け方法を提供す
る。 【構成】本実施例のアセンブラ102は、ソースプログ
ラム101およびオブジェクトファイル103に対応し
て、ソースプログラム入力部105、データフロー解析
部106、仮想レジスタ生存区間解析部107、仮想レ
ジスタ干渉区間解析部108、ハードウェアレジスタ割
付け部109およびソースプログラム出力部110を含
む仮想レジスタ割付け部104と、ソースプログラム入
力部111と、構文解析部112と、オブジェクトファ
イル出力部113とを備えて構成されており、アセンブ
リ言語により記述されたアセンブリソース入力が構文解
析され、マイクロコンピュータに準じたコードが生成さ
れて、オブジェクトファイルが出力される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はレジスタ割付け方法に関
し、特にマイクロコンピュータ用のアセンブラに対応す
るレジスタ割付け方法に関する。
【0002】
【従来の技術】現在においては、マイクロコンピュータ
も32ビットが主流になりつつあり、今までのマイクロ
コンピュータよりもレジスタ数がかなり多くなってきて
いる。マイクロコンピュータの組込み用プログラム開発
においても、低級言語であるアセンブリ言語中心の記述
から、高級言語であるC言語などによる記述が主流にな
ってきており、Cコンパイラが広く使われるようになっ
てきている。しかし、この場合においては、組込み型マ
イクロコンピュータ用のコンパイラであるために、限ら
れたROMとRAMを効率よく使用することにより、出
来得る限りコードを小さくし、且つ出来得る限り実行速
度の速いオブジェクトを生成することが求められてい
る。
【0003】実際に、プログラムの殆どはC言語により
記述されてはいるものの、実行速度が重要なモジュール
を作成する場合には、C言語などにより記述するより
も、アセンブリ言語により記述した方が実行速度の速い
プログラムの作成を行うことができ、冗長なコードのな
いプログラマの意図したとうりのオブジェクトファイル
を作成することができる。そのために、プログラムの全
体をC言語により記述して、実行速度がネックになるモ
ジュールのみをアセンブリ言語により記述し、総合的に
実行効率がよく、なお且つプログラマの意図したオブジ
ェクトに近いプログラムを作成することがよく行われて
いる。アセンブリ言語をメインにしたプログラムの記述
は少なくなりつつあるが、重要なモジュールについて
は、依然としてアセンブリ言語が用いられている。
【0004】一般に、C言語を用いてプログラムを作成
する場合には、マイクロコンピュータのハードウェアを
それほど意識してプログラムを書く必要はないが、アセ
ンブリ言語によりプログラムを作成する場合には、プロ
グラマとしては、マイクロコンピュータのアーキテクチ
ャをよく理解した上でプログラムを記述する必要があ
る。また、プログラミングにおいては、ハードウェアレ
ジスタの使用状況を調べて、現在どのレジスタが使用可
能であるか、或はまた変数の有効範囲を調べるなどのレ
ジスタ管理を行いながら記述しなければならないのが通
例である。しかも、従来のアセンブラの機能としては、
プログラマが書いたプログラムを、マイクロコンピュー
タのハードウェアに準じたオブジェクトを作成するだけ
の機能しか持っていないのが現状である。
【0005】以下、図面を参照して従来のアセンブラの
処理について説明する。図6は、従来のアセンブラの機
能構成を示すブロック図であり、当該アセンブラ202
は、ソースプログラム601およびオブジェクトファイ
ル606に対応して、ソースプログラム入力部603
と、構文解析部604と、オブジェクトファイル出力部
605とを備えて構成される。図6において、ソースプ
ログラム入力部603により、プログラマにより作成さ
れたソースプログラム601が、アセンブラ602内に
読込まれる。構文解析部604においては、ソースプロ
グラム入力部603により読込まれたソースプログラム
601が順次解析され、当該ソースプログラム601に
おける構文の間違いなどが調べられてオブジェクトコー
ドが作成される。このオブジェクトコードはオブジェク
トファイル出力部605に伝達され、オブジェクトファ
イル出力部605を介して、アセンブラ602の出力コ
ードとしてオブジェクトファイル606に出力されて格
納される。
【0006】次に、上記の従来のアセンブラの処理手順
について説明する。まず、プログラマによりソースプロ
グラムが作成される。プログラミング時には、プログラ
マにより、局所的な部分において変数にレジスタを割付
ける際にプログラム全体が検索され、どのレジスタが使
用可能であるかが調べられて、レジスタが割付けられ
る。その際に、レジスタを割付けた変数が、何処から何
処まで有効であるかなどの点も考慮される。レジスタ管
理およびレジスタの割付けミスなどを注意しながらソー
スプログラムが作成される。次いで、プログラマにより
完成されたソースプログラム601がアセンブラ602
に入力される。アセンブラ602においては、ソースプ
ログラム601は、ソースプログラム入力部603を介
して読込まれ、読込まれたソースプログラム601は、
構文解析部604において解析されて、ターゲットとし
ているマイクロコンピュータのハードウェアに準じたオ
ブジェクトコードが作成される。作成されたオブジェク
トコードは、オブジェクトファイル出力部605を介し
て出力され、オブジェクトファイル606に格納され
る。
【0007】一方、コンパイラにおいても、変数のレジ
スタ割付けが行われている。その方法としては、各変数
の生存区間の解析および変数同士の干渉関係などの解析
が行われ、前記変数をレジスタに割付けた場合の利益率
が計算されて、有効なレジスタ割付けが実行される。従
来、コンパイラなどで行われているレジスタ割付けの機
能構成図が図7に示される。図7に示されるように、レ
ジスタ割付け部702は、中間言語701およびレジス
タ割付け情報付き中間言語708に対応して、結合可能
性解析部703と、生存区間解析部704と、干渉解析
部705と、プロフィット指数計算部706と、実レジ
スタ割付け情報付加部707とを備えて構成される。
【0008】図7において、中間言語701は、レジス
タ割付け部702内の結合可能性解析部703に入力さ
れて順次解析され、各変数の結合が可能であるかどう
か、即ち異なる変数に対して同じレジスタを割付けるこ
とが出来るかどうかが解析される。次に生存区間解析部
704においては、結合可能性解析部703による解析
結果を受けて中間言語701が順次解析され、各変数の
生存区間が解析される。干渉解析部705においては、
生存区間解析部704における解析の結果を基に、各変
数の生存区間が重なる部分、即ち干渉している部分につ
いての解析が行われる。プロフィット指数計算部706
においては、各変数にレジスタを割付けた場合のプロフ
ィット(利益率)が計算され、この計算結果を受けて、
実レジスタ割付け情報付加部707においては、結合可
能性解析部703、生存区間解析部704、干渉解析部
705およびプロフィット指数計算部706において中
間言語701が解析された結果を基に、各変数に割付け
る実レジスタの情報が前記中間言語701に付加され
て、レジスタ割付け情報作き中間言語708として出力
される。
【0009】一方において、目的は異なるが、コンパイ
ラにおいて仮想レジスタという概念を用いたレジスタ割
付け方法として、論理レジスタから物理レジスタへの変
換および割当てを行う仮想レジスタ制御回路を用いて、
並列処理阻害要因を除去する手法が開示されている。そ
の内の特開昭61−90239号公報には、レジスタ割
付け処理において、変数だけの競合情報(同じレジスタ
を割付けられない変数を示す情報)を変数とレジスタの
競合情報に拡張して、実レジスタと1:1に対応する仮
想レジスタを用いて効率よくレジスタ割付けを行う手法
が開示されている。また、特開平2−236638号公
報には、コンパイラにおけるレジスタ割付け方式におい
て、ソースプログラムの中間表現中に実レジスタを抽象
化した無限個の仮想レジスタを割当てる処理と、前記仮
想レジスタを実レジスタに割付ける処理が開示されてい
る。
【0010】更に、特開平2−42531号公報には、
スタック領域の参照を高速化したコンピュータ用のコン
パイラのレジスタ割付け処理において、ソースプログラ
ムの中間表現中に仮想レジスタを割当てた後に、変数に
仮想レジスタを割当てて、当該変数をメモリに割当てる
場合とレジスタに割当てる場合のそれぞれのコストを計
算して、高速メモリとレジスタの有効利用を図るという
処理手法が開示されている。
【0011】
【発明が解決しようとする課題】上述した従来のレジス
タ割付け方法においては、処理機能として、アセンブラ
により構文解析を行い、マイクロコンピュータのアーキ
テクチャに準じたコードを生成してオブジェクトファイ
ルを出力するだけの機能しか持っていない。そのため
に、プログラマが、C言語ではなく、アセンブリ言語を
用いてプログラミングしなければならない場合には、現
在のレジスタの使用状況を調べ、どのレジスタが使用可
能であるか、または変数の有効範囲が何処まであるのか
などのレジスタ管理をしながらプログラムを記述するこ
とが必要になるとともに、更にマイクロコンピュータの
アーキテクチャをよく理解していること求められる。そ
のために、アセンブリ言語によるプログラミングには多
大の工数を要し、なお且つプログラムの記述にミスを生
じ易いという欠点がある。
【0012】また、前述の特開昭61−136131号
公報、特開昭61−90239号公報および特開平2−
236638号公報等に開示されている公知例において
は、コンパイラ内におけるレジスタ割付けを効率よく行
うことが可能とはなるが、アセンブリ言語によりソース
プログラムを記述する場合のレジスタ管理の工数および
記述ミスなどの問題に対する解決方法としての効果は期
待することができないという欠点がある。
【0013】
【課題を解決するための手段】アセンブリ言語により記
述されたアセンブリソースを入力し、当該アセンブリソ
ースの構文解析結果を基にマイクロコンピュータのアー
キテクチャに準じたコードを生成して、所定のオブジェ
クトファイルを出力するアセンブリ言語処理方法におい
て、所定のソースプログラムにハードウェアレジスタを
割付けて前記アセンブリソースを作成する際に、前記ソ
ースプログラムに記述されている仮想レジスタを、対応
するハードウェアレジスタに置換える手法を用いて、当
該ソースプログラムに対するハードウェアレジスタの割
付け処理を行うことを特徴としている。
【0014】なお、前記ソースプログラムに対するハー
ドウェアレジスタの割付け処理手順としては、前記ソー
スプログラムに記述されているデータのデータフロー解
析を行う第1の処理ステップと、前記第1の処理ステッ
プにおけるデータフロー解析の結果を参照して、前記ソ
ースプログラムに記述されている各仮想レジスタの生存
区間を調査する第2の処理ステップと、前記第2の処理
ステップにおける各仮想レジスタの生存区間の調査結果
を参照して、前記各仮想レジスタ間における相互干渉関
係を調査する第3の処理ステップと、前記第3の処理ス
テップにおける調査結果を参照し、前記ソースプログラ
ムに記述されている各仮想レジスタに、それぞれ対応す
るハードウェアレジスタを割付けて前記アセンブリソー
スを作成する第4の処理ステップとを有することを特徴
としもよい。
【0015】
【実施例】次に、本発明について図面を参照して説明す
る。
【0016】図1は本発明の第1の実施例の仮想レジス
タ割付け部を有するアセンブラの機能構成を示すブロッ
ク図である。図1に示されるように、本実施例のアセン
ブラ102は、ソースプログラム101およびオブジェ
クトファイル103に対応して、ソースプログラム入力
部105、データフロー解析部106、仮想レジスタ生
存区間解析部107、仮想レジスタ干渉区間解析部10
8、ハードウェアレジスタ割付け部109およびソース
プログラム出力部110を含む仮想レジスタ割付け部1
04と、ソースプログラム入力部111と、構文解析部
112と、オブジェクトファイル出力部113とを備え
て構成される。
【0017】図1において、ソースプログラム101
は、プログラマにより、アセンブリ言語を用い、仮想レ
ジスタとハードウェアレジスタとを使用して記述された
ソースプログラムである。このソースプログラム101
は、ソースプログラム入力部105により、仮想レジス
タ割付け部104に読込まれる。データフロー解析部1
06においては、ソースプログラム入力部105の出力
を受けて、当該ソースプログラムの処理の全てのパスに
ついての解析が行われる。その際に、ソースプログラム
中に記述されているハードウェアレジスタのレジスタ番
号と仮想レジスタのレジスタ番号などの情報が収集され
る。仮想レジスタ生存区間解析部107においては、デ
ータフロー解析部106より入力される情報を基にし
て、各仮想レジスタの生存区間についての解析が行われ
る。仮想レジスタ干渉区間解析部108においては、仮
想レジスタ生存区間解析部107による解析結果を受け
て、仮想レジスタの生存区間における干渉の有無が解析
される。バードウェアレジスタ割付け部109において
は、仮想レジスタに割当てるバードウェアレジスタが選
択され、ソースプログラム出力部110においては、ハ
ードウェアレジスタ割付け部109の情報を基に、ソー
スプログラムの仮想レジスタがハードウェアレジスタに
書換えられて、ハードウェアレジスタ割当て後ソースプ
ログラム114として出力される。
【0018】ソースプログラム入力部111には、仮想
レジスタ割付け部104から出力されるソースプログラ
ムが読込まれ、構文解析部112においては、ソースプ
ログラム入力部111において読込まれたソースプログ
ラムが順次解析されて、構文の間違いなどの有無が調べ
られ、オブジェクトコードが生成されて出力される。オ
ブジェクトファイル出力部113においては、オブジェ
クトコードの出力を受けて、当該オブジェクトコード
が、オブジェクトファイル103としてアセンブラ10
2から出力される。このオブジェクトファイル103
は、ソースプログラム101を解析した結果として得ら
れる。マイクロプロセッサのアーキテクチャに準じたコ
ードを出力したものである。
【0019】次に、図3、図4および図5に示されるソ
ースプログラムを例にして、当該割付け処理の手順につ
いて説明する。ただし、説明の都合上、ソースプログラ
ムの15行目からの説明を行うものとする。プログラマ
により、アセンブリ言語を用い、ハードウェアレジスタ
と仮想レジスタとを使用してソースプログラム101が
記述される。図3は、仮想アドレス割付け前のソースプ
ログラム101の記述例であり、r10はハードウェアレ
ジスタを示し、tmp1、tmp2およびtmp3等はそれぞれ仮想
レジスタを示している。割付け処理に際しては、プログ
ラマとして、自分が或る変数に特定のレジスタを割付け
たいと思う時には、ハードウェアレジスタを記述すれば
よく、或はまた、全ての仮想レジスタのみの記述として
もよい。これにより、従来のように詳細なレジスタ管理
を行う必要がないばかりでなく、記述ミスという人為的
なミスも削減される。作成されたソースプログラムは、
ソースプログラム入力部105によって、アセンブラ1
02内の仮想レジスタ割付け部104に読込まれる。
【0020】最初にデータフロー解析部106におい
て、プログラムの処理の全てのパスについて解析が行わ
れる。その際に、ソースプログラムに記述されているハ
ードウェアレジスタと仮想レジスタに関する情報が解析
されて、次に仮想レジスタ生存区間解析部107に当該
解析結果による情報が送られる。仮想レジスタ生存区間
解析部107においては、データフロー解析部106よ
り入力される情報を基に、各仮想レジスタの生存区間に
ついての解析が行われ、各仮想レジスタの生存区間のデ
ータが作成される。図4には、仮想レジスタ生存区間解
析部107の解析結果による、仮想レジスタ番号40
1、出現ライン番号(定義点)402および出現ライン
番号(参照点)を含む各仮想レジスタの生存区間のデー
タ例が示されている。図4において、この例においては
仮想レジスタtmp1、tmp2およびtmp3の3つの仮想レジス
タが記述されている。この図4を参照することにより、
各仮想レジスタの生存区間が理解される。本例題の場合
には、仮想レジスタtmp1は15行目から17行目までが
生存区間であり、仮想レジスタtmp2は16行目から20
行目までが生存区間、仮想レジスタtmp3は18行目から
21行目までが生存区間となる。その後、仮想レジスタ
生存区間解析部107において作成されたデータは、次
の仮想レジスタ干渉区間解析部108に送られる。
【0021】仮想レジスタ干渉区間解析部108におい
ては、仮想レジスタ生存区間解析部107より入力され
るデータを基に、各仮想レジスタの生存区間において干
渉している区間があるか否かが解析される。異なる仮想
レジスタが、或る区間において干渉している場合、また
は生存区間が相互に重なる場合には、それぞれの仮想レ
ジスタを、同じハードウェアレジスタに割付けることは
不可能である。しかし生存区間が重ならない仮想レジス
タに対しては、同じハードウェアレジスタを割付けるこ
とが可能である。仮想レジスタ干渉区間解析部108の
干渉区間の解析によって、必要なハードウェアレジスタ
の数が明確になる。このソースプログラム例の場合にお
いては、図4を参照することにより、仮想レジスタtmp1
とtmp2が干渉状態にあり、仮想レジスタtmp1とtmp3は干
渉状態にはなく、また仮想レジスタtmp2とtmp3が干渉状
態にあることが分かる。即ち、tmp1とtmp3は、共に同じ
レジスタを割付けることが可能であり、tmp1とtmp2、お
よびtmp2とtmp3は、それぞれ共に同じレジスタを割付け
ることが出来ないことが分かる。その後ハードウェアレ
ジスタの必要数および干渉関係を含む情報が、次のハー
ドウェアレジスタ割付け部109に送られる。
【0022】ハードウェアレジスタ割付け部109にお
いては、干渉区間解析部108から入力される情報を基
に、各仮想レジスタに対応するハードウェアレジスタが
選択される。ハードウェアレジス割付け部109におい
て選択されたハードウェアレジスタの情報は、次のソー
スプログラム出力部110に入力される。ソースプログ
ラム出力部110においては、選択されたハードウェア
レジスタの情報を基に、ソースプログラム中に記述され
ている仮想レジスタが、ハードウェアレジスタに書換え
られて、ハードウェアレジスタ割当て後ソースプログラ
ム114として、仮想レジスタ割付け部104より出力
される。このソースプログラム114は、アセンブラ1
02のソースプログラム入力部111に送られる。この
書換えられたソースプログラム114の例が、図3およ
び図4に対応するハードウェア割付け後のソースプログ
ラム例として、図5に示されている。
【0023】ソースプログラム入力部111において読
込まれるソースプログラムは、構文解析部112に入力
され、構文解析部112において当該ソースプログラム
における構文の間違いが解析されて、オブジェクトコー
ドが生成されて出力される。生成されたオブジェクトコ
ードは、オブジェクトファイル出力部113を介して、
オブジェクトファイル103としてアセンブラ102か
ら出力される。
【0024】次に、本発明の第2の実施例について説明
する。上記の第1の実施例においては、本発明をプリプ
ロセッサとして実現しているために、アセンブラ内にお
ける全体の処理速度が遅くなる。これを改善するため
に、本実施例においては、構文解析部に仮想レジスタ割
付けの機能を付加して、前記第1の実施例よりも実行速
度の速い処理を行うことができるようにしている。
【0025】図2は第2の実施例の仮想レジスタ割付け
部を持ったアセンブラの機能構成を示すブロック図であ
る。図2に示されるように、本実施例のアセンブラ20
2は、ソースプログラム201およびオブジェクトファ
イル203に対応して、ソースプログラム入力部204
と、データフロー解析部206、仮想レジスタ生存区間
解析部207、仮想レジスタ干渉区間解析部208、ハ
ードウェアレジスタ割付け部209およびオブジェクト
コード修正部210を含む仮想レジスタ割付け機能付き
構文解析部205と、オブジェクトファイル出力部21
1とを備えて構成される。
【0026】図2において、アセンブラ202に含まれ
るソースプログラム入力部204において、ソースプロ
グラム201がアセンブラ202内に読込まれる。ソー
スプログラム入力部204において読込まれるソースプ
ログラムは、仮想レジスタ割付け機能付き構文解析部2
05内のデータフロー構文解析部206に入力される。
データフロー構文解析部206においては、ソースプロ
グラム201の処理の全てのパスについて解析されると
同時に構文解析が行われ、当該構文の間違いなどがチェ
ックされて、ハードウェアレジスタ割付け前オブジェク
ト212が生成される。その際に、ハードウェアレジス
タと仮想レジスタに関する情報が、仮想レジスタ生存区
間解析部207に送られる。仮想レジスタ生存区間解析
部207においては、データフロー構文解析部206か
らの情報を基に、仮想レジスタの生存区間が解析され
る。次に、仮想レジスタ干渉区間解析部208において
は、仮想レジスタ生存区間解析部207より入力される
情報を基に、各仮想レジスタの干渉区間についての解析
が行われて、仮想レジスタの干渉区間に関する情報が出
力される。ハードウェアレジスタ選択部209において
は、仮想レジスタ干渉区間解析部208において集めら
れた前記情報を基にして、仮想レジスタに割付けるハー
ドウェアレジスタの情報が作成される。オブジェクトコ
ード修正部210においては、ハードウェアレジスタ選
択部209からの前記仮想レジスタに割付けるハードウ
ェアレジスタの情報を基にして、ハードウェアレジスタ
割付け前オブッジェクトコード212内の仮想レジスタ
がハードウェアレジスタに書換えられ、ハードウェアレ
ジスタ割付け後オブジェクトコード213が生成されて
出力される。オブジェクトファイル出力部211におい
ては、オブジェクトコード修正部210において生成さ
れたオブジェクトコード213が、オブジェクトファイ
ル203としてアセンブラ202より出力される。
【0027】次に、第1の実施例の場合と同様に、図3
のソースプログラム(r10はハードウェアレジスタを示
し、tmp1、tmp2およびtmp3等は、それぞれ仮想レジスタ
を示している)を例にして割付け処理の流れを説明す
る。まず、プログラマにより、ソースプログラム201
が、ハードウェアレジスタと仮想レジスタとを使用して
記述される。その際には、細かいレジスタ管理を行わな
くても記述が簡単に行われる。作成されたプログラム2
01は、アセンブラ202内のソースプログラム入力部
204により読込まれる。ソースプログラム入力部20
4において読込まれたソースプログラム201は、仮想
レジスタ割付け機能付き構文解析部205に送られる。
仮想レジスタ割付け機能付き構文解析部205において
は、まずデータフロー構文解析部206において、ソー
スプログラム201の処理の全てのパスについての解析
と構文解析が同時に行われ、オブジェクトコードが生成
される。その際ハードウェアレジスタに関する情報、お
よび仮想レジスタに関する情報が解析される。このハー
ドウェアレジスタに関する情報と、どのレジスタが使わ
れているかの解析と仮想レジスタに関する情報は、仮想
レジスタがどこに記述されたかを示す情報である。
【0028】仮想レジスタ生存区間解析部207におい
ては、データフロー構文解析部206より送られてくる
情報を基に、各仮想レジスタの生存区間についての解析
が行われ、仮想レジスタの生存区間のデータが作成され
る。この場合におけるデータは、前述の第1の実施例に
おいて用いられている、図4に示されるデータと同様
の、各仮想レジスタの生存区間を示すデータ例であり、
次の仮想レジスタ干渉区間解析部208に送られる。仮
想レジスタ干渉区間解析部208においては、仮想レジ
スタ生存区間解析部207より送られてきた各変数の生
存区間のデータ(図4参照)を基に、生存区間が干渉し
合う仮想レジスタが存在するか否かが解析される。この
解析結果により、必要なハードウェアレジスタの数が分
かる。図4の場合には、第1の実施例の場合と同様に、
仮想レジスタtmp1とtmp2が干渉状態にあり、仮想レジス
タtmp1とtmp3は干渉状態にはなく、仮想レジスタtmp2と
tmp3が干渉状態にあることが分かる。即ち、tmp1とtmp3
は同じレジスタを割付けることが可能であり、tmp1とtm
p2、およびtmp2とtmp3は、共に同じレジスタを割付ける
ことが出来ないことが分かる。従って、この場合には、
ハードウェアレジスタが2個必要であることが分かる。
次に、ハードウェアレジスタ割付け部209において、
仮想レジスタ生存区間解析部207のデータと仮想レジ
スタ干渉区間解析部208のデータを基に、仮想レジス
タに対してどのハードウェアレジスタを割付けるかが選
択される。
【0029】次いで、オブジェクトコード修正部210
においては、ハードウェアレジスタ割付け部209の割
付け情報を基に、ハードウェアレジスタ割付け前オブジ
ェクトコード212の仮想レジスタがハードウェアレジ
スタに書換えられて、ハードウェアオブジェクトコード
713が生成され、オブジェクトファイル出力部211
に送られる。変更されたオブジェクトコード213は、
オブジェクトファイル出力部211を介して、オブジェ
クトファイル203としてアセンブラ202から出力さ
れる。
【0030】
【発明の効果】以上説明したように、本発明は、アセン
ブラにおいて、仮想レジスタの解析手段を持たせること
により、ユーザによるアセンブリ言語によるプログラム
記述時において前記仮想レジスタの記述が容認され、従
来のように細部にわたるレジスタ管理を行うことなくプ
ログラミングを行うことができるようになり、これによ
り、プログラミング工数の削減ならびにレジスタ割付け
時間の削減が可能になるという効果が得られるという効
果がある。
【0031】また、上述にように、仮想レジスタの解析
手段を持たせることにより、プログラミングのデバッグ
時において、ユーザにより記述された仮想レジスタシン
ボルを用いてプログラムのデバッグを行うことができる
ために、デバッグがし易くなり、プログラムのデバッグ
時の工数の削減が可能になるという効果がある。
【図面の簡単な説明】
【図1】本発明の第1の実施例のアセンブラの機能構成
を示すブロック図である。
【図2】本発明の第2の実施例のアセンブラの機能構成
を示すブロック図である。
【図3】ソースプログラム(ハードウェアレジスタ割付
け前)例を示す図である。
【図4】ソースプログラム例の仮想レジスタ使用状況デ
ータを示す図である。
【図5】ソースプログラム(ハードウェアレジスタ割付
け後)例を示す図である。
【図6】従来例のアセンブラの機能構成を示すブロック
図である。
【図7】従来例のレジスタ割付け機能構成を示す図であ
る。
【符号の説明】 101、201、601 ソースプログラム 102、202、602 アセンブラ 103、203、606 オブジェクトファイル 104 仮想レジスタ割付け部 105、204、603 ソースプログラム入力部 106 データフロー解析部 107、207 仮想レジスタ生存区間解析部 108、208 仮想レジスタ干渉区間解析部 109、209 ハードウェアレジスタ割付け部 110 ソースプログラム出力部 111 ソースプログラム入力部 112、604 構文解析部 113、211、605 オブジェクトファイル出力
部 114、213 ハードウェアレジスタ割付け後ソー
スプログラム 205 仮想レジスタ割付け機能付き構文解析部 206 データフロー構文解析部 210 オブジェクトコード修正部 212 ハードウェアレジスタ割付け前ソースプログ
ラム 401 仮想レジスタ番号 402 出現ライン番号(定義点) 403 出現ライン番号(参照点) 701 中間言語 702 レジスタ割付け部 703 結合可能性解析部 704 生存区間解析部 705 干渉解析部 706 プロフィット指数計算部 707 実レジスタ割付け情報付加部 708 レジスタ割付け情報付き中間言語

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 アセンブリ言語により記述されたアセン
    ブリソースを入力し、当該アセンブリソースの構文解析
    結果を基にマイクロコンピュータのアーキテクチャに準
    じたコードを生成して、所定のオブジェクトファイルを
    出力するアセンブリ言語処理方法において、 所定のソースプログラムにハードウェアレジスタを割付
    けて前記アセンブリソースを作成する際に、前記ソース
    プログラムに記述されている仮想レジスタを、対応する
    ハードウェアレジスタに置換える手法を用いて、当該ソ
    ースプログラムに対するハードウェアレジスタの割付け
    処理を行うことを特徴とするレジスタ割付け方法。
  2. 【請求項2】 前記ソースプログラムに対するハードウ
    ェアレジスタの割付け処理手順として、 前記ソースプログラムに記述されているデータのデータ
    フロー解析を行う第1の処理ステップと、 前記第1の処理ステップにおけるデータフロー解析の結
    果を参照して、前記ソースプログラムに記述されている
    各仮想レジスタの生存区間を調査する第2の処理ステッ
    プと、 前記第2の処理ステップにおける各仮想レジスタの生存
    区間の調査結果を参照して、前記各仮想レジスタ間にお
    ける相互干渉関係を調査する第3の処理ステップと、 前記第3の処理ステップにおける調査結果を参照し、前
    記ソースプログラムに記述されている各仮想レジスタ
    に、それぞれ対応するハードウェアレジスタを割付けて
    前記アセンブリソースを作成する第4の処理ステップ
    と、 を有することを特徴とする請求項1記載のレジスタ割付
    け方法。
JP4018895A 1995-02-28 1995-02-28 レジスタ割付け方法 Pending JPH08234997A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4018895A JPH08234997A (ja) 1995-02-28 1995-02-28 レジスタ割付け方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4018895A JPH08234997A (ja) 1995-02-28 1995-02-28 レジスタ割付け方法

Publications (1)

Publication Number Publication Date
JPH08234997A true JPH08234997A (ja) 1996-09-13

Family

ID=12573811

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4018895A Pending JPH08234997A (ja) 1995-02-28 1995-02-28 レジスタ割付け方法

Country Status (1)

Country Link
JP (1) JPH08234997A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000284968A (ja) * 1999-03-31 2000-10-13 Toshiba Corp コンパイル方法及びコンパイラ装置
JP2001290652A (ja) * 2000-04-04 2001-10-19 Matsushita Electric Ind Co Ltd プログラム変換装置、プログラム変換方法及び記録媒体
JP2011181114A (ja) * 2011-06-23 2011-09-15 Panasonic Corp プログラム変換装置、プログラム変換方法及び記録媒体
WO2012029111A1 (ja) 2010-08-30 2012-03-08 富士通株式会社 マルチコアプロセッサシステム、同期制御システム、同期制御装置、情報生成方法、および情報生成プログラム
CN112925566A (zh) * 2019-12-06 2021-06-08 中科寒武纪科技股份有限公司 建立虚拟寄存器生存区间的方法和装置及编译方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0695862A (ja) * 1992-09-14 1994-04-08 Hitachi Ltd 命令列最適化支援装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0695862A (ja) * 1992-09-14 1994-04-08 Hitachi Ltd 命令列最適化支援装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000284968A (ja) * 1999-03-31 2000-10-13 Toshiba Corp コンパイル方法及びコンパイラ装置
JP2001290652A (ja) * 2000-04-04 2001-10-19 Matsushita Electric Ind Co Ltd プログラム変換装置、プログラム変換方法及び記録媒体
WO2012029111A1 (ja) 2010-08-30 2012-03-08 富士通株式会社 マルチコアプロセッサシステム、同期制御システム、同期制御装置、情報生成方法、および情報生成プログラム
JP5488697B2 (ja) * 2010-08-30 2014-05-14 富士通株式会社 マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム
US9367311B2 (en) 2010-08-30 2016-06-14 Fujitsu Limited Multi-core processor system, synchronization control system, synchronization control apparatus, information generating method, and computer product
JP2011181114A (ja) * 2011-06-23 2011-09-15 Panasonic Corp プログラム変換装置、プログラム変換方法及び記録媒体
CN112925566A (zh) * 2019-12-06 2021-06-08 中科寒武纪科技股份有限公司 建立虚拟寄存器生存区间的方法和装置及编译方法和装置

Similar Documents

Publication Publication Date Title
US7266809B2 (en) Software debugger and software development support system for microcomputer operable to execute conditional execution instruction
US5815720A (en) Use of dynamic translation to collect and exploit run-time information in an optimizing compilation system
JP4709933B2 (ja) プログラムコード変換方法
US7237234B2 (en) Method for selective solicitation of user assistance in the performance tuning process
JP3612294B2 (ja) デバッグ方法およびデバッグ装置
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
US6141791A (en) Debug aid device, program compiler device, storage medium storing computer-readable debugger program, and storage medium storing program compiler program
US20070157132A1 (en) Process of automatically translating a high level programming language into a hardware description language
EP1788485A1 (en) Source program analysis device and method
Lie et al. A simple method for extracting models for protocol code
US6360360B1 (en) Object-oriented compiler mechanism for automatically selecting among multiple implementations of objects
Wang et al. Accurate source-level simulation of embedded software with respect to compiler optimizations
US6496924B2 (en) Data processing apparatus including a plurality of pipeline processing mechanisms in which memory access instructions are carried out in a memory access pipeline
JPH08234997A (ja) レジスタ割付け方法
EP0552895B1 (en) Method for improving performance in an automated test system
JPH04311227A (ja) マイクロコンピュータの言語処理装置
JP3327674B2 (ja) プログラム翻訳装置及び方法
EP1369777A2 (en) Software development system, simulator, and recording medium
US6029003A (en) Method of assigning external variables to memories when compiling source program
JPH11345127A (ja) コンパイラ
JPH07105013A (ja) レジスタ割り付け方式
JP2004118518A (ja) シミュレータ、そのシミュレータをコンピュータ読み取り可能に記録した記録媒体
JP2944500B2 (ja) コンパイル装置および方法
JPH08501167A (ja) 並列コンピュータシステムにおけるアプリケーションプログラムの処理方法
JP3101458B2 (ja) プログラム異常検出装置

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19990223