(57)【特許請求の範囲】
【請求項１】
複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、
命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換装置であって、
前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき命令セットの選択要否が未定である分岐命令のオブジェクトプログラムにおける配置場所を示す擬似分岐情報を生成する擬似分岐情報生成手段と、
オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成手段と、
前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別手段と、
当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置手段と
を備えることを特徴とするプログラム変換装置。
【請求項２】
前記分岐命令配置手段は、
配置されるべき分岐命令が属する命令セットと前記命令セット識別手段により識別された命令セットとの異同を判定する命令セット異同判定部を有し、
両者が異なると判定された場合、前記特定の分岐命令を配置し、両者が一致すると判定された場合、命令セットを選択し直さずに分岐する分岐命令を配置する
ことを特徴とする請求項１に記載のプログラム変換装置。
【請求項３】
前記プログラム変換装置は、
前記複数種の命令セットのうち一つを既定命令セットとして記憶しており、
さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットに属する命令であって当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令である既定命令セット分岐命令を、前記オブジェクトプログラムに追加する命令追加手段と、
当該ラベルと当該既定命令セット分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成手段とを備え、
前記擬似分岐情報生成手段は、前記命令セットの選択要否が未定である分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の分岐命令である間接アドレシング分岐命令を生成する
ことを特徴とする請求項１又は請求項２に記載のプログラム変換装置。
【請求項４】
前記命令追加手段は、
前記ラベルに対応する前記オブジェクトプログラム中の場所における命令が既定命令セットに属するか否かを判断する既定命令セット判定部を有し、
当該既定命令セット判定部により否と判断されたラベルについてのみ前記既定命令セット分岐命令を追加し、
前記間接入口情報生成手段は、
前記既定命令セット分岐命令が追加されなかった場合、前記ラベルと前記ラベルに対応する前記オブジェクトプログラム中の場所とを対応付けて示す間接入口情報を生成する
ことを特徴とする請求項３に記載のプログラム変換装置。
【請求項５】
前記プログラム変換装置は、さらに、
前記命令追加手段により追加された各既定命令セット分岐命令を識別する分岐命令識別手段と、
前記識別された個々の既定命令セット分岐命令について、実行時に当該既定命令セット分岐命令への間接アドレシングによる分岐が発生しないことを判定する間接分岐不在判定手段と、
前記分岐が発生しないと判定された場合、前記既定命令セット分岐命令を削除する命令削除手段とを備える
ことを特徴とする請求項３又は請求項４に記載のプログラム変換装置。
【請求項６】
前記間接分岐不在判定手段は、
間接アドレシング分岐命令が前記オブジェクトプログラム中に存在しない場合、前記分岐が発生しないと判断する
ことを特徴とする請求項５に記載のプログラム変換装置。
【請求項７】
前記間接分岐不在判定手段は、
前記既定命令セット分岐命令の場所が前記オブジェクトプログラム中において参照されていない場合、前記分岐が発生しないと判断する
ことを特徴とする請求項５に記載のプログラム変換装置。
【請求項８】
前記ソースプログラムに記述されている外部参照可能なラベルは関数名の宣言を含み、当該ラベルへの制御移行処理は当該関数の呼び出し処理を含む
ことを特徴とする請求項１乃至請求項７の何れかに記載のプログラム変換装置。
【請求項９】
前記擬似分岐情報生成手段は、
前記ソースプログラムにおいて関数の末尾以外の部分に記述されている関数呼び出し処理に対し、サブルーチンコール命令を生成すべきことを示す擬似分岐情報を生成し、関数の末尾に記述されている関数呼び出し処理に対し、戻りアドレスを記録しない分岐命令を生成すべきことを示す擬似分岐情報を生成する
ことを特徴とする請求項８に記載のプログラム変換装置。
【請求項１０】
前記プログラム変換装置は、
前記オブジェクトプログラムに含まれる同一命令セットに属する機械語命令が連続して配置されるようにリンクして前記実行形式プログラムを生成する
ことを特徴とする請求項１乃至請求項７の何れかに記載のプログラム変換装置。
【請求項１１】
複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、
記憶装置とプロセッサを含むコンピュータが、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを前記記憶装置中に生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換方法であって、
前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき命令セットの選択要否が未定である分岐命令のオブジェクトプログラムにおける配置場所を示す擬似分岐情報を前記コンピュータに含まれるプロセッサが生成し、前記記憶装置中に記憶する擬似分岐情報生成ステップと、
オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて前記コンピュータに含まれるプロセッサが生成し、前記記憶装置中に記憶する命令セット所属情報生成ステップと、
前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて前記コンピュータに含まれるプロセッサが識別する命令セット識別ステップと、
当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を前記コンピュータに含まれるプロセッサが配置する分岐命令配置ステップと
を含むことを特徴とするプログラム変換方法。
【請求項１２】
前記プログラム変換方法は、
前記複数種の命令セットのうち一つを既定命令セットとして前記記憶装置中に記憶しており、
さらに、前記コンピュータに含まれるプロセッサが、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令である既定命令セット分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、
当該ラベルと当該既定命令セット分岐命令を追加した場所とを対応付けて示す間接入口情報を前記コンピュータに含まれるプロセッサが生成し、前記記憶装置中に記憶する間接入口情報生成ステップとを備え、
前記擬似分岐情報生成ステップは、
前記命令セットの選択要否が未定である分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せずに、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の分岐命令である間接アドレシング分岐命令を生成するステップを含むものである
ことを特徴とする請求項１１に記載のプログラム変換方法。
【請求項１３】
複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、
記憶装置とプロセッサを含むコンピュータに、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを前記記憶装置中に生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換処理を行わせるためのコンピュータプログラムであって、
前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき命令セットの選択要否が未定である分岐命令のオブジェクトプログラムにおける配置場所を示す擬似分岐情報を生成し、前記記憶装置中に記憶する擬似分岐情報生成ステップと、
オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成し、前記記憶装置中に記憶する命令セット所属情報生成ステップと、
前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別ステップと、
当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置ステップと
を前記コンピュータに含まれるプロセッサに実行させることを特徴とするコンピュータプログラム。
【請求項１４】
前記コンピュータプログラムは、前記複数種の命令セットのうち一つを既定命令セットとして前記記憶装置中に記憶しており、
さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令である既定命令セット分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、
当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を前記プロセッサに生成し、前記記憶装置中に記憶する間接入口情報生成ステップとを前記コンピュータに含まれるプロセッサ実行させ、
前記擬似分岐情報生成ステップは、
前記命令セットの選択要否が未定である分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成させ、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せずに、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の分岐命令である間接アドレシング分岐命令を生成するステップを含むものである
ことを特徴とする請求項１３に記載のコンピュータプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラムに関し、特に、複数種の命令セットを有するプロセッサを対象とするプログラム変換技術に関する。
【０００２】
【従来の技術】
従来、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサが実用化されている。
この種のあるプロセッサは、一例として、バイト境界に整列可能な機械語命令からなるＨＤ命令セットとワード境界にのみ整列可能な機械語命令からなるＨＳ命令セットとを有し、ＨＳ命令をＨＤ命令よりも高速に実行する。整列境界の違いのため、ＨＳ命令が占めるコードサイズは等価なＨＤ命令が占めるコードサイズよりも大きい。
【０００３】
例えば、プログラム全体のコードサイズに占める割合は小さいが高い頻度で実行されるために動作時間に占める割合が大きいルーチンをＨＳ命令で記述し、その他の部分をＨＤ命令で記述してこのプロセッサに実行させれば、プログラムサイズの増加を抑制しつつ実行時間を短縮させることができる。
図１５（Ａ）及び（Ｂ）は、そのように記述されたソースプログラムの一例であり、Ｃ言語で記述された例を示している。両プログラム中に記述された命令セット表示行
#pragma #func#mode#XX  （XXはHD又はHSの何れか）
は、後続して記述されるソースプログラムがXXで示される命令セットに属する機械語命令列にコンパイルされるべきことをコンパイラに指示する。
【０００４】
図１６は、前記プロセッサにより実行される分岐命令の一例であり、命令欄３５１は分岐命令を表すニーモニック、オペランド欄３５２は当該分岐命令が取るオペランド、機能欄３５３は当該分岐命令の機能を表している。これらの分岐命令は全ての命令セットに含まれている。機能欄３５３に示したように、一部の分岐命令を実行することにより前記命令セットの選択が行われる。
【０００５】
図１７（Ａ）及び（Ｂ）は、従来のコンパイラが図１５（Ａ）及び（Ｂ）のソースプログラムに対してそれぞれ出力するオブジェクトプログラムをアセンブラ表記により表した模式図である。従来のコンパイラは一般的に、当該アセンブラ表記に対応する機械語命令列、及び当該機械語命令列中の場所を表すシンボル情報として当該オブジェクトプログラムを出力する。当該機械語命令列は、前記命令セット表示行で示された命令セットに属する機械語命令により生成される。
【０００６】
従来のコンパイラは、ソースプログラム中に記述された関数呼び出し処理に対しサブルーチンコール命令を生成する。このとき呼び出し元関数及び呼び出し先関数をコンパイルするための命令セットの異同をソースプログラム中に記述された前記命令セット表示行に基づいて判断し、両者が一致する場合、選択されている命令セットを変更しないサブルーチンコール命令"call"を生成し、両者が異なる場合、選択されている命令セットを変更するサブルーチンコール命令"callc"を生成する。
【０００７】
図１７は両者が異なる場合に、直接アドレシング及び間接アドレシングのそれぞれにより分岐するサブルーチンコール命令が生成される例を示している。
従来のリンケージエディタは、図１７（Ａ）及び（Ｂ）に示したオブジェクトプログラムをリンクし前記プロセッサが実行可能な実行形式プログラム（図示省略）を生成する。
【０００８】
このようにして、従来のコンパイラ及びリンケージエディタは、複数種の命令セットに属する機械語命令からなる実行形式プログラムを生成する。
【０００９】
【発明が解決しようとする課題】
しかしながら、上記従来技術のコンパイラ及びリンケージエディタによれば、呼び出し元関数及び呼び出し先関数の命令セットが決定された後でなければ"call"命令及び"callc"命令の何れを生成すべきか決定できないため関数呼び出し処理をコンパイルできないという第１の問題がある。
【００１０】
また、呼び出し先関数の命令セットを変更して再コンパイルした場合、当該関数の呼び出し処理に対して既に生成されている"call"命令又は"callc"命令をそれぞれ他方に変更する必要から、当該呼び出し処理を含むソースプログラムをも再コンパイルしなくてはならないという第２の問題がある。
これらの問題は、何れもソフトウェアの開発効率を損なう。
【００１１】
さらに、間接アドレシングによる分岐先は実行時に決まるため、間接アドレシングによるサブルーチンコール命令を生成すべき場合、コンパイル及びリンク時点で"call"命令及び"callc"命令の何れを生成すべきか、本来、正しく決定できないという第３の問題がある。
これらの問題は、前述した関数呼び出し処理のみならず、ソースプログラム中に記述されている外部参照可能なラベルへの制御移行処理について、一般に生じる。
【００１２】
上記の問題に鑑み、本発明は、分岐先命令の命令セットが未定であってもコンパイル可能で、分岐先命令が命令セットを変更して再コンパイルされた場合でも当該分岐先への分岐処理を記述しているソースプログラムを再コンパイルする必要がなく、間接アドレシングによる分岐命令を含んで正しく動作する機械語命令列を生成するコンパイラ及びリンケージエディタからなるプログラム変換装置の提供を目的とする。
【００１３】
【課題を解決するための手段】
（１）上記問題を解決するため、本発明のプログラム変換装置は、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換装置であって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成手段と、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成手段と、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別手段と、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置手段とを備える。
（２）また、前記（１）のプログラム変換装置は、前記複数種の命令セットのうち一つを既定命令セットとして記憶しており、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加手段と、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成手段とを備え、前記擬似分岐情報生成手段は、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成してもよい。
（３）本発明のプログラム変換方法は、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換方法であって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成ステップと、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成ステップと、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別ステップと、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置ステップとを含む。
（４）また、前記（３）のプログラム変換方法は、前記複数種の命令セットのうち一つを既定命令セットとして実行され、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成ステップとを備え、前記擬似分岐情報生成ステップは、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成してもよい。
（５）本発明のプログラムは、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換装置を、コンピュータを用いて実現するためのコンピュータ実行可能なプログラムであって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成ステップと、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成ステップと、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別ステップと、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置ステップとをコンピュータに実行させる。
（６）また、前記（５）のプログラムは、前記複数種の命令セットのうち一つを既定命令セットと定めて動作し、前記コンピュータに対し、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成ステップとを実行させ、前記擬似分岐情報生成ステップにおいて、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成させ、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成させてもよい。
【００１４】
【発明の実施の形態】
本実施の形態におけるプログラム変換装置は、複数種の命令セットを有するプロセッサを対象とし、一つ以上のソースプログラムを個々にコンパイルして機械語命令列、命令セット所属情報、擬似分岐情報、及びシンボル情報を含むオブジェクトプログラムを生成するコンパイラと、当該各情報に基づいて当該各機械語命令列をリンクして当該プロセッサが実行可能な実行形式プログラムを生成するリンケージエディタとからなるプログラム変換装置である。
【００１５】
当該プロセッサは、前記複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行する。命令セットの選択は特定の分岐命令を実行することにより行われる。
本プログラム変換装置は、次の考え方に従ってソースプログラムをコンパイル及びリンクする。
（１）機械語命令列中に直接アドレシングによる分岐命令を生成すべき場合、コンパイル時に当該命令について命令セットの選択要否が未定であることを示す情報を生成し、リンク時に当該命令と当該命令の分岐先命令とのそれぞれの命令セットの異同を判断して、分岐先命令の命令セットを選択する特定の分岐命令、又は選択されている命令セットを変更しない分岐命令の何れか適切な命令を生成する。
（２）前記複数種の命令セットのうち一つを既定命令セットと定め、分岐命令の分岐先命令に対し、当該分岐先命令が属する命令セットを選択して当該分岐先命令へ分岐する既定命令セットに属する特定の分岐命令を追加する。
（３）機械語命令列中に間接アドレシングによる分岐命令を生成すべき場合、既定命令セットを選択して分岐する特定の間接アドレシング分岐命令を生成し、このとき本来の分岐先に対して前記追加された分岐命令をその分岐先とする。
＜全体構成＞
図１は、本実施の形態におけるプログラム変換装置の全体構成を示す機能ブロック図である。当該プログラム変換装置１００は、翻訳部１１０及び連結部１２０からなる。翻訳部１１０及び連結部１２０はそれぞれ、コンパイラ及びリンケージエディタである。
【００１６】
プログラム変換装置１００は、具体的には、プロセッサ、プログラムを記憶しているＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、作業用のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ハードディスク装置等のハードウェアにより実現される。当該プログラム変換装置の各構成要素の機能は、前記プロセッサがＲＯＭに記憶されているプログラムを実行することにより実現される。情報の記憶及び前記各構成要素間での受け渡しは、前記ＲＡＭ及びハードディスク装置を用いて行う。
【００１７】
プログラム変換装置１００は、前記複数種の命令セットのうち一つを既定命令セットとして、例えばパラメータファイル（不図示）等を介して指定され記憶する。
＜翻訳部１１０の構成＞
翻訳部１１０は、字句構文解析部１１１、中間コード生成部１１２、及びオブジェクト情報生成部１１３から構成され、オブジェクト情報生成部１１３は、命令セット所属情報生成部１１６、モード切替命令追加部１１７、及び擬似分岐情報生成部１１８を含む機械語命令列生成部１１４、及び間接入口情報生成部１１９を含むシンボル情報生成部１１５から構成される。
【００１８】
翻訳部１１０は、一例としてＣ言語で記述されたソースプログラムをコンパイルし、一具体例として従来の技術の説明に用いた図１５（Ａ）及び（Ｂ）のソースプログラムをコンパイルする。
翻訳部１１０は、一つ以上のソースファイル１３１に記録されているソースプログラムを読み込み、字句構文解析部１１１により当該ソースプログラムを字句構文解析し、中間コード生成部１１２により中間コード列を生成する。中間コードは、ソースプログラムの各文に対応して実行されるべき処理を定義するために用いられる、文よりも小さな実行単位を表すコードであり、ソースプログラムから機械語命令列を生成する処理の便宜上設けられる。字句構文解析部１１１及び中間コード生成部１１２が行う処理は、従来のコンパイラによって一般的に実施されている技術に従うものとし、ここでは詳細な説明を省略する。
【００１９】
オブジェクト情報生成部１１３は、前記ソースプログラム及び前記中間コードに従って、機械語命令列、命令セット所属情報、擬似分岐情報、及びシンボル情報を含むオブジェクトプログラムを生成し、各ソースファイルに対応して設けられるオブジェクトファイル１３２に記録する。
機械語命令列生成部１１４は、前記ソースプログラムに対し実行されるべき機械語命令列を生成する。
【００２０】
命令セット所属情報生成部１１６は、前記ソースプログラムに記述されている命令セット表示行に対し、当該行に表示された命令セットと次に生成される機械語命令の機械語命令列における場所とを対応付けて示す命令セット所属情報を生成するとともに、当該行以降のソースプログラムを当該命令セットの機械語により生成すべきことを機械語命令列生成部１１４に指示する。機械語命令列生成部１１４は、当該指示を受けた後、当該指示された命令セットに属する機械語命令を生成する。
【００２１】
モード切替命令追加部１１７は、前記ソースプログラムに記述されている外部参照可能なラベルに対応する機械語命令列における場所、例えば関数を実行する機械語命令列の先頭（以降、関数入口と記す）について、当該場所に対応して示される命令セットを前記命令セット所属情報から検索し、当該命令セットが検索されない場合はその直前の場所に対応して示される命令セットを検索し、検索された命令セットを当該場所にある機械語命令が属する命令セットであると識別する。
【００２２】
当該識別された命令セットが既定命令セットと異なる場合、モード切替命令追加部１１７は、既定命令セットを選択して当該シンボル情報で表される場所へ分岐する既定命令セットに属する特定の分岐命令を機械語命令列に追加する。
当該分岐命令は、機械語命令列において直前に置かれた命令から継続して実行されない場所に追加すればよく、例えば、当該関数を実行する機械語命令列の先頭命令の直前に生成すればよい。
【００２３】
モード切替命令追加部１１７は、関数入口のみならず、前記ソースプログラムにおいて外部参照可能なラベルに後続して記述されている処理を実行する機械語命令列の先頭（以降、外部入口と記す）について同様処理を行ってもよい。
擬似分岐情報生成部１１８は、前記ソースプログラム中に記述されている外部参照可能なラベルへの個々の制御移行処理について、生成すべき分岐命令のアドレシングに応じて次の処理を行う。
【００２４】
直接アドレシング分岐命令を生成すべき場合、当該分岐命令の配置場所を示す機械語命令列における相対アドレスと当該分岐命令の種類と当該分岐命令が命令セットを選択する必要があるか否かが未定であることとを対応付けて示す擬似分岐情報を生成する。
間接アドレシング分岐命令を生成すべき場合、当該擬似分岐情報を生成せず、後述する間接入口情報により本来の分岐先に対応して示される場所へ既定命令セットを選択して分岐する間接アドレシング分岐命令を生成する。
【００２５】
擬似分岐情報生成部１１８は、ソースプログラム中に記述されている関数呼び出しのみならず、外部参照可能なラベルへ分岐する全ての制御移行処理に対し当該処理を行ってもよい。
機械語命令列生成部１１４は、当該擬似分岐情報により示される配置場所に、生成されるべき分岐命令と等しい大きさの領域を確保する。
【００２６】
シンボル情報生成部１１５は、関数入口及び外部入口を識別するシンボルとそれらの場所を表す機械語命令列における相対アドレスとを対応付けて示すとともに、当該シンボルと当該場所を参照するアドレスが存在する機械語命令列における場所とを対応付けて示すシンボル情報を生成する。
シンボル情報生成部１１５は、当該シンボルとして、ソースプログラムに記述された関数名及び外部参照可能なラベル名に例えば”＿０”といった接頭語を付加した記号を用いる。
【００２７】
間接入口情報生成部１１９は、関数入口及び外部入口について、モード切替命令追加部１１７が分岐命令を追加した場合、当該関数入口及び外部入口を識別するシンボルと当該追加された分岐命令の場所とを対応付けて示す間接入口情報を生成し、追加しなかった場合、当該シンボルと当該関数入口及び外部入口自身の場所とを対応付けて示す間接入口情報を生成する。
【００２８】
間接入口情報は、具体的には、本来のシンボル情報に含まれる記号の接頭語”＿０”を”＿”に代えて得られるシンボルと前述した何れかの場所を示す相対アドレスとを対応付けて示すシンボル情報であり、接頭文字の規則性によって本来のシンボル情報を識別する。
命令セット所属情報生成部１１６は、モード切替命令追加部１１７が分岐命令を追加した場合、当該追加された分岐命令の場所と既定命令セットとを対応付けて示す命令セット所属情報を生成する。
＜オブジェクトプログラムの一具体例＞
図２（Ａ）及び（Ｂ）は、翻訳部１１０が生成するオブジェクトプログラムの一具体例である。既定命令セットをＨＤ命令セットとして図１５（Ａ）及び（Ｂ）のソースプログラムをコンパイルして生成される、それぞれオブジェクトプログラム２１１及びオブジェクトプログラム２１２を、アセンブラ表記により表した模式図である。同図では、特に、前記命令セット所属情報及び前記擬似分岐情報をそれぞれ命令セット表示擬似命令及び擬似分岐命令として表記している。オブジェクトプログラムを表すための具体的なデータ構造については後述する。
【００２９】
図３は、前記命令セット表示擬似命令、及び擬似分岐命令の一例であり、擬似命令欄１５１は擬似命令を表すニーモニック、オペランド欄１５２は当該擬似命令が取るオペランド、機能欄１５３は当該擬似命令が表す情報を示している。ＩＮＳＴＭＯＤＥが命令セット表示擬似命令、ｂｒｘ及びｃａｌｌｘが擬似分岐命令である。
【００３０】
図１５（Ａ）のソースプログラムの各行に対して生成される図２（Ａ）のオブジェクトプログラム２１１を逐次説明する。
（１）ＨＤ命令セットを指示した命令セット表示行に対し、後続して記述されている関数ｆの関数入口”＿０ｆ”以降にＨＤ命令セットに属する機械語命令が置かれることを示す命令セット表示擬似命令ＩＮＳＴＭＯＤＥが生成される。
（２）関数ｆの宣言の開始に対し、関数入口”＿０ｆ”を示すシンボル情報が生成される。関数入口”＿０ｆ”以降に置かれる機械語命令はＨＤ命令セットに属するものであると識別され、当該関数入口に対し命令セットを切り替えるための分岐命令は追加されず、間接入口情報として当該関数入口と同一場所を示すシンボル情報”＿ｆ”が生成される。
（３）関数ｇの呼び出しに対し、関数ｇの関数入口”＿０ｇ”に分岐するサブルーチンコール命令の生成を指示する擬似分岐命令ｃａｌｌｘが生成される。
（４）関数へのポインタ変数ｆｕｎｃへ関数ｇのアドレス代入及び（＊ｆｕｎｃ）の間接呼び出しに対し、関数入口”＿０ｇ”に対応して設けられたシンボル情報”＿ｇ”で示されるアドレスをレジスタＲ０に代入するｍｏｖ命令と、レジスタＲ０の内容で示されるアドレスに分岐する間接アドレシングによる分岐命令ｃａｌｌとが生成される。ここに置かれるべき命令はＨＤ命令セットに属し、間接アドレシングによる分岐先命令もＨＤ命令セットに属するように生成されるから、この命令には選択されている命令セットを変更しないｃａｌｌ命令が用いられる。
【００３１】
図１５（Ｂ）のソースプログラムの各行に対して生成される図２（Ｂ）のオブジェクトプログラム２１２を逐次説明する。
（１）ＨＳ命令セットを指示した命令セット表示行に対し、後続して記述されている関数ｇの関数入口”＿０ｇ”以降にＨＳ命令セットに属する機械語命令が置かれることを示す命令セット表示擬似命令ＩＮＳＴＭＯＤＥが生成される。
（２）関数ｇの宣言の開始に対し、関数入口”＿０ｇ”を示すシンボル情報が生成される。関数入口”＿０ｇ”以降に置かれる機械語命令はＨＳ命令セットに属するものであると識別され、選択されている命令セットを変更して”＿０ｇ”へ分岐するＨＤ命令セットに属する分岐命令ｂｒｃが追加され、間接入口情報として当該分岐命令ｂｒｃの場所を示すシンボル情報”＿ｇ”が生成される。
＜オブジェクトファイル１３２の構成＞
図４（Ａ）乃至（Ｄ）は、前記オブジェクトプログラムを表すための具体的なデータ構造の一例であり、特にオブジェクトファイル１３２に保持されている前記オブジェクトプログラムの構成を示している。
【００３２】
同図（Ａ）は、オブジェクトファイル１３２の全体構成であり、機械語コード部２５０、シンボルテーブル部２６０、命令セット所属情報テーブル部２７０、擬似分岐情報テーブル部２８０から構成される。
機械語コード部２５０は前記機械語命令列を保持し、シンボルテーブル部２６０は前記シンボル情報を保持し、命令セット所属情報テーブル部２７０は前記命令セット所属情報を保持し、擬似分岐情報テーブル部２８０は前記擬似分岐情報を保持している。
【００３３】
同図（Ｂ）は、シンボルテーブル部２６０の詳細な構成であり、シンボル欄２６１は関数入口及び外部入口を識別するシンボルを保持し、区分欄２６２は定義か参照かを区分する記号を保持し、アドレス欄２６３は当該区分が定義の場合、当該場所の機械語命令列における相対アドレスを保持し、当該区分が参照の場合、当該場所を参照するアドレスが置かれる機械語命令列中の場所の相対アドレスを保持している。
【００３４】
シンボルテーブル部２６０には、間接入口情報生成部１１９により生成された間接入口情報に相当するシンボル情報も保持される。
同図（Ｃ）は、命令セット所属情報テーブル部２７０の詳細な構成であり、シンボル欄２７１は関数入口及び外部入口を識別する記号を保持し、命令セット欄２７２は当該関数入口及び外部入口以降に置かれた機械語命令が属する命令セットを示す記号を保持している。
【００３５】
同図（Ｄ）は、擬似分岐情報テーブル部２８０の詳細な構成であり、擬似分岐命令欄２８１は擬似分岐命令のニーモニックを保持し、アドレス欄２８２は分岐命令の配置場所を示す機械語命令列における相対アドレスを保持している。
＜連結部１２０の構成＞
連結部１２０は、分岐命令配置部１２１、モード切替命令削除部１２２、モード分類部１２５を含む配置部１２３、及び外部アドレス解決部１２４から構成される。
【００３６】
連結部１２０は、全てのオブジェクトファイル１３２に記録されているオブジェクトプログラムを読み込み、当該オブジェクトプログラムに含まれる命令セット所属情報、擬似分岐情報、及びシンボル情報に基づいて各機械語命令列をリンクして目的プロセッサが実行可能な実行形式プログラムを生成し、実行形式ファイル１３３に記録する。
【００３７】
分岐命令配置部１２１は、前記擬似分岐情報により示されるアドレスを保持し区分が「参照」であるシンボル情報を検索し、検索されたシンボル情報と等しいシンボルを保持し区分が「定義」であるシンボル情報をさらに検索し、後者のシンボル情報により示されるアドレスを当該場所に配置される分岐命令の分岐先と認識し、当該分岐先にある命令が属する命令セットを識別する。当該識別された命令セットと、生成すべき分岐命令の命令セットとが異なる場合、読み込んだ機械語命令列における当該場所の内容を、前記識別された命令セットを選択して分岐する当該擬似分岐情報に応じた種類の分岐命令に書き換える。両者が一致する場合、選択されている命令セットを変更せずに分岐する分岐命令に書き換える。
【００３８】
モード切替命令削除部１２２は、同一語尾にそれぞれ接頭語”＿０”及び”＿”を付したシンボルに対応し、かつ区分が「定義」である前記シンボル情報により示されるアドレスを比較し、両者が異なる場合、接頭語”＿”を付されたシンボルに対応するアドレスに、モード切替命令追加部１１７により分岐命令が追加されていると認識する。
【００３９】
前記同一語尾に接頭語”＿”を付したシンボルに対応し、かつ区分が「参照」であるシンボル情報を検索し、該当するシンボル情報が存在しない場合、実行時に前記命令への間接アドレシングによる分岐が発生しないと判断し、読み込んだ機械語命令列から前記命令を削除する。
若しくは、機械語命令列から間接アドレシング分岐命令を検索し、該当する分岐命令が存在しない場合、実行時に前記命令への間接アドレシングによる分岐が発生しないと判断し、前記命令を削除してもよい。
【００４０】
削除後、当該機械語命令列における以降の機械語命令列を詰め、シンボル情報及び擬似分岐情報に含まれ当該詰めた機械語命令列中の場所を示す相対アドレスを更新する。また、削除された命令に対応して生成されていた命令セット所属情報を削除し、削除された命令の場所を示す間接入口情報を、本来の関数入口及び外部入口を示すよう更新する。
【００４１】
配置部１２３は、前記書き換え及び削除後の各機械語命令列の各部分が配置される絶対アドレスを決定する。このときモード分類部１２５は、命令セット所属情報に基づいて、前記更新後の各機械語命令列において同一命令セットに属する機械語命令からなる部分を命令セット毎に分類し、配置部１２３は、同一命令セットに属すると分類された部分が連続して配置されるように、前記絶対アドレスを決定し、実行形式プログラムを生成する。
【００４２】
外部アドレス解決部１２４は、前記決定された絶対アドレスに基づき、前記更新後の各シンボル情報により表される場所の絶対アドレスを算出し、前記実行形式プログラムにおいて当該場所を参照するアドレスを当該算出された絶対アドレスで置き換えることにより、プロセッサにより実行可能な実行形式プログラムを生成し、実行形式ファイル１３３に記録する。
＜実行形式プログラムの一具体例＞
図５は、連結部１２０が生成する実行形式プログラムの一具体例であり、図２（Ａ）及び（Ｂ）のオブジェクトプログラムをリンクして生成される実行形式プログラムをアセンブラ表記により表した模式図である。実行形式プログラム２１３に含まれる機械語命令列２１４及び機械語命令列２１５は、それぞれオブジェクトプログラム２１１及びオブジェクトプログラム２１２に由来する。
【００４３】
連結部１２０は、シンボル情報及び擬似分岐情報を検索することにより、擬似分岐命令ｃａｌｌｘにより示される場所でシンボル情報”＿０ｇ”が参照されていることを認識し、当該擬似分岐命令の指示により置かれるサブルーチンコール命令の分岐先を”＿０ｇ”であると識別する。
命令セット所属情報を検索することにより、当該擬似分岐命令に従って配置される機械語命令、及びシンボル情報”＿０ｇ”により示される場所に配置される機械語命令が、それぞれＨＤ命令セット及びＨＳ命令セットに属することを識別し、当該擬似分岐命令により示される場所の内容を、選択されている命令セットを変更するＨＤ命令セットのサブルーチンコール命令ｃａｌｌｃに書き換える。
【００４４】
連結部１２０は、シンボル情報”＿０ｇ”及び”＿ｇ”により示される場所が異なっていることから、シンボル情報”＿ｇ”により示される場所に、命令セットを切り替えるための分岐命令が置かれていることを認識し、”＿ｇ”が参照されていることを示すシンボル情報を検索する。”＿ｇ”はｍｏｖ命令で参照されているため当該シンボル情報が存在して発見されるから、前記分岐命令は削除されない。
【００４５】
配置部１２３は、ＨＤ命令とＨＳ命令とがそれぞれ一連となる配置を決定し、外部アドレス解決部１２４は、従来一般に行われている外部アドレス解決処理を実行することにより図５に示した実行形式プログラムを生成する。
＜全体動作＞
次に、フローチャートを参照しながら、翻訳部１１０及び連結部１２０がそれぞれ行う処理の特徴部分を説明する。個々の構成要素が行う処理について既に述べた事項は省略し、動作の連携について主に説明する。
【００４６】
図６は、翻訳部１１０におけるオブジェクト情報生成部１１３が実行するオブジェクト情報生成処理おける特徴部分を示すフローチャートである。
ここでは、命令セット表示行をソースプログラムにおいて特に関数定義の先頭に記述されるものとし、関数入口の定義及び呼び出しについて行われる処理として説明したが、関数入口を外部入口と読み替え、関数呼び出しを外部参照可能なラベルへの分岐と読み替えても全く同様に説明される。
【００４７】
オブジェクト情報生成部１１３は中間コードを一つ取得する（ステップＳ１０１）。
取得された中間コードが関数定義の先頭にあたる場合（ステップＳ１０２：ＹＥＳ）、命令セット所属情報生成部１１６は命令セット表示行に示された命令セットを使用命令セットとして機械語命令列生成部１１４に指示し（ステップＳ１０３）、当該関数入口以降、当該使用命令セットの機械語命令が生成されることを示す命令セット所属情報を生成する（ステップＳ１０４）。モード切替命令追加部１１７は、当該使用命令セットが既定命令セットと異なる場合にのみ（ステップＳ１０５：ＮＯ）命令セットを切り替えるための分岐命令を生成する（ステップＳ１０６）。シンボル情報生成部１１５は関数入口を示すシンボル情報を生成し（ステップＳ１０７）、間接入口情報生成部１１９は間接分岐による場合の関数の入口を示す間接入口情報を生成する（ステップＳ１０８）。
【００４８】
取得された中間コードが関数呼び出しにあたる場合（ステップＳ１０９：ＹＥＳ）、当該関数呼び出しを実行するサブルーチンコール命令のアドレシング方法に応じて、直接アドレシングである場合（ステップＳ１１０：直接）擬似分岐情報を生成し（ステップＳ１１１）、間接アドレシングである場合（ステップＳ１１０：間接）、使用命令セットが既定命令セットなら（ステップＳ１１２：ＹＥＳ）選択されている命令セットを変更しないサブルーチンコール命令を生成し（ステップＳ１１３）、そうでなければ（ステップＳ１１２：ＮＯ）既定命令セットを選択するサブルーチンコール命令を生成する（ステップＳ１１４）。
【００４９】
取得された中間コードがソースプログラムのその他の部分にあたる場合（ステップＳ１０９：ＮＯ）、機械語命令列生成部１１４は当該中間コードを実行する使用命令セットの機械語命令列を生成する（ステップＳ１１５）。
上記処理を全ての中間コードを処理し終えるまで繰り返す（ステップＳ１１６）。
【００５０】
図７は、連結部１２０が実行する連結処理における特徴部分を示すフローチャートである。
連結部１２０は連結すべき全てのオブジェクトファイルを読み込む（ステップＳ２０１）。
分岐命令配置部１２１は、読み込んだ擬似分岐情報を検索し（ステップＳ２０２）、見つかった各擬似分岐情報について（ステップＳ２０３）生成すべきサブルーチンコール命令とその分岐先命令との命令セットが一致する場合（ステップＳ２０５：ＹＥＳ）読み込んだ機械語命令列において当該擬似分岐情報により示される場所を、選択されている命令セットを変更しないサブルーチンコール命令に置換し（ステップＳ２０６）、一致しない場合（ステップＳ２０５：ＮＯ）選択されている命令セットを変更するサブルーチンコール命令に置換する（ステップＳ２０７）。
【００５１】
モード切替命令削除部１２２は、読み込んだシンボル情報から関数入口と異なる場所を示す間接入口情報を検索し（ステップＳ２０８）、検索された各間接入口情報について（ステップＳ２０９）そのシンボルを参照しているシンボル情報を検索し、見つからない場合（ステップＳ２１０：ＮＯ）読み込んだ機械語命令列において当該当該間接入口情報により示される場所に置かれた分岐命令を削除する（ステップＳ２１１）。
【００５２】
モード分類部１２５は、前記変更後の機械語命令列の各部分を命令セット毎に分類し、配置部１２３は、同一命令セットに属すると分類された部分が連続して配置されるように、当該各部分の絶対アドレスを決定し（ステップＳ２１２）、外部アドレス解決部１２４は、当該決定された絶対アドレスに基づいて外部アドレスを解決する。（ステップＳ２１３）。
＜命令セットの他の組み合わせによる生成例＞
図２（Ａ）、（Ｂ）及び図５では、ＨＤ命令セットの呼び出し元関数からＨＳ命令セットの呼び出し先関数を呼び出す場合の例を示した。
【００５３】
命令セットがＨＤ及びＨＳの２種類である場合の、呼び出し元関数及び呼び出し先関数における命令セットの他の組み合わせによる例を次に示す。
図８は、ＨＤ命令セットの呼び出し元関数からＨＤ命令セットの呼び出し先関数を呼び出す場合の例である。同図（Ａ）及び（Ｂ）は図１５（Ａ）及び（Ｂ）のソースプログラムを何れもＨＤ命令セットでコンパイルして得られるオブジェクトプログラム２２１及びオブジェクトプログラム２２２、同図（Ｃ）は、それらをリンクして得られる実行形式プログラム２２３であり、機械語命令列２２４及び機械語命令列２２５は、それぞれオブジェクトプログラム２２１及びオブジェクトプログラム２２２に由来する。
【００５４】
関数ｆ及び関数ｇは何れも既定命令セットであるＨＤ命令セットでコンパイルされるので、命令セットを切り替えるための分岐命令は追加されず、両者の間接入口＿ｆ及び＿ｇはそれぞれ本来の関数入口＿０ｆ及び＿０ｇとなる。
オブジェクトプログラム２２１に生成された擬似分岐情報ｃａｌｌｘに対し、リンク時に、選択されている命令セットを変更しない直接アドレシングサブルーチンコール命令ｃａｌｌが機械語命令列２２４に配置される。
【００５５】
間接アドレシング分岐命令は分岐先命令が既定命令セットＨＤであるとして生成されるので、選択されている命令セットを変更しない間接アドレシングサブルーチンコール命令ｃａｌｌがオブジェクトプログラム２２１に生成される。
図９は、ＨＳ命令セットの呼び出し元関数からＨＤ命令セットの呼び出し先関数を呼び出す場合の例である。同図（Ａ）及び（Ｂ）は図１５（Ａ）及び（Ｂ）のソースプログラムをそれぞれＨＳ命令セット及びＨＤ命令セットでコンパイルして得られるオブジェクトプログラム２３１及びオブジェクトプログラム２３２、同図（Ｃ）は、それらをリンクして得られる実行形式プログラム２３３であり、機械語命令列２３４及び機械語命令列２３５は、それぞれオブジェクトプログラム２３１及びオブジェクトプログラム２３２に由来する。
【００５６】
関数ｆは、既定命令セットと異なるＨＳ命令セットでコンパイルされるので、オブジェクトプログラム２３１に命令セットを切り替えるための分岐命令ｂｒｃが追加され、関数ｆの間接入口＿ｆは当該分岐命令ｂｒｃとなる。ただし、本例では間接入口＿ｆについては参照がないために、当該分岐命令ｂｒｃはリンク時に削除されるものとした。
【００５７】
関数ｇの間接入口＿ｇは本来の関数入口＿０ｇとなる。
オブジェクトプログラム２３１に生成された擬似分岐情報ｃａｌｌｘに対し、リンク時に、選択されている命令セットを変更する直接アドレシングサブルーチンコール命令ｃａｌｌｃが機械語命令列２２４に配置される。
間接アドレシング分岐命令は分岐先命令が既定命令セットＨＤであるとして生成されるので、選択されている命令セットを変更する間接アドレシングサブルーチンコール命令ｃａｌｌｃがオブジェクトプログラム２３１に生成される。
【００５８】
図１０は、ＨＳ命令セットの呼び出し元関数からＨＳ命令セットの呼び出し先関数を呼び出す場合の例である。同図（Ａ）及び（Ｂ）は図１５（Ａ）及び（Ｂ）のソースプログラムを何れもＨＳ命令セットでコンパイルして得られるオブジェクトプログラム２４１及びオブジェクトプログラム２４２、同図（Ｃ）は、それらをリンクして得られる実行形式プログラム２４３であり、機械語命令列２４４及び機械語命令列２４５は、それぞれオブジェクトプログラム２４１及びオブジェクトプログラム２４２に由来する。
【００５９】
関数ｆ及び関数ｇは何れも既定命令セットと異なるＨＳ命令セットでコンパイルされるので、オブジェクトプログラム２４１及びオブジェクトプログラム２４２にそれぞれ命令セットを切り替えるための分岐命令ｂｒｃが追加され、関数ｆの間接入口＿ｆ及び関数ｇの間接入口＿ｇはそれぞれの分岐命令ｂｒｃとなる。ただし、本例では間接入口＿ｆについては参照がないために、オブジェクトプログラム２４１に追加された分岐命令ｂｒｃはリンク時に削除されるものとした。
【００６０】
オブジェクトプログラム２４１に生成された擬似分岐情報ｃａｌｌｘに対し、リンク時に、命令セットを変更しない直接アドレシングサブルーチンコール命令ｃａｌｌが機械語命令列２４４に配置される。
間接アドレシング分岐命令は分岐先命令が既定命令セットＨＤであるとして生成されるので、選択されている命令セットを変更する間接アドレシングサブルーチンコール命令ｃａｌｌｃがオブジェクトプログラム２４１に生成される。
＜まとめ＞
以上説明したように、プログラム変換装置１００によれば、翻訳部１１０はコンパイル時に分岐元及び分岐先の命令セットの異同に依存しない擬似分岐情報を分岐命令の実体に代えて生成し、連結部１２０はリンク時に分岐元及び分岐先の命令セットの異同を判断して適切な分岐命令を生成するので、呼び出し先関数の命令セットが未定であってもコンパイル可能となり、かつ呼び出し先関数が命令セットを変更して再コンパイルされた場合でも当該関数を呼び出す関数呼び出しを含むソースプログラムを再コンパイルする必要がない。
【００６１】
具体的に、呼び出し元関数ｆ及び呼び出し先関数ｇがそれぞれＨＤ命令セット及びＨＳ命令セットでコンパイルした図２の状態と、呼び出し先関数ｇをＨＤ命令セットで再コンパイルした図８の状態とを比較すれば、呼び出し先関数ｇの再コンパイル後、呼び出し元関数ｆに対応するオブジェクトプログラムには何ら変更を加えることなくリンクできることが分かる。このことは他の組み合わせ間の変更においても同様である。
【００６２】
また、プログラム変換装置１００は命令セットの一つを既定命令セットと定め、翻訳部１１０は、既定命令セットでない命令セットに属する分岐先命令に対し、当該命令セットを選択して当該分岐先命令に分岐する既定命令セットに属する分岐命令を追加し、当該追加された分岐命令を本来の分岐先に対する間接入口として示す。
【００６３】
翻訳部１１０は、さらに、間接アドレシングによる分岐命令については、前記擬似分岐情報を生成せず、既定命令セットを選択して本来の分岐先に対して示された間接入口に分岐する分岐命令の実体を生成する。
これにより、間接アドレシングによるサブルーチンコール命令においても命令セットの変更選択を正しく行う機械語命令列が生成される。
＜その他の変形例＞
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）本発明は、実施の形態で説明したステップを含む方法であるとしてもよい。また、これらの方法を、コンピュータシステムを用いて実現するためのコンピュータプログラムであるとしてもよいし、前記プログラムを表すデジタル信号であるとしてもよい。
【００６４】
また、本発明は、前記プログラム又は前記デジタル信号を記録したコンピュータ読取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、半導体メモリ等であるとしてもよい。
また、本発明は、電気通信回線、無線又は有線通信回線、若しくはインターネットに代表されるネットワーク等を経由して伝送される前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【００６５】
また、本発明は、マイクロプロセッサ及びメモリを備えたコンピュータシステムであり、前記メモリは前記プログラムを記憶しており、前記マイクロプロセッサは前記メモリに記憶されている前記プログラムに従って動作することにより、前記方法を実現するとしてもよい。
また、前記プログラム又は前記デジタル信号は、前記記録媒体に記録されて移送され、若しくは、前記ネットワーク等を経由して移送され、独立した他のコンピュータシステムにおいて実施されるとしてもよい。
（２）擬似分岐情報生成部１１８は、前記ソースプログラムにおいて関数の末尾に記述されている関数呼び出し処理に対し、戻りアドレスを記録しない分岐命令の生成を指示する擬似分岐命令ｂｒｘを生成してもよい。
【００６６】
図１１（Ａ）、（Ｂ）は、そのような場合に該当するソースプログラムの一例であり、関数ｇが関数ｆの末尾において呼び出される。
図１２（Ａ）、（Ｂ）は、それぞれ図１１（Ａ）、（Ｂ）のソースプログラムをコンパイルして得られるオブジェクトプログラムであり、関数ｇの呼び出し処理に対し戻りアドレスを記録しない分岐命令の生成を指示する擬似分岐命令ｂｒｘが生成されている。これらをリンクして得られる実行形式プログラム（不図示）では、当該擬似分岐命令ｂｒｘに対し選択されている命令セットを変更し、かつリターンアドレスを記録しない分岐命令ｂｒｃが生成されるので、図１２（Ｂ）の末尾のｒｅｔ命令は、図１２（Ａ）に示した機械語命令を経由することなく、図１２（Ａ）を呼び出した場所へ直接リターンする。
（３）プログラム変換装置１００が対象とするプロセッサはｎ（３≦ｎ）種の命令セットを有するとしてもよい。
【００６７】
図１３は、ｎ種の命令セットを有するプロセッサにより実行される分岐命令の一例であり、命令欄２９１は分岐命令を表すニーモニック、オペランド欄２９２は当該分岐命令が取るオペランド、機能欄２９３は当該分岐命令の機能を表している。これらの分岐命令は全ての命令セットに含まれている。機能欄２９３に示したように、こられの分岐命令は命令セットを選択する。
【００６８】
図１４（Ａ）及び（Ｂ）は、既定命令セットをＭＯＤＥ１命令セットとして、図１５（Ａ）のソースプログラムをそれぞれＭＯＤＥ１命令セット及びＭＯＤＥｎ命令セットでコンパイルして生成されるオブジェクトプログラムをアセンブラ表記により表した模式図である。
プログラム変換装置１００は、この場合も２種の命令セットを有するプロセッサを対象とした場合と同様の効果を発揮する。
（４）分岐命令配置部１２１は、配置部１２３によって決定された機械語命令列各部の絶対アドレスに基づいて、前記擬似分岐情報に対応する実行形式プログラムにおける場所を算出し、当該場所を所定の分岐命令に書き換えてもよい。
【００６９】
また、モード切替命令追加部１１７は、命令セットを切り替えるための分岐命令を実行形式プログラムに追加してもよい。
また、モード切替命令削除部１２２は、当該追加された分岐命令を、実行形式プログラムにおいて削除してもよい。
【００７０】
【発明の効果】
（１）本発明のプログラム変換装置は、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換装置であって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成手段と、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成手段と、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別手段と、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置手段とを備える。
【００７１】
この構成によれば、前記翻訳装置はコンパイル時に命令セットの選択要否を未定と示した擬似分岐情報を分岐命令の実体に代えて生成し、前記連結装置はリンク時に分岐元及び分岐先の命令セットの異同を判断して適切な分岐命令を生成するので、呼び出し先関数の命令セットが未定であってもコンパイル可能となり、かつ呼び出し先関数が命令セットを変更して再コンパイルされた場合でも当該関数を呼び出す関数呼び出しを含むソースプログラムを再コンパイルする必要がない。
（２）前記（１）のプログラム変換装置において、前記分岐命令配置手段は、配置されるべき分岐命令が属する命令セットと前記命令セット識別手段により識別された命令セットとの異同を判定する命令セット異同判定部を有し、両者が異なると判定された場合、前記特定の分岐命令を配置し、両者が一致すると判定された場合、命令セットを選択し直さずに分岐する分岐命令を配置してもよい。
【００７２】
この構成によれば、前記（１）と同様の効果を発揮する。
（３）前記（１）又は（２）のプログラム変換装置は、前記複数種の命令セットのうち一つを既定命令セットとして記憶しており、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加手段と、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成手段とを備え、前記擬似分岐情報生成手段は、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成してもよい。
【００７３】
この構成によれば、前記プログラム変換装置は命令セットの一つを既定命令セットと定め、前記翻訳装置は、既定命令セットでない命令セットに属する分岐先命令に対し、当該命令セットを選択して当該分岐先命令に分岐する既定命令セットに属する分岐命令を追加し、当該追加された分岐命令を本来の分岐先に対する間接入口として示す。この上で、間接アドレシングによる分岐命令については、前記擬似分岐情報を生成せず、既定命令セットを選択し本来の分岐先に対して示された間接入口に分岐する分岐命令の実体を生成する。これにより前記（１）の効果に加えて、間接アドレシングによる分岐命令についても命令セットの選択を正しく行う機械語命令列が生成される。
（４）前記（３）のプログラム変換装置において、前記命令追加手段は、前記ラベルに対応する前記オブジェクトプログラム中の場所における命令が既定命令セットに属するか否かを判断する既定命令セット判定部を有し、当該既定命令セット判定部により否と判断されたラベルについてのみ前記分岐命令を追加し、前記間接入口情報生成手段は、前記分岐命令が追加されなかった場合、前記ラベルと前記ラベルに対応する前記オブジェクトプログラム中の場所とを対応付けて示す間接入口情報を生成してもよい。
【００７４】
この構成によれば、前記（３）と同様の効果を発揮するとともに、間接入口に追加される分岐命令の個数を削減するのでコードサイズの増加が抑制される。
（５）前記（３）又は（４）のプログラム変換装置は、さらに、前記命令追加手段により追加された各分岐命令を識別する分岐命令識別手段と、前記識別された個々の分岐命令について、実行時に当該命令への間接アドレシングによる分岐が発生しないことを判定する間接分岐不在判定手段と、前記分岐が発生しないと判定された場合、前記命令を削除する命令削除手段とを備えてもよい。
【００７５】
この構成によれば、前記（４）と同様の効果を発揮するとともに、コードサイズの増加がさらに抑制される。
（６）前記（５）のプログラム変換装置において、前記間接分岐不在判定手段は、間接アドレシング分岐命令が前記オブジェクトプログラム中に存在しない場合、前記分岐が発生しないと判断してもよい。
（７）前記（５）のプログラム変換装置において、前記間接分岐不在判定手段は、前記分岐命令の場所が前記オブジェクトプログラム中において参照されていない場合、前記分岐が発生しないと判断してもよい。
【００７６】
これらの構成によれば、前記（５）と同様の効果を発揮する。
（８）前記（１）乃至（７）の何れかのプログラム変換装置において、前記ソースプログラムに記述されている外部参照可能なラベルは関数名の宣言を含み、当該ラベルへの制御移行処理は当該関数の呼び出し処理を含んでもよい。
この構成によれば、関数入口に対して前記（１）乃至（７）の何れかと同様の効果が得られるので、特に関数型言語により記述されたソースプログラムに対して有効なプログラム変換装置が実現できる。
（９）前記（８）のプログラム変換装置において、前記擬似分岐情報生成手段は、前記ソースプログラムにおいて関数の末尾以外の部分に記述されている関数呼び出し処理に対し、サブルーチンコール命令を生成すべきことを示す擬似分岐情報を生成し、関数の末尾に記述されている関数呼び出し処理に対し、戻りアドレスを記録しない分岐命令を生成すべきことを示す擬似分岐情報を生成してもよい。
【００７７】
この構成によれば、前記（８）と同様の効果を発揮するとともに、関数の末尾に記述された他の関数呼び出しに対応するリターン処理実行時間を短縮する。
（１０）前記（１）乃至（７）のプログラム変換装置は、前記オブジェクトプログラムに含まれる同一命令セットに属する機械語命令が連続して配置されるようにリンクして前記実行形式プログラムを生成してもよい。
【００７８】
この構成によれば、前記（１）乃至（７）の何れかと同様の効果を発揮するとともに、命令セットによって機械語命令の整列境界が異なる場合であっても、整列境界の違いにより実行形式プログラム中に生じる機械語命令が配置不能な領域を最小限に抑制する。
（１１）本発明のプログラム変換方法は、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換方法であって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成ステップと、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成ステップと、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別ステップと、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置ステップとを含む。
【００７９】
この構成によれば、当該プログラム変換方法は前記（１）と同様の効果を発揮する。
（１２）前記（１１）のプログラム変換方法は、前記複数種の命令セットのうち一つを既定命令セットとして実行され、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成ステップとを備え、前記擬似分岐情報生成ステップは、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成してもよい。
【００８０】
この構成によれば、当該プログラム変換方法は前記（３）と同様の効果を発揮する。
（１３）本発明のプログラムは、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換装置を、コンピュータを用いて実現するためのコンピュータ実行可能なプログラムであって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成ステップと、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成ステップと、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別ステップと、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置ステップとをコンピュータに実行させる。
【００８１】
この構成によれば、当該プログラムは前記（１）と同様の効果を発揮するプログラム変換装置を実現する。
（１４）前記（１３）のプログラムは、前記複数種の命令セットのうち一つを既定命令セットと定めて動作し、前記コンピュータに対し、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成ステップとを実行させ、前記擬似分岐情報生成ステップにおいて、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成させ、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成させてもよい。
【００８２】
この構成によれば、当該プログラムは前記（３）と同様の効果を発揮するプログラム変換装置を実現する。
【図面の簡単な説明】
【図１】プログラム変換装置の構成を示す機能ブロック図である。
【図２】オブジェクトプログラムの内容を示す模式図である。（Ａ）ＨＤ命令セットでコンパイルされたオブジェクトプログラムの例である。（Ｂ）ＨＳ命令セットでコンパイルされたオブジェクトプログラムの例である。
【図３】オブジェクトプログラムに生成される擬似命令の一例である。
【図４】オブジェクトプログラムを表すための具体的なデータ構造の一例である。
（Ａ）全体構成を示す一例である。
（Ｂ）シンボルテーブル部の一例である。
（Ｃ）命令セット所属情報テーブル部の一例である。
（Ｄ）擬似分岐情報テーブル部の一例である。
【図５】実行形式プログラムの一例である。
【図６】翻訳部によるオブジェクト情報生成処理おける特徴部分を示すフローチャートである。
【図７】連結部による連結処理における特徴部分を示すフローチャートである。
【図８】他の命令セットの組み合わせによるプログラム変換例である。
（Ａ）ＨＤ命令セットでコンパイルされたオブジェクトプログラムの例である。
（Ｂ）ＨＤ命令セットでコンパイルされたオブジェクトプログラムの例である。
（Ｃ）両者がリンクされた実行形式プログラムの一例である。
【図９】他の命令セットの組み合わせによるプログラム変換例である。
（Ａ）ＨＳ命令セットでコンパイルされたオブジェクトプログラムの例である。
（Ｂ）ＨＤ命令セットでコンパイルされたオブジェクトプログラムの例である。
（Ｃ）両者がリンクされた実行形式プログラムの一例である。
【図１０】他の命令セットの組み合わせによるプログラム変換例である。
（Ａ）ＨＳ命令セットでコンパイルされたオブジェクトプログラムの例である。
（Ｂ）ＨＳ命令セットでコンパイルされたオブジェクトプログラムの例である。
（Ｃ）両者がリンクされた実行形式プログラムの一例である。
【図１１】（Ａ）及び（Ｂ）関数の末尾において他の関数を呼び出すソースプログラムの一例である。
【図１２】（Ａ）及び（Ｂ）オブジェクトプログラムの内容を示す模式図である。
【図１３】ｎ種類の命令セットを持つ目的プロセッサが有する分岐命令の一例である。
【図１４】オブジェクトファイルの内容を示す模式図である。
（Ａ）既定命令セットでコンパイルされたオブジェクトプログラムの例である。
（Ｂ）他の命令セットでコンパイルされたオブジェクトプログラムの例である。
【図１５】ソースプログラムの一例である。
【図１６】２種類の命令セットを持つ目的プロセッサが有する分岐命令の一例である。
【図１７】（Ａ）及び（Ｂ）従来のオブジェクトプログラムの一例である。
【符号の説明】
１００    プログラム変換装置
１１０    翻訳部
１１１    字句構文解析部
１１２    中間コード生成部
１１３    オブジェクト情報生成部
１１４    機械語命令列生成部
１１５    シンボル情報生成部
１１６    命令セット所属情報生成部
１１７    モード切替命令追加部
１１８    擬似分岐情報生成部
１１９    間接入口情報生成部
１２０    連結部
１２１    分岐命令配置部
１２２    モード切替命令削除部
１２３    配置部
１２４    外部アドレス解決部
１２５    モード分類部
１３１    ソースファイル
１３２    オブジェクトファイル
１３３    実行形式ファイル
１５１    擬似命令欄
１５２    オペランド欄
１５３    機能欄
２１１、２１２  オブジェクトプログラム
２１３    実行形式プログラム
２１４、２１５  機械語命令列
２２１、２２２  オブジェクトプログラム
２２３    実行形式プログラム
２２４、２２５  機械語命令列
２３１、２３２  オブジェクトプログラム
２３３    実行形式プログラム
２３４、２３５  機械語命令列
２４１、２４２  オブジェクトプログラム
２４３    実行形式プログラム
２４４、２４５  機械語命令列
２５０    機械語コード部
２６０    シンボルテーブル部
２６１    シンボル欄
２６２    区分欄
２６３    アドレス欄
２７０    命令セット所属情報テーブル部
２７１    シンボル欄
２７２    命令セット欄
２８０    擬似分岐情報テーブル部
２８１    擬似分岐命令欄
２８２    アドレス欄
２９１    命令欄
２９２    オペランド欄
２９３    機能欄
３５１    命令欄
３５２    オペランド欄
３５３    機能欄
【図１】
0004044756.tif 000002
【図２】
0004044756.tif 000003
【図３】
0004044756.tif 000004
【図４】
0004044756.tif 000005
【図５】
0004044756.tif 000006
【図６】
0004044756.tif 000007
【図７】
0004044756.tif 000008
【図８】
0004044756.tif 000009
【図９】
0004044756.tif 000010
【図１０】
0004044756.tif 000011
【図１１】
0004044756.tif 000012
【図１２】
0004044756.tif 000013
【図１３】
0004044756.tif 000014
【図１４】
0004044756.tif 000015
【図１５】
0004044756.tif 000016
【図１６】
0004044756.tif 000017
【図１７】
0004044756.tif 000018