JPH04320535A - プログラム生成装置 - Google Patents

プログラム生成装置

Info

Publication number
JPH04320535A
JPH04320535A JP11693991A JP11693991A JPH04320535A JP H04320535 A JPH04320535 A JP H04320535A JP 11693991 A JP11693991 A JP 11693991A JP 11693991 A JP11693991 A JP 11693991A JP H04320535 A JPH04320535 A JP H04320535A
Authority
JP
Japan
Prior art keywords
register
compiler
program
section
asm
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
JP11693991A
Other languages
English (en)
Inventor
Junya Kotani
小谷 純也
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 JP11693991A priority Critical patent/JPH04320535A/ja
Publication of JPH04320535A publication Critical patent/JPH04320535A/ja
Pending legal-status Critical Current

Links

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラム生成装置に
利用され、特に、アセンブラソースプログラムを含むC
ソースプログラムを入力することを許可し、オブジェク
トプログラムを生成するCコンパイラに関する。
【0002】
【従来の技術】図8は従来のプログラム生成装置の一例
の要部を示すブロック構成図である。
【0003】本従来例は、アセンブラソースプログラム
を含むCソースプログラム10を入力してオブジェクト
プログラム50を生成するCコンパイラ20を備えてい
る。
【0004】そして、Cコンパイラ20は、例えば、マ
イクロコンピュータ用では、入力部21と、字句解析部
22と、構文解析部23と、レジスタ管理部40を含む
オブジェクト出力部24とを含んでいる。
【0005】さらに、レジスタ管理部40は、図9に示
すように、目的とするコンピュータ内のレジスタの使用
状況を管理するレジスタ管理テーブル30を用いてレジ
スタの管理を行う、レジスタ選択部41およびレジスタ
割り当て処理部42を含んでいる。
【0006】次に、このレジスタ管理部40の処理につ
いて説明する。レジスタ選択部41には、オブジェクト
生成に必要となるレジスタが要求される。そして、レジ
スタ管理テーブル30の情報から適切なレジスタを選択
する。レジスタ管理テーブル30は、ある処理のためC
コンパイラ20が使用しているレジスタとそうでないレ
ジスタの状況を管理している。次に、レジスタ選択部4
1で選択されたレジスタが、レジスタ割り当て処理部4
2により割り当てられる。ここで、Cコンパイラ20は
、レジスタ管理テーブル30からレジスタの使用状況を
示す情報を取り出して出力する手段を持っていない。
【0007】
【発明が解決しようとする課題】前述したように、従来
のプログラム生成装置においては、レジスタの使用状況
を出力する手段を持っていない。このため、マイクロコ
ンピュータのソフトウェア開発において、Cソースプロ
グラム中に、#asm文につづくアセンブラソースを埋
め込む場合、Cコンパイラが使用するレジスタの状況を
示す情報を出力できない。よって、プログラマは、アセ
ンブラソースでCコンパイラが使用するレジスタの値を
破壊しないように注意しなければならない欠点があった
【0008】本発明の目的は、前記の欠点を除去するこ
とにより、Cソースプログラム中にアセンブラソースを
埋め込む場合に、Cコンパイラが使用するレジスタの使
用状況情報を出力できるCコンパイラを有するプログラ
ム生成装置を提供することにある。
【0009】
【課題を解決するための手段】本発明は、目的とするコ
ンピュータ内のレジスタの使用を管理するレジスタ管理
部を含み、アセンブラソースプログラムを含むCソース
プログラムを入力しオブジェクトプログラムを生成する
Cコンパイラを備えたプログラム生成装置において、前
記Cコンパイラは、前記Cソースプログラムに含まれる
所定の制御文の有無を判定する制御文判定部と、この判
定結果が有の場合前記レジスタの使用状況情報を出力す
るレジスタ使用状況出力部とを含むことを特徴とする。
【0010】
【作用】Cコンパイラは、Cソースプログラムに含まれ
る例えば、制御文としてasm文またはreg文の有無
を制御文判定部において判定し、判定の結果が有の場合
に、レジスタの使用状況情報をレジスタ使用状況出力部
により出力する。
【0011】従って、プログラマはこのレジスタの使用
状況情報からCコンパイラで使用しているレジスタの値
を、アセンブラソース中で破壊してしまっているといっ
た不具合を容易に見つけることができるとともに、Cコ
ンパイラが使用しているレジスタを効率的に利用するこ
とができ、プログラムのオブジェクト効率を向上させる
ことが可能となる。
【0012】
【実施例】以下、本発明の実施例について図面を参照し
て説明する。
【0013】図1は本発明の第一実施例におけるCコン
パイラのレジスタ管理部を示すブロック構成図である。 なお、レジスタ管理部以外の構成は図8の従来例と同様
である。
【0014】本第一実施例のレジスタ管理部40aは、
レジスタ選択部41およびレジスタ割り当て処理部42
のほかに、本発明の特徴とするところの、Cソースプロ
グラム10に含まれる所定の制御文としてのasm文の
有無を判定するasm文判定部43と、この判定結果が
有の場合、レジスタ管理テーブル30からレジスタ使用
状況情報を出力するレジスタ使用状況出力部44とを含
んでいる。
【0015】次に、図2に示す流れ図を参照して本第一
実施例のレジスタ管理部40aの動作について説明する
【0016】初めに、asm文判定部43により、入力
されたCソースプログラム中にasm文が有るか無いか
を判定する(ステップS1)。判定の結果が無の場合に
はステップS3に飛び、判定の結果が有の場合には、レ
ジスタ使用状況出力部44により、レジスタ管理テーブ
ル30からレジスタ使用状況情報を取り出して出力する
(ステップS2)。そして、これ以下の動作は図9の従
来例と同様に、レジスタ選択部41によりレジスタを選
択して(ステップS3)。レジスタ割り当て処理部42
により選択されたレジスタの割り付けを行う(ステップ
S4)。
【0017】以下、具体的な例により詳細に説明する。
【0018】図3は、本実施例で生成されたオブジェク
トプログラムを使用するコンピュータとしてマイクロコ
ンピュータ60の要部を示すブロック構成図である。こ
のマイクロコンピュータ60は、6本の16ビットのレ
ジスタ61を備えており、それらのレジスタ61の名前
は、ax、bc、de、hl、vpおよびupである。
【0019】図4は入力されるCソースプログラム10
aを示す説明図であり、図5は出力されるオブジェクト
プログラム50aの説明図である。
【0020】図4の1行目は変数定義命令、2行目およ
び8行目は関数定義命令であり、オブジェクトプログラ
ム50aにはあらわれない。4行目および7行目はアセ
ンブラソースの始まりと終わりをCコンパイラに認知さ
せる命令であり、これも同様、オブジェクトプログラム
50aにあらわれない。
【0021】レジスタ管理部40aは、まず、asm文
判定部43により、処理の対象となる命令が#asmで
あるかどうかを判定する。図4の3行目は、#asm命
令ではないので、レジスタ選択部41に処理は移る。こ
こからの処理は、従来の技術で説明した図9の処理と同
じである。レジスタ選択部41に、オブジェクト生成に
必要となるレジスタ61が要求される。そして、レジス
タ管理テーブル30の情報から適切なレジスタ61を選
択する。次に、レジスタ選択部41で選択されたレジス
タ61が、レジスタ割り当て処理部42により割り当て
られる。この結果、図5に示すように、「a=b+c」
では、変数cの値をレジスタbcに、変数bの値をレジ
スタaxに割り当て、「b+c」の結果がレジスタax
に割り当てられる。
【0022】図4の4行目は、asm文であるので、a
sm文判定部43により、asm文であると判断される
。よって、処理は、レジスタ使用状況出力部44に移り
、レジスタ61の使用状況情報を出力する。出力内容を
表1に示す。表1では、変数aの値はaxレジスタに、
変数cの値がbcに割り当てられ、他のレジスタ61に
ついては、Cコンパイラ20は使用していないことがわ
かる。
【0023】
【表1】 図6は本発明の第二実施例におけるCコンパイラのレジ
スタ管理部を示すブロック構成図である。本第二実施例
のレジスタ管理部40bは、図1に示した第一実施例の
asm文判定部43の代わりに、本発明の特徴とすると
ころの、reg文判定部45を設けたもので、他の構成
は第一実施例と同様である。
【0024】次に、本第二実施例の動作について説明す
る。図7はそのCソースプログラム10bを示す説明図
である。
【0025】本第二実施例では、図7で示されるように
、Cソースプログラム10b中に、#reg命令を記述
することにより、#reg命令までオブジェクトプログ
ラム出力の処理が終了した時点での、Cコンパイラが使
用するレジスタの状況についての情報を出力させること
ができる。処理の内容は、第一実施例とほぼ同じである
。異なる点は、図7ではアセンブラソースを埋め込むこ
とをCコンパイラに認知させる#asm文ではなく、C
コンパイラが使用するレジスタの状況についての情報を
出力させるための専用命令#regを使用していること
である。reg判定部45はこの#reg命令の有無を
判定し、判定の結果が有の場合、アセンブラソースを埋
め込んでいない行での、Cコンパイラが使用しているレ
ジスタ状況についての情報を出力させることができる。
【0026】
【発明の効果】以上説明したように、本発明は、C言語
によるソフトウェア開発において、Cソースプログラム
中に、アセンブラソースを埋め込む場合、本発明のCコ
ンパイラを使用することにより、アセンブラソースが埋
め込まれている箇所までオブジェクトプログラムの処理
を終了させた時点での、Cコンパイラが使用しているレ
ジスタ状況についての情報を出力させることができる効
果がある。
【0027】これにより、プログラマは、この情報から
、Cコンパイラで使用しているレジスタの値を、アセン
ブラソース中で破壊してしまっているといったような不
具合を容易に見つけることができるとともに、この指定
された行にアセンブラソースを埋め込むときに、Cコン
パイラが使用しているレジスタを効率的に利用すること
ができ、プログラムのオブジェクト効率を向上させるこ
とができ、その効果は大である。
【図面の簡単な説明】
【図1】本発明の第一実施例におけるCコンパイラのレ
ジスタ管理部を示すブロック構成図。
【図2】その動作を示す流れ図。
【図3】本発明の対象とするマイクロコンピュータの要
部を示すブロック構成図。
【図4】本発明の第一実施例におけるCソースプログラ
ムを示す説明図。
【図5】本発明の第一実施例におけるオブジェクトプロ
グラムを示す説明図。
【図6】本発明の第二実施例におけるCコンパイラのレ
ジスタ管理部を示すブロック構成図。
【図7】本発明の第二実施例におけるCソースプログラ
ムを示す説明図。
【図8】従来のプログラム生成装置の一例の要部を示す
ブロック構成図。
【図9】そのCコンパイラのレジスタ管理部を示すブロ
ック構成図。
【符号の説明】
10、10a、10b  Cソースプログラム20  
Cコンパイラ 21  入力部 22  字句解析部 23  構文解析部 24  オブジェクト出力部 30  レジスタ管理テーブル 40、40a、40b  レジスタ管理部41  レジ
スタ選択部 42  レジスタ割り当て処理部 43  asm文判定部 44  レジスタ使用状況出力部 45  reg文判定部 50、50a  オブジェクトプログラム60  マイ
クロコンピュータ 61  レジスタ S1〜S4  ステップ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  目的とするコンピュータ内のレジスタ
    の使用を管理するレジスタ管理部を含み、アセンブラソ
    ースプログラムを含むCソースプログラムを入力しオブ
    ジェクトプログラムを生成するCコンパイラを備えたプ
    ログラム生成装置において、前記Cコンパイラは、前記
    Cソースプログラムに含まれる所定の制御文の有無を判
    定する制御文判定部と、この判定結果が有の場合前記レ
    ジスタの使用状況情報を出力するレジスタ使用状況出力
    部とを含むことを特徴とするプログラム生成装置。
