(57)【要約】【目的】 　アセンブル・プログラムを複数のブロックに分割し、各ブロック毎にモジュール化したプログラムを読出すことによって、プログラムの自動生成を可能とする。【構成】 　プログラム記憶手段５には、予め作成されてモジュール化されたプログラムが記憶される。プログラム配置手段２は、仕様書４によって作成プログラム１０を生成すべきことが指示されると、構成データ入力手段３から入力される構成データに従って、プログラム記憶手段５からモジュール化されたプログラムを取出す。取出されたプログラムはＲＡＭ領域６、マップ領域７、共通部品領域８およびプログラム本体領域９に分けてそれぞれまとめられ、作成プログラム１０が生成される。【選択図】　　図１
2004086924.tif 000002
【特許請求の範囲】
【請求項１】
　作成すべきアセンブル・プログラムを、複数のブロックに分割して、各ブロック毎に予め作成されているモジュールプログラムを配置するアセンブル・プログラム自動配置装置において、
　作成すべきアセンブル・プログラムを構成する各モジュールプログラムが記述されているデータを、各ブロック毎に配列して入力する構成データ入力手段と、
　モジュールプログラムが予め作成され、メモリ領域を割付けて生成するための属性が付加されて記憶されるプログラム記憶手段と、
　構成データ入力手段への入力に応答して、プログラム記憶手段からモジュールプログラムをブロックの配列順に読出し、付加された属性に従ってメモリ領域に割付けて配置する配置手段とを含むことを特徴とするアセンブル・プログラム自動配置装置。
【請求項２】
　前記属性には、ＲＡＭとしてメモリ領域を確保すべきことが含まれることを特徴とする請求項１記載のアセンブル・プログラム自動配置装置。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、複数のブロックに分割してプログラムを作成し、モジュール化したプログラムを組合わせてアセンブル・プログラムを各ブロックに自動的に配置してアセンブル・プログラムを作成するアセンブル・プログラム自動配置装置に関する。
【背景技術】
【０００２】
　技術から、アセンブル・プログラムの作成においては、モジュール化が行われている。
アセンブル・プログラムは、コンピュータの機械語に対応し、一般にかなり長くなる。プログラムを複数のブロックに分割して、適度な長さのモジュール毎に動作を確認した後で、各モジュールを組合わせるようにすれば、プログラムの開発効率が良くなり、動作の信頼性も向上する。
【０００３】
　従来からのモジュール化プログラムは、サブルーチンやマクロなどの形で予めライブラリに登録しておき、メインルーチンから読出す形式が多い。
【非特許文献１】田中敏文他、リレーショナルデータベースを用いたプログラム自動合成の実現、ＯＭＲＯＮ　ＴＥＣＨＮＩＣＳ、Ｖｏｌ．３２、Ｎｏ．２（通巻１０２号）、１９９２年、ｐ．１９〜２２（特許庁ＣＳＤＢ文書番号：企業技報１９９９−０００９２−００４）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
　従来からのモジュール化プログラムは、アセンブラやリンカなどと呼ばれるソフトウエアが、機械語のプログラムを生成する際にモジュールを組合わせる。アセンブラなどの処理系への指示は、ソースプログラムの文中にアセンブラなどの文法に従って記述する必要がある。
【０００５】
　特定の分野に使用されるアセンブル・プログラム、たとえば自動車のエンジン制御のためのプログラムは、機種毎にデータなどが異なるけれども、プログラムの構成自体はほとんど共通である。このため機種毎に異なるモジュールについては、複数のモジュールを用意しておき、全体のアセンブル・プログラムを作成する際に必要なモジュールを選択する方法を取ることが効率的である。しかしながら、そのようなモジュールの選択は、メインルーチンを記述するアセンブル・プログラムの本文中で行わなければならない。このため新たなプログラムの作成や修正に手間がかかり、さらに自動化することは困難である。
【０００６】
　本発明の目的は、モジュール化したプログラムを自動的に配置することが容易なアセンブル・プログラムの自動配置装置を提供することである。
【課題を解決するための手段】
【０００７】
　本発明は、作成すべきアセンブル・プログラムを、複数のブロックに分割して、各ブロック毎に予め作成されているモジュールプログラムを配置するアセンブル・プログラム自動配置装置において、作成すべきアセンブル・プログラムを構成するモジュールプログラムが記述されているデータを、各ブロック毎に配列して入力する構成データ入力手段と、モジュールプログラムが予め作成され、メモリ領域を割付けて生成するための属性が付加されて記憶されるプログラム記憶手段と、構成データ入力手段への入力に応答して、プログラム記憶手段からモジュールプログラムをブロックの配列順に読出し、付加された属性に従ってメモリ領域に割付けて配置する配置手段とを含むことを特徴とするアセンブル・プログラム自動配置装置である。
【０００８】
　また本発明は、前記属性には、ＲＡＭとしてメモリ領域を確保すべきことが含まれることを特徴とする。
【０００９】
　本発明に従えば、モジュール化されたプログラムの配置は、構成データ入力手段に入力されるデータに従って行われる。プログラム記憶手段に記憶されているモジュールプログラムは、メモリ領域を割付けて生成するための属性が付加されている。配置手段は、モジュールプログラムを作成すべきアセンブル・プログラムのブロックの配列順に読出し、各モジュールプログラムに付加された属性に従って、メモリ領域に割付けて保持する。予めプログラム記憶手段に、複数のモジュールプログラムを記憶させておいて、構成データ入力手段に入力するデータにおけるモジュールプログラムの記述を変更すれば、作成すべきアセンブル・プログラムに組合わせるモジュールプログラムを容易に変更することができる。
【００１０】
　また本発明に従えば、メモリ領域の割付けの際に、ＲＡＭとして確保すべき領域を、モジュールプログラムの属性として指定することができる。これによって、配置手段は、ＲＡＭの領域をまとめてメモリ領域に割付けすることができ、メモリ素子をＲＡＭとＲＯＭとに分けて実装してあるようなコンピュータ装置において、アセンブル・プログラムから生成される機械語プログラムを実行させることが容易となる。
【発明の効果】
【００１１】
　以上のように本発明によれば、構成データ入力手段へのデータの入力に応じて、アセンブル・プログラムを自動的に配置させることができる。構成データ入力手段へのデータを変更すれば、生成されるアセンブル・プログラムを容易に修正することもできる。
【００１２】
　また本発明によれば、ＲＡＭをメモリ領域に割付けて配置するので、ＲＡＭをメモリ領域に効率よく配置することができる。
【発明を実施するための最良の形態】
【００１３】
　図１は、本発明の一実施例の概略的な構成を示す。アセンブル・プログラム自動配置装置であるエンジニアリングワークステーション（以下、「ＥＷＳ」と略称する）１は、ソフトウエアによって実現されるプログラム配置手段２および構成データ入力手段３を有する。
プログラム配置手段２には、仕様書４の内容と、ハードディスクや光ディスク装置などによって実現されるプログラム記憶手段５からのデータとが入力される。プログラム配置手段２には、構成データ入力手段３に入力される構成データに従って、ＲＡＭ領域６、マップ領域７、共通部品領域８およびプログラム本体９を含む作成プログラム１０を生成する。
ＲＡＭ領域６は、データの読出しと書込みとが可能な変数または定数が配置される領域である。マップ領域７は、ルックアップ用のマップデータが配置される領域である。共通部品領域８は、複数種類のプログラムから共通に使用可能な比較的小規模のプログラムが記述される領域である。プログラム本体９は、作成すべきプログラムにおけるＣＰＵなどの動作を表すプログラムコードが配置される領域である。
【００１４】
　図２は、作成プログラム１０を構成データ１３に従って作成するときの基本的な考え方を示す。作成すべきプログラム１０は、仕様書データ１４によって指示され、図１のプログラム記憶装置５内に構築されるデータベース１５から、必要データが抽出され、構成データ１３としてまとめられる。構成データ１３中の各データは、作成プログラム１０を複数のプログラム・ブロックに分割したときの各ブロックの構成を示す。図２に示す例では、プログラムを１２のブロックに分割している。
【００１５】
　図２の作成プログラム１０の内容は、次の表１に示される。
【００１６】
【表１】
2004086924.tif 000003
【００１７】
　表１で、「ユーザ入力」は、プログラム作成者がキーボードなどからデータを入力すべきことを示す。「配置」は、メモリ領域を再配置することを示す。「データ書込み」は、図１に示すマップ領域７などに書込むべきデータがあることを示す。「システム設定」は、本自動配置装置が設定することを示す。
【００１８】
　図３は、図２の作成プログラム１０のブロック内容とそのメモリ領域への割付け属性の種類との関係を示す。種類がＲＡＭであれば、プログラムを作成する際に、ＲＡＭが割付けられる。種類がマップであれば、マップデータが書込まれる。種類が共通部品であれば、予め作成されている共通部品が配置される。種類がプログラム本体であれば、定数データの書込みとモジュール配置とが行われる。
【００１９】
　図２に示す構成データ１３の一例を次の表２に示す。
【００２０】
【表２】
2004086924.tif 000004
【００２１】
　ここで、第５番目のブロック「ＲＡＭ領域定義」と、第９番目のブロック「メインルーチン」とは、対応している。このため参照ファイル名においても、「ＡＢＣＤＳ００ＡＲ．ＭＯＤ」と「ＡＢＣＤ−Ｓ−００−Ａ−Ｒ」は対応関係にある。また「ＸＹＺＳ０３０ＢＲ．ＭＯＤ」と「ＸＹＺ−Ｓ０−３０−Ｂ−Ｒ（１／３）」〜「ＸＹＺ−Ｓ０−３０−Ｂ−Ｒ（３／３）」は対応する。「ＸＹＺ…Ｒ」は、３つのファイルに分割されていることを示す。
【００２２】
　図４は、表２に示すような構成データによって、仕様書４から作成プログラム１０を生成する過程におけるデータの関連状態を示す。プログラム記憶手段５内には、モジュールライブラリ１６、共通部品１７および配置関連情報１８が予め記憶される。仕様書４からは、仕様書抽出データ２０が抽出される。仕様書抽出データ２０の「モジュール名」に従って、モジュールライブラリ１６から名称が一致するファイルが標準モジュール２１として読出される。「モジュール名」からは、配置関連情報１８も参照される。仕様書抽出データ２０の「機種データ」に従って、共通部品１７が参照される。標準モジュール２１に指定される「ＲＡＭ」に記載されているデータがＲＡＭテーブル２２にまとめられる。ＲＡＭとしては、「フラグ」と「ダイレクト」となどの種別がある。フラグは、ビットデータの記憶に用いる。ダイレクトは、メモリのアクセスの仕方を指定する。仕様書抽出データ２０中「マップ値」と、標準モジュール２１中の「マップ・フォーマット」とは、マップテーブル２３にマップ・データとして集められる。仕様書抽出データ２０の「定数値」と、標準モジュール２１中の「定数書式」とは、作成モジュール２４に定数データとして集められる。標準モジュール２１中の「ロジック」は、作成モジュール２４中のロジックに集められる。ロジックはＣＰＵの動作を表す。共通部品１７から検索された共通部品は共通部品２５として、共通定数や汎用サブルーチンとしてまとめられる。
【００２３】
　ＲＡＭテーブル２２の内容に基づいて、ＲＡＭ割付け２６が行われ、作成プログラム１０のＲＡＭ領域６が生成される。マップテーブル２３のマップ・データに基づいて、マップレイアウト２７が形成され、作成プログラム中のマップ領域７が生成される。共通部品２５から共通部品レイアウト２８が作成され、作成プログラム１０中の共通部品領域８が生成される。作成モジュール２４からは、配置関連情報１８を参照して、モジュールレイアウト２９が作成され、作成プログラム１０中のプログラム本体領域９が生成される。
【００２４】
　図５は、本実施例によるアセンブル・プログラムの作成過程を示す。ステップａ１では、仕様書が与えられて、プログラムの作成が開始される。ステップａ２では、仕様書からデータ抽出が行われる。ステップａ３では、仕様書データに基づいて、モジュールの作成が行われる。図４に示されるモジュールライブラリ１６にすでに登録されているモジュールであれば、標準モジュール２１として抽出する。未登録のモジュールであれば、新たに作成する。
【００２５】
　ステップａ４では、表２に示すような構成データを作成し、プログラムの生成過程を開始する。構成データに記載されているブロックは、ブロック名の記載順に従って処理される。表１の「備考」に相当するデータは、表２の「参照ファイル名」の「．」以下を識別子として用いることなどによって判別することができる。ステップａ５では、ユーザ入力が必要か否かが判断される。ユーザ入力が必要であれば、ステップａ６で入力されたデータを取込む。次のステップａ７では、構成データに基づいて、プログラム自動配置が行われる。
【００２６】
　ステップａ８では、自動配置されて作成されたプログラムをアセンブルし、機械語に翻訳する。文法的なエラーがあったときや、翻訳された機械語によってテスト動作を行った結果から、ステップａ９では、プログラムの修正が必要か否かが判断される。修正が必要と判断されるときには、ステップａ１０で構成データの修正が行われ、ステップａ５に戻る。ステップａ９で修正が必要でないと判断されるときには、ステップａ１１でプログラムの作成を終了する。個々のモジュールについては、ステップａ３のモジュール作成の段階でアセンブラの文法エラーなどを除去しておけば、ステップａ１０での文法エラーの修正の必要はなくなる。この場合の修正は、たとえば実際にエンジンを制御したときの制御データなどを変更する修正となる。予め複数のデータをモジュールとして作成しておけば、その指定を切換えるだけでプログラムの修正を行うことができる。
【００２７】
　図４のＲＡＭ割付け２６は、たとえば表３のように区分される領域に対して行われる。
【００２８】
【表３】
2004086924.tif 000005
【００２９】
　ＲＡＭ領域は＄００〜＄ＦＦの連続したアドレスに割付けられるけれども、その領域はたとえば５つに区分されている。このような区分は、たとえばＲＡＭ領域の一部をバッテリバックアップして、データが揮発しないようにするときなどに特に有効である。割付け内容のパターンＡ〜Ｅは、それぞれＲＡＭ領域の属性を表す。パターンＢ，Ｃは、第２の区分および第４の区分に割付けることができる。
【００３０】
　図６は、表３のようなＲＡＭ領域区分にＲＡＭを割付ける方法を示す。
ステップｂ１から割付けを開始し、ステップｂ２では、割付けるべきＲＡＭを１つとる。
ステップｂ３でそのＲＡＭがすでに他のブロックで割付けが終了しているか否が判断される。同一の名称のＲＡＭがすでに割付けられていないときには、ステップｂ４で、そのパターンがＢまたはＣ以外であるか否かが判断される。パターンＢ，Ｃ以外であると判断されるときには、ステップｂ５で所定の区分に割付けられる。ステップｂ４でパターンＢ，Ｃであると判断されるときには、ステップｂ６で、まず２番目の区分から割付けが行われる。２番目の区分に空所があれば、さらに２番目の区分に割付けられる。２番目の区分に空所がなければ、４番目の区分に割付けられる。
【００３１】
　割付けが終了すると、ステップｂ７で、他にまだ割付けられていないＲＡＭがあるか否かが判断される。未割付けのＲＡＭがあるときには、ステップｂ２に戻る。全てのＲＡＭの割付けが終了すると、ステップｂ８で割付け処理を終了する。
【００３２】
　以上のようにして、ＲＡＭを重複することなく、しかも連続して効率的にメモリに割付けることができる。本実施例では、作成すべきプログラムを１２のブロックに分割し、メモリ領域の属性を４種類に分けているけれども、それぞれ他の数であってもよいことは勿論である。
【図面の簡単な説明】
【００３３】
【図１】本発明の一実施例の概略的な電気的構成を示すブロック図である。
【図２】図１に示す実施例の基本的な考え方を示すブロック図である。
【図３】図２に示す作成プログラム１０を構成するブロックの内容を示す図である。
【図４】図２に示す処理におけるデータの関連状態を示すブロック図である。
【図５】図２に示す動作の処理過程を示すフローチャートである。
【図６】図４のＲＡＭ割付け２６の処理内容を示すフローチャートである。
【符号の説明】
【００３４】
１　ＥＷＳ
２　プログラム配置手段
３　構成データ入力手段
４　仕様書
５　プログラム記憶手段
６　ＲＡＭ領域
７　マップ領域
８　共通部品領域
９　プログラム本体領域
１０　作成プログラム
１３　構成データ
１４　仕様書データ
１５　データベース
１６　モジュールライブラリ
１７　共通部品
１８　配置関連情報
２２　ＲＡＭテーブル
２６　ＲＡＭ割付け
【図１】
2004086924.tif 000006
【図２】
2004086924.tif 000007
【図３】
2004086924.tif 000008
【図４】
2004086924.tif 000009
【図５】
2004086924.tif 000010
【図６】
2004086924.tif 000011