(57)【要約】【課題】プログラムサイズを低減化する組み込み用プログラム開発装置を提供する。【解決手段】本発明の組み込み用プログラム開発装置は、アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳してオブジェクトファイルを生成するアセンブラと、一つ以上のオブジェクトファイルを結合して、実行形式プログラムを生成するリンカとを含み、上記アセンブラは、夫々のソースプログラム内の指定された位置における先頭からのサイクル数を計測し、上記リンカは、夫々のソースプログラム内の指定された位置に関して、プログラム全体の先頭からのサイクル数の換算値を求め、更に、上記プログラム全体の先頭からのサイクル数の換算値を利用して、上記アセンブラは再度、アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳する。【選択図】図１
2011060109.tif 000002
【特許請求の範囲】
【請求項１】
アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳してオブジェクトファイルを生成するアセンブラと、
一つ以上のオブジェクトファイルを結合して、実行形式プログラムを生成するリンカと
を含み、
上記アセンブラは、夫々のソースプログラム内の指定された位置における先頭からのサイクル数を計測し、
上記リンカは、夫々のソースプログラム内の指定された位置に関して、プログラム全体の先頭からのサイクル数の換算値を求める
ことを特徴とする組み込み用プログラム開発装置。
【請求項２】
更に、上記プログラム全体の先頭からのサイクル数の換算値を利用して、上記アセンブラは再度、アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳する
ことを特徴とする請求項１に記載の組み込み用プログラム開発装置。
【請求項３】
組み込み用プログラム開発装置において、
アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳し、同時に、夫々のソースプログラム内の指定された位置における先頭からのサイクル数を計測するアセンブラが生成するオブジェクトファイルを結合して、実行可能なプログラムを生成し、同時に、夫々のソースプログラム内の指定された位置に関して、プログラム全体の先頭からのサイクル数の換算値を求める
リンカ。
【請求項４】
アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳し、同時に、夫々のソースプログラム内の指定された位置における先頭からのサイクル数を計測するアセンブラと、
上記アセンブラが生成するオブジェクトファイルを結合して、実行可能なプログラムを生成し、同時に、夫々のソースプログラム内の指定された位置に関して、プログラム全体の先頭からのサイクル数の換算値を求めるリンカと
を含む組み込み用プログラム開発装置において、
上記プログラム全体の先頭からのサイクル数の換算値を利用して、再度、アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳する
ことを特徴とするアセンブラ。
【請求項５】
アセンブラが、アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳してオブジェクトファイルを生成する際に、夫々のソースプログラム内の指定された位置における先頭からのサイクル数を計測し、
リンカが、一つ以上のオブジェクトファイルを結合して実行形式プログラムを生成する際に、夫々のソースプログラム内の指定された位置に関して、プログラム全体の先頭からのサイクル数の換算値を求める
ことを特徴とする組み込み用プログラム開発方法。
【請求項６】
続いてアセンブラが、上記プログラム全体の先頭からのサイクル数の換算値を利用して、再度、アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳する
ことを特徴とする請求項５に記載の組み込み用プログラム開発方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込み用プログラム開発装置、及び組み込み用プログラム開発方法に関する。
【背景技術】
【０００２】
コピー機等のマイコン（マイクロコンピュータ）への組み込み用プログラムは、プロセッサとその周辺装置との入出力を行うこと（入出力動作命令）を含んでいることが多い。そのような周辺装置との入出力を行う場合、組み込み用プログラムは、その周辺装置の動作状態を調べ、それ以前のプログラムの指示による動作が完了していることを確認してから、次の入出力を行うことが通常である。
【０００３】
このような、周辺装置の動作状態を調べるプログラム部分が非常に多い場合、全体のプログラムサイズの増加や、実行サイクル数の増大を招いてしまう。組み込み用プログラムは、プログラム容量が限定されており、許容される実行時間にも制限がある。つまり、組み込み用プログラムにおいては、それらの限定・制約を超えてしまうことは問題を生じることになる。
【０００４】
ここで、周辺装置の実行時間が予め判明しているならば、その周辺装置が動作開始してから次の動作を開始するまでのプログラムの実行時間が、その周辺装置の実行時間より長ければ、次の動作を開始する際にその周辺装置の動作状態を調べることなく、次の動作の開始を周辺装置に指示することができる。しかしながら、このことを利用して組み込み用プログラムのサイズを削減したり実行サイクル数を低減させたりするような、組み込み用プログラム開発装置は、現在存在しない。
【０００５】
なお、特許文献１には、アセンブル時にサイクル情報を埋め込んでオブジェクトファイルを生成するアセンブラが開示されている。特許文献１に開示されるアセンブラは、サイクル数情報を生成し、それを使用者に知らしめるに過ぎない。例えば、この情報に基づいて再度アセンブルを実行するというものではない。また、リンカがリンク処理と共にサイクル数情報を生成する、という技術も開示されていない。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、アセンブラ及びリンカが計測する実行サイクル数に基づいて、再度のアセンブル時にプログラムのサイズを削減し、実行サイクル数を低減化するような組み込み用プログラム開発装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記の目的を達成するために為されたものである。本発明に係る組み込み用プログラム開発装置は、
アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳してオブジェクトファイルを生成するアセンブラと、
一つ以上のオブジェクトファイルを結合して、実行形式プログラムを生成するリンカと
を含み、
上記アセンブラは、夫々のソースプログラム内の指定された位置における先頭からのサイクル数を計測し、
上記リンカは、夫々のソースプログラム内の指定された位置に関して、プログラム全体の先頭からのサイクル数の換算値を求める
ことを特徴とする。
【０００８】
更に、上記プログラム全体の先頭からのサイクル数の換算値を利用して、上記アセンブラは再度、アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳することが、好ましい。
【０００９】
本発明に係るリンカは、
組み込み用プログラム開発装置において、
アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳し、同時に、夫々のソースプログラム内の指定された位置における先頭からのサイクル数を計測するアセンブラが生成するオブジェクトファイルを結合して、実行可能なプログラムを生成し、同時に、夫々のソースプログラム内の指定された位置に関して、プログラム全体の先頭からのサイクル数の換算値を求めることを特徴とする。
【００１０】
本発明に係るアセンブラは、
アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳し、同時に、夫々のソースプログラム内の指定された位置における先頭からのサイクル数を計測するアセンブラと、
上記アセンブラが生成するオブジェクトファイルを結合して、実行可能なプログラムを生成し、同時に、夫々のソースプログラム内の指定された位置に関して、プログラム全体の先頭からのサイクル数の換算値を求めるリンカと
を含む組み込み用プログラム開発装置において、
上記プログラム全体の先頭からのサイクル数の換算値を利用して、再度、アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳する
ことを特徴とする。
【００１１】
本発明に係る組み込み用プログラム開発方法は、
アセンブラが、アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳してオブジェクトファイルを生成する際に、夫々のソースプログラム内の指定された位置における先頭からのサイクル数を計測し、
リンカが、一つ以上のオブジェクトファイルを結合して実行形式プログラムを生成する際に、夫々のソースプログラム内の指定された位置に関して、プログラム全体の先頭からのサイクル数の換算値を求める
ことを特徴とする。
【００１２】
続いてアセンブラが、上記プログラム全体の先頭からのサイクル数の換算値を利用して、再度、アセンブリ言語で書かれたソースプログラムファイルを対象のプロセッサの機械語に翻訳することが、好ましい。
【発明の効果】
【００１３】
本発明を利用することにより、プログラムのある地点から別の地点までのサイクル数を、リンカにより複数のソースファイルに跨る場合をも計測しそのサイクル数を基に再度アセンブルを行い、不必要な周辺装置の状態待ちの部分を削除できるから、プログラムサイズや実行サイクル数の低減化を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の好適な実施形態に係る組み込み用プログラム開発装置における組み込み用プログラム開発の処理の流れを示す図である。
【図２】アセンブラプログラムの記述例である。
【図３】本発明の好適な実施形態に係る組み込み用プログラム開発装置におけるアセンブラの再度の翻訳処理のフローチャートである。
【図４】ソースファイルの例であり、サイクル数用ラベルがソースファイルを跨って用いられている例である。
【図５】ソースファイルの例であり、サイクル数用ラベルがソースファイルを跨って用いられている例である。
【図６】ソースファイルの例であり、サイクル数用ラベルがソースファイルを跨って用いられている例である。
【図７】図４乃至図６のプログラムにおけるサイクル情報テーブルの構成例である。
【図８】組み込み用プログラムを開発するときの一般的な処理の流れを示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、本発明に係る好適な実施形態を説明する。
【００１６】
［好適な実施形態］
図８は、組み込み用プログラムを開発するときの一般的な処理の流れを示す図である。ホストコンピュータ上で作成されたソースファイル群Ｓは、それぞれアセンブラＡにより翻訳されて、オブジェクトファイル群Ｂが作成される。オブジェクトファイル群Ｂは、リンカＬにより結合されて、実行形式プログラムＥが生成される。これらの処理は、パーソナルコンピュータやワークステーション等の、ホストコンピュータ上で実行される。
【００１７】
次に、図１は、本発明の好適な実施形態に係る組み込み用プログラム開発装置における組み込み用プログラム開発の処理の流れを示す図である。図示していないが、これらの処理もホストコンピュータ上で実行される。
【００１８】
ソースファイルを作成する時、プログラム先頭からの実行サイクル数を求めようとする位置に、例えば、図２のプログラムに示すように、シンボル名としてのラベルの付加を指定する。ここでは、“ＣＹＣＬＥ１”及び“ＣＹＣＬＥ２”が、シンボル名としてのラベルに該当する。更に、そのシンボル名を使って、実行サイクル数を条件とする条件アセンブル用の擬似命令（ｉｆｃｙｃｌｅ命令）により、周辺装置の状態待ちのプログラム部分のアセンブル条件としておく。
【００１９】
このとき、使用するシンボルが同じソースファイル内に存在しているかどうかは限定されない。外部参照シンボルでもよい。このような指定が行われたソースファイル群Ｓ１は、図１に示すように、それぞれアセンブラＡ１により翻訳されて、オブジェクトファイル群Ｂ１が作成される。このとき、アセンブラＡ１は、通常の翻訳処理を行うと共に、各シンボル位置のそのソースファイルにおけるプログラム先頭位置からのサイクル数を計測して、その情報を生成するオブジェクトファイル群Ｂ１に埋め込む。
【００２０】
また、最初（１回目）のアセンブルのときは、“ｉｆｃｙｃｌｅ”擬似命令で示されるサイクル数による条件アセンブル部分の条件判定（及びライン削除）を実施しない。つまり、図２に示すプログラムでは、
“ｉｆｃｙｃｌｅ  （ＣＹＣＬＥ２−ＣＹＣＬＥ１）＜ＰＥＲＩ１ＣＹＣＬＥ”
の条件判定を実施しない。これに伴い（後で説明する）“ｉｆｃｙｃｌｅ”から“ｅｎｄｉｆ”までの削除も行わない。
【００２１】
この条件アセンブル部分の条件判定を（ホストコンピュータが）実施するか否かの判断は、ソースファイルＳ１の作成時期と、後述するサイクル情報テーブルＴ１の生成時期との新旧を比較することにより、為されることになる。すなわち、サイクル情報テーブルＴ１の作成時期がソースファイルＳ１の作成時期より古ければ、実行サイクル数計測が未完であると判断されるべきであるから、サイクル数による条件判定は実施されない。逆に新しければ、既にサイクル数が計測されたものとみなし得るから、条件判定は実施される。
【００２２】
図１に戻って、リンカＬ１は、オブジェクトファイル群Ｂ１を結合して、実行形式プログラムＰ１を生成する。このとき、結合される順番により、オブジェクトファイル群Ｂ１内に存在するシンボルにおけるサイクル数を、プログラム全体の先頭からの換算値に置き換えて、サイクル情報テーブルＴ１に生成する（図７参照）。このサイクル情報テーブルファイルＴ１の生成は、従来のリンカで行われているプログラムアドレスの生成と、同様の手続きで行うことができる。
【００２３】
アセンブラＡ１は、このサイクル情報テーブルＴ１に基づいて、再度、ソースファイル群Ｓ１を翻訳し、オブジェクトファイルＢ１を生成する。このとき、ｉｆｃｙｃｌｅ擬似命令内で指示されているシンボル値のサイクル数の値によっては、対象とする周辺装置の状態待ちのプログラム部分を削除して翻訳する、ということが可能となる。
【００２４】
アセンブラＡ１が再度翻訳を行った後には、リンカＬが、削減されたプログラムのオブジェクトファイル群Ｂ１を再度結合して、容量の低減された実行形式プログラムＰ１を生成する。
【００２５】
図２は、アセンブラプログラムの記述例である。それぞれの記述の意味を、以下の表１に示す。
【表１】
2011060109.tif 000003
アセンブラＡ１による、図２に示すプログラムの再度の翻訳において、計測されるＣＹＣＬＥ１からＣＹＣＬＥ２までのサイクル数の値が、ＰＥＲＩ１ＣＹＣＬＥの値以上、即ち５０以上であれば、（ｉｆｃｙｃｌｅ命令とｅｎｄｉｆ命令とに挟まれた）ＬＯＯＰ２部分で記述されている条件アセンブル文が偽となり、そこがアセンブルされない。また、このＬＯＯＰ２部分は、対象とする周辺装置の状態待ち部分である。従って、不必要な、周辺装置の動作状態を調べるプログラム部分が省かれるので、プログラム容量や実行サイクル数を低減化できることになる。
【００２６】
図３は、本実施形態のアセンブラＡ１の再度の翻訳処理のフローチャートである。アセンブラＡ１はソースコードを読み（Ｓ０２）、ｉｆｃｙｃｌｅ疑似命令で無ければ（Ｓ０６・Ｎｏ）、翻訳して（Ｓ０８）次のソースコードを読む。なお、ここでの翻訳は、通常の翻訳だけでなく、他の疑似命令やラベル等の、ｉｆｃｙｃｌｅ疑似命令以外の全ての記述の解析も含む。
【００２７】
アセンブラＡ１が読んだソースコードがｉｆｃｙｃｌｅ疑似命令であれば（Ｓ０６・Ｙｅｓ）、ｉｆｃｙｃｌｅ命令に含まれるサイクル数の実際の値をサイクル情報テーブルから取得し（Ｓ１０）、ｉｆｃｙｃｌｅ疑似命令が真か偽かを確認する（Ｓ１２）。偽であれば（Ｓ１２・Ｎｏ）、その後のｅｎｄｉｆまでのソースコードは翻訳しないということであるからそれらソースコードを読み飛ばして（Ｓ１４）次のソースコードを読む。真であれば（Ｓ１２・Ｙｅｓ）、その直後のソースコードも翻訳するということであるから、直ぐに次のソースコードを読む。ソースコードを読み終われば（Ｓ０４・Ｙｅｓ）終了する（Ｓ１６）。
【００２８】
次に、図４、図５、図６は、３つのソースファイルを示しており、サイクル数用ラベルがファイルを跨って用いられている例である。ここで、ｓｏｕｒｃｅ１とｓｏｕｒｃｅ２とｓｏｕｒｃｅ３は、その順番でリンカにより結合されるものとする。図４乃至図６に示すプログラムの記述の意味は、図２の場合と同様に上記の表１に示している。
【００２９】
図４において、ＰＥＲＩ１とＰＥＲＩ２との２つの周辺装置への動作の開始を行っている。夫々、動作を開始する位置に“ＣＹＣＬＥ１”、“ＣＹＣＬＥ２”というラベルを付与している。図５及び図６は、それぞれ図４で開始した位置から、同じ周辺装置への更なる動作の開始（の位置）までのサイクル数により、それぞれの周辺装置の動作終了を待つ部分（周辺装置の状態待ち部分）の条件アセンブルを記述したものである。いずれも、周辺装置の動作が終了していれば（即ち、ＣＹＣＬＥ３−ＣＹＣＬＥ１≧ＰＥＲＩ１ＣＹＣＬＥであり、ＣＹＣＬＥ４−ＣＹＣＬＥ２≧ＰＥＲＩ２ＣＹＣＬＥであるならば）、ＬＯＯＰ３、及びＬＯＯＰ４で示されるループ部分の削除が可能となる。
【００３０】
ただし、サイクル数による条件アセンブル部分が複数ある場合、一つの条件アセンブル部分が削除されたことにより、プログラムの実行サイクル数が減少し、そのために、別の条件アセンブル部分の条件が変化してしまうことがある。この場合は、再度アセンブル、及びリンク処理を繰り返すことも可能である。
【００３１】
なお、図７は、図４乃至図６のプログラムにおけるサイクル情報テーブルの構成例である。
【００３２】
［その他の実施形態］
また、本発明は、Ｃ言語等の高級プログラミング言語のコンパイラと共に、利用することもできる。つまり、高級プログラミング言語のプログラムにおいてサイクル数を用いた条件コンパイルを記述して、本発明に係るアセンブラ及びリンカを用いれば、サイクル数計測を行い、計測したサイクル数に基づいて、不必要な、周辺装置の動作状態を調べるプログラム部分を省くことができる。
【００３３】
このようにして、プログラムのある地点から、別の地点までのサイクル数を、アセンブラのみならず、リンカにより複数のソースファイルに跨る場合をも計測し、そのサイクル数を基に再度アセンブルを行い、不必要な周辺装置の状態待ちの部分を削除して、プログラムサイズや、実行サイクル数の低減化を行うことが可能となる。
【産業上の利用可能性】
【００３４】
本発明は、ＣＰＵ／ＤＳＰ等のマイコン組み込み機器ソフトウェア開発に用いることができる。
【符号の説明】
【００３５】
Ｓ１・・・ソースファイル、Ａ１・・・アセンブラ、Ｂ１・・・オブジェクトファイル、Ｌ１・・・リンカ、Ｔ１・・・サイクル情報テーブル、Ｐ１・・・実行形式プログラム。
【先行技術文献】
【特許文献】
【００３６】
【特許文献１】特開平１１−３９１５５号公報
【図１】
2011060109.tif 000004
【図２】
2011060109.tif 000005
【図３】
2011060109.tif 000006
【図４】
2011060109.tif 000007
【図５】
2011060109.tif 000008
【図６】
2011060109.tif 000009
【図７】
2011060109.tif 000010
【図８】
2011060109.tif 000011