JP11693991A 1991-04-19 1991-04-19 プログラム生成装置 Pending JPH04320535A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11693991A JPH04320535A (ja) 1991-04-19 1991-04-19 プログラム生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11693991A JPH04320535A (ja) 1991-04-19 1991-04-19 プログラム生成装置

Publications (1)

Publication Number Publication Date
JPH04320535A true JPH04320535A (ja) 1992-11-11

Family

ID=14699455

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11693991A Pending JPH04320535A (ja) 1991-04-19 1991-04-19 プログラム生成装置

Country Status (1)

Country Link
JP (1) JPH04320535A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191857A (ja) * 1993-12-27 1995-07-28 Nec Corp 言語処理システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191857A (ja) * 1993-12-27 1995-07-28 Nec Corp 言語処理システム

Similar Documents

Publication Publication Date Title
US7243333B2 (en) Method and apparatus for creating and executing integrated executables in a heterogeneous architecture
DK0938703T3 (da) Accelerator for tidstro programsprog
JP4026940B2 (ja) プログラム変換装置
US6526565B1 (en) Packaging algorithm for providing object oriented applications having reduced footprints
JPH04320535A (ja) プログラム生成装置
WO2017056427A1 (ja) プログラム書換装置、方法および記憶媒体
JPS61180344A (ja) 高級言語のステツプ実行システム
JPH04299426A (ja) 関数のアーギュメント/パラメータ引渡し方式
JPH03235135A (ja) プログラムの自動検査方式
JPH02205930A (ja) インタフェースチェック処理方法
JP2003076547A (ja) 制御ソフトウェア自動生成システムおよび方法
JPS63163543A (ja) 情報処理装置
JPH0373026A (ja) コンパイル方式
JP2655608B2 (ja) プログラムソース複写処理方式
JPH06324882A (ja) コンパイラ装置
JPH04316134A (ja) 割込処理の言語処理方式
JPH0358232A (ja) プリプロセッサ呼び出し方式
JPH06242942A (ja) ソースコードレベルデバッグ装置
JPH0381827A (ja) リエントラントプログラム方式
JPH02130637A (ja) ソースコード翻訳方式
JPH01180637A (ja) 命令部予測方式
JPH03244032A (ja) ワード当りのビット変換方式
JPH02214946A (ja) デバッグ方式
JPS6074023A (ja) 変数チエツク方式
JPH0239242A (ja) 電子計算機システムの一時作業領域割付方式