(57)【特許請求の範囲】
【請求項１】
（ａ）アセンブラ言語により表現されたアセンブラソースコード列を記憶する記憶手段と、（ｂ）該アセンブラソースコード列に含まれるメモリアクセスをおこなうマクロ命令を検出するマクロ命令検出手段と、（ｃ）該マクロ命令が含むシンボルのシンボルアドレス定義ファイルを記憶するシンボルアドレス定義記憶手段と、（ｄ）該シンボルに対応したシンボルアドレスを、該シンボルアドレス定義記憶手段に記憶された前記シンボルアドレス定義ファイルにより計算するアドレス計算手段と、（ｅ）該計算値に基づいて最小数の命令列に前記マクロ命令を展開し該命令列を出力するマクロ命令展開手段とを有することを特徴とするコード変換装置。
【請求項２】
（ａ）マクロ命令検出手段が、アセンブラソースコード列を記憶する記憶手段に記憶されたアセンブラソースコード列に含まれるメモリアクセスをおこなうマクロ命令を検出するステップと、（ｂ）アドレス計算手段が、該マクロ命令が含むシンボルに対応したシンボルアドレスを計算するステップと、（ｃ）マクロ命令展開手段が、該計算値に基づいて最小数の命令列に前記マクロ命令を展開するステップと、を含むことによってコード変換を行うことを特徴とするコード変換方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、アセンブラソース中のマクロ命令を展開する手段の改良に関する。
【０００２】
【従来の技術】
この種のアセンブラ中のマクロ命令を展開する手段としては、シンボルを介したマクロ命令は、リンク時にシンボルがアドレス空間のどこに割り当てられても誤動作しないように、展開されていた。
【０００３】
【発明が解決しようとする課題】
しかしながら、シンボルアドレスがどこでも、正しく処理できるようにするためには、冗長の命令に展開せざるおえないため、命令数、実行スピードとも、無駄が多くなるという課題を有する。
【０００４】
【課題を解決するための手段】
本発明のコード変換装置は、（ａ）アセンブラ言語により表現されたアセンブラソースコード列を記憶する記憶手段と、（ｂ）該アセンブラソースコード列に含まれるメモリアクセスをおこなうマクロ命令を検出するマクロ命令検出手段と、（ｃ）該マクロ命令が含むシンボルのシンボルアドレス定義ファイルを記憶するシンボルアドレス定義記憶手段と、（ｄ）該シンボルに対応したシンボルアドレスを該シンボルアドレス定義記憶手段に記憶された前記シンボルアドレス定義ファイルにより計算するアドレス計算手段と、（ｅ）該計算値に基づいて最小数の命令列に前記マクロ命令を展開し該命令列を出力するマクロ命令展開手段とを有することを特徴とする。
【０００５】
本発明のコード変換方法は、（ａ）マクロ命令検出手段が、アセンブラソースコード列を記憶する記憶手段に記憶されたアセンブラソースコード列に含まれるメモリアクセスをおこなうマクロ命令を検出するステップと、（ｂ）アドレス計算手段が、該マクロ命令が含むシンボルに対応したシンボルアドレスを計算するステップと、（ｃ）マクロ命令展開手段が、該計算値に基づいて最小数の命令列に前記マクロ命令を展開するステップと、を含むことによってコード変換を行うことを特徴とする。
【０００６】
【発明の実施の形態】
以下、本発明を実施例により詳細に説明する。
【０００７】
図１は本発明の一実施例システムの構成図である。図中、１は中央処理装置、２は記憶装置、３はマクロ命令検出手段、４はアドレス計算手段、５はマクロ命令展開手段、６はアセンブラソース入力ファイル、７はシンボルアドレス定義ファイル、８はアセンブラソース出力ファイルを示す。
【０００８】
マクロ命令検出手段３は、アセンブラソース入力ファイル６を入力し、ファイル内のメモリアクセスをおこなうマクロ命令を検出する。
【０００９】
アドレス計算手段４は、シンボルアドレス定義ファイル２を入力し、マクロ命令検出手段３が検出したマクロ命令のオペランドのシンボルのアドレスを計算し結果をマクロ命令展開手段５に渡す。
【００１０】
マクロ命令展開手段５は、アドレス計算手段４の演算結果を基に、マクロ命令検出手段３が検出した命令を、最適なアセンブラ命令に展開する。
【００１１】
以下は１６ビット固定長命令で２４ビットのアドレス空間をもつＣＰＵ用のアセンブラの例である
メモリアクセスの一例として、メモリの内容をレジスタに読み込む方法を図２を使用し説明する。図２の「ｌｄ  ｒｅｇ１，  ［ＲＥＧ９］」命令４はレジスタ９の示すアドレスの内容をレジスタ１に読み込むロード命令である。レジスタ値の示すアドレスにメモリアクセスをするため、レジスタ９にアドレス値を格納する必要がある。１命令でレジスタに格納できる即値は８ビットまでとする。このため８ビット以上の即値を格納するには即値拡張命令「ｅｘｔ」を使用する。即値拡張命令を１つ組み合わせると１６ビットまでの即値データを扱うことができ、２つの組み合わせで２４ビットまでの即値データを扱える。命令１から命令４の４命令で２４ビットアドレスにアクセスでき、命令２から命令４の３命令で１６ビットアドレスにアクセスでき、命令３と命令４の２命令で８ビットアドレスにアクセスできる。命令３のシンボル名の後に付いている「＠ｌ」はシンボル値［ＳＹＭＢＯＬ］の０〜７ビットをマスクする意味である。同様に命令２の「＠ｍ」はシンボル値［ＳＹＭＢＯＬ］の８〜１５ビットのマスク、命令１の「＠ｈ」はシンボル値［ＳＹＭＢＯＬ］の１６〜２４ビットのマスクである。
【００１２】
図２のマクロ命令「ｘｌｄ  ｒｅｇ１，［ＳＹＭＢＯＬ］」は以上４種類のパターンに展開できる。従来はシンボル値がマクロ命令展開の段階では未定なためメモリアクセスは２４ビット空間にアクセスする必要があるので、「ｘｌｄ  ｒｅｇ１，［ＳＹＭＢＯＬ］」命令は必ず命令１から命令４の４命令に展開していた。本発明のアセンブラマクロ展開例を図４のフローに従ってより詳しく説明する。
【００１３】
アセンブラソース入力ファイルの内容に「ｘｌｄ  ｒｅｇ１，  ［ＳＹＭＢＯＬ］」マクロ命令がある（Ｓ４０２）。マクロ命令検出手段は、メモリアクセスをおこなうマクロ命令「ｘｌｄ」を検出する（Ｓ４０３）。この命令はＳＹＭＢＯＬの示すメモリアドレスの内容をレジスタ１に読み込むマクロ命令である。シンボルアドレス定義ファイルに「ＳＹＭＢＯＬ＝０ｘ１１０」記述が存在する。アドレス計算手段は「ＳＹＭＢＯＬ」のアドレスが０ｘ１１０番地であることを、シンボルアドレス定義ファイルの「ＳＹＭＢＯＬ＝０ｘ１１０」記述の参照によって計算し（Ｓ４０４）マクロ命令展開手段に渡す。マクロ命令展開手段は「ＳＹＭＢＯＬ」のアドレスのビット数をもとに展開命令数を判断する。１６進数０ｘ１１０は２進数で表現すると「１０００１００００」となり、９ビットの数である。このため「ＳＹＭＢＯＬ」のアドレスは８ビットより大きく１６ビット以下であることを認識し（Ｓ４０５、４０６）、命令２，命令３、命令４の３命令に展開する（Ｓ４０９）。  この場合、４命令展開が必要だったパターンが３命令展開で済み「ｘｌｄ  ｒｅｇ１，［ＳＹＭＢＯＬ］」マクロ命令の命令コードのコードサイズと、命令実行ステップ数及び命令実行時間を７５％削減できる。
【００１４】
次にグローバルポインタを使用したメモリアクセスの一例として、メモリの内容をレジスタに読み込む方法を図３を使用し説明する。グローバルポインタとは相対アドレスを基にしたアドレッシングを使えるようにする方式である。命令８のレジスタ８にはグローバルポインタが設定してある。即値拡張命令と組み合わせることによりレジスタ８の値＋即値拡張値のアドレスにアクセスが可能になる。
【００１５】
では、グローバルポインタを使用した場合のアセンブラマクロ展開例について、図５のフローにしたがってより詳しく説明する。
【００１６】
レジスタ８に値０ｘ１００をセットしグローバルポインタとして使用する（Ｓ５０２）。アセンブラソース入力ファイルの内容に「ｘｌｄ  ｒｅｇ１，  ［ＳＹＭＢＯＬ］」命令がある（Ｓ５０３）。マクロ命令検出手段は、メモリアクセスをおこなうマクロ命令「ｘｌｄ」を検出する（Ｓ５０４）。シンボルアドレス定義ファイルに「ＳＹＭＢＯＬ＝０ｘ１１０」記述が存在する。アドレス計算手段は「ＳＹＭＢＯＬ」のアドレスが０ｘ１１０番地であることから、グローバルポインタからの相対アドレスが０ｘ１０であることを計算し（０ｘ１１０−０ｘ１００＝０ｘ１０）、その結果をマクロ命令展開手段に渡す（Ｓ５０５）。マクロ命令展開手段は「ＳＹＭＢＯＬ」のグローバルポインタ相対アドレスのビット数をもとに展開命令数を判断する（Ｓ５０６，５０７，５０８）。１６進数０ｘ１０は２進数で表現すると「１００００」となり５ビットの数である。このため「ＳＹＭＢＯＬ」のグローバルポインタ相対アドレスが８ビット以下であることを認識し命令７と命令８の２命令に展開する（Ｓ５１１）。
【００１７】
この場合、４命令展開が必要だったパターンが２命令展開で済み「ｘｌｄ  ｒｅｇ１，［ＳＹＭＢＯＬ］」マクロ命令の命令コードのコードサイズと、命令実行ステップ数及び命令実行時間を５０％削減できる。
【００１８】
【発明の効果】
以上、説明したように、本発明により、アセンブラソースにて、メモリアクセスをおこなうマクロ命令がコードサイズと命令実行ステップ数と命令実行時間が最適化された展開形式が出力されるようになる。
【図面の簡単な説明】
【図１】本発明の構成を示す図。
【図２】アセンブラマクロ展開例を示す図。
【図３】グローバルポインタ使用時のアセンブラマクロ展開例を示す図。
【図４】アセンブラマクロ展開フロー図。
【図５】グローバルポインタ使用時のアセンブラマクロ展開フロー図。
【図１】
0003787951.tif 000002
【図２】
0003787951.tif 000003
【図３】
0003787951.tif 000004
【図４】
0003787951.tif 000005
【図５】
0003787951.tif 000006