JP4044756B2 - プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム - Google Patents

プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム Download PDF

Info

Publication number
JP4044756B2
JP4044756B2 JP2001377886A JP2001377886A JP4044756B2 JP 4044756 B2 JP4044756 B2 JP 4044756B2 JP 2001377886 A JP2001377886 A JP 2001377886A JP 2001377886 A JP2001377886 A JP 2001377886A JP 4044756 B2 JP4044756 B2 JP 4044756B2
Authority
JP
Japan
Prior art keywords
instruction
branch
instruction set
program
generated
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.)
Expired - Fee Related
Application number
JP2001377886A
Other languages
English (en)
Other versions
JP2003177924A (ja
Inventor
俊幸 坂田
岳人 瓶子
一 小川
秀一 高山
昌平 道本
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2001377886A priority Critical patent/JP4044756B2/ja
Priority to US10/315,877 priority patent/US7254807B2/en
Priority to CNB021560390A priority patent/CN1194295C/zh
Publication of JP2003177924A publication Critical patent/JP2003177924A/ja
Application granted granted Critical
Publication of JP4044756B2 publication Critical patent/JP4044756B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • G06F9/44542Retargetable

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラムに関し、特に、複数種の命令セットを有するプロセッサを対象とするプログラム変換技術に関する。
【0002】
【従来の技術】
従来、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサが実用化されている。
この種のあるプロセッサは、一例として、バイト境界に整列可能な機械語命令からなるHD命令セットとワード境界にのみ整列可能な機械語命令からなるHS命令セットとを有し、HS命令をHD命令よりも高速に実行する。整列境界の違いのため、HS命令が占めるコードサイズは等価なHD命令が占めるコードサイズよりも大きい。
【0003】
例えば、プログラム全体のコードサイズに占める割合は小さいが高い頻度で実行されるために動作時間に占める割合が大きいルーチンをHS命令で記述し、その他の部分をHD命令で記述してこのプロセッサに実行させれば、プログラムサイズの増加を抑制しつつ実行時間を短縮させることができる。
図15(A)及び(B)は、そのように記述されたソースプログラムの一例であり、C言語で記述された例を示している。両プログラム中に記述された命令セット表示行
#pragma #func#mode#XX (XXはHD又はHSの何れか)
は、後続して記述されるソースプログラムがXXで示される命令セットに属する機械語命令列にコンパイルされるべきことをコンパイラに指示する。
【0004】
図16は、前記プロセッサにより実行される分岐命令の一例であり、命令欄351は分岐命令を表すニーモニック、オペランド欄352は当該分岐命令が取るオペランド、機能欄353は当該分岐命令の機能を表している。これらの分岐命令は全ての命令セットに含まれている。機能欄353に示したように、一部の分岐命令を実行することにより前記命令セットの選択が行われる。
【0005】
図17(A)及び(B)は、従来のコンパイラが図15(A)及び(B)のソースプログラムに対してそれぞれ出力するオブジェクトプログラムをアセンブラ表記により表した模式図である。従来のコンパイラは一般的に、当該アセンブラ表記に対応する機械語命令列、及び当該機械語命令列中の場所を表すシンボル情報として当該オブジェクトプログラムを出力する。当該機械語命令列は、前記命令セット表示行で示された命令セットに属する機械語命令により生成される。
【0006】
従来のコンパイラは、ソースプログラム中に記述された関数呼び出し処理に対しサブルーチンコール命令を生成する。このとき呼び出し元関数及び呼び出し先関数をコンパイルするための命令セットの異同をソースプログラム中に記述された前記命令セット表示行に基づいて判断し、両者が一致する場合、選択されている命令セットを変更しないサブルーチンコール命令"call"を生成し、両者が異なる場合、選択されている命令セットを変更するサブルーチンコール命令"callc"を生成する。
【0007】
図17は両者が異なる場合に、直接アドレシング及び間接アドレシングのそれぞれにより分岐するサブルーチンコール命令が生成される例を示している。
従来のリンケージエディタは、図17(A)及び(B)に示したオブジェクトプログラムをリンクし前記プロセッサが実行可能な実行形式プログラム(図示省略)を生成する。
【0008】
このようにして、従来のコンパイラ及びリンケージエディタは、複数種の命令セットに属する機械語命令からなる実行形式プログラムを生成する。
【0009】
【発明が解決しようとする課題】
しかしながら、上記従来技術のコンパイラ及びリンケージエディタによれば、呼び出し元関数及び呼び出し先関数の命令セットが決定された後でなければ"call"命令及び"callc"命令の何れを生成すべきか決定できないため関数呼び出し処理をコンパイルできないという第1の問題がある。
【0010】
また、呼び出し先関数の命令セットを変更して再コンパイルした場合、当該関数の呼び出し処理に対して既に生成されている"call"命令又は"callc"命令をそれぞれ他方に変更する必要から、当該呼び出し処理を含むソースプログラムをも再コンパイルしなくてはならないという第2の問題がある。
これらの問題は、何れもソフトウェアの開発効率を損なう。
【0011】
さらに、間接アドレシングによる分岐先は実行時に決まるため、間接アドレシングによるサブルーチンコール命令を生成すべき場合、コンパイル及びリンク時点で"call"命令及び"callc"命令の何れを生成すべきか、本来、正しく決定できないという第3の問題がある。
これらの問題は、前述した関数呼び出し処理のみならず、ソースプログラム中に記述されている外部参照可能なラベルへの制御移行処理について、一般に生じる。
【0012】
上記の問題に鑑み、本発明は、分岐先命令の命令セットが未定であってもコンパイル可能で、分岐先命令が命令セットを変更して再コンパイルされた場合でも当該分岐先への分岐処理を記述しているソースプログラムを再コンパイルする必要がなく、間接アドレシングによる分岐命令を含んで正しく動作する機械語命令列を生成するコンパイラ及びリンケージエディタからなるプログラム変換装置の提供を目的とする。
【0013】
【課題を解決するための手段】
(1)上記問題を解決するため、本発明のプログラム変換装置は、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換装置であって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成手段と、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成手段と、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別手段と、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置手段とを備える。
(2)また、前記(1)のプログラム変換装置は、前記複数種の命令セットのうち一つを既定命令セットとして記憶しており、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加手段と、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成手段とを備え、前記擬似分岐情報生成手段は、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成してもよい。
(3)本発明のプログラム変換方法は、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換方法であって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成ステップと、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成ステップと、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別ステップと、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置ステップとを含む。
(4)また、前記(3)のプログラム変換方法は、前記複数種の命令セットのうち一つを既定命令セットとして実行され、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成ステップとを備え、前記擬似分岐情報生成ステップは、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成してもよい。
(5)本発明のプログラムは、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換装置を、コンピュータを用いて実現するためのコンピュータ実行可能なプログラムであって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成ステップと、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成ステップと、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別ステップと、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置ステップとをコンピュータに実行させる。
(6)また、前記(5)のプログラムは、前記複数種の命令セットのうち一つを既定命令セットと定めて動作し、前記コンピュータに対し、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成ステップとを実行させ、前記擬似分岐情報生成ステップにおいて、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成させ、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成させてもよい。
【0014】
【発明の実施の形態】
本実施の形態におけるプログラム変換装置は、複数種の命令セットを有するプロセッサを対象とし、一つ以上のソースプログラムを個々にコンパイルして機械語命令列、命令セット所属情報、擬似分岐情報、及びシンボル情報を含むオブジェクトプログラムを生成するコンパイラと、当該各情報に基づいて当該各機械語命令列をリンクして当該プロセッサが実行可能な実行形式プログラムを生成するリンケージエディタとからなるプログラム変換装置である。
【0015】
当該プロセッサは、前記複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行する。命令セットの選択は特定の分岐命令を実行することにより行われる。
本プログラム変換装置は、次の考え方に従ってソースプログラムをコンパイル及びリンクする。
(1)機械語命令列中に直接アドレシングによる分岐命令を生成すべき場合、コンパイル時に当該命令について命令セットの選択要否が未定であることを示す情報を生成し、リンク時に当該命令と当該命令の分岐先命令とのそれぞれの命令セットの異同を判断して、分岐先命令の命令セットを選択する特定の分岐命令、又は選択されている命令セットを変更しない分岐命令の何れか適切な命令を生成する。
(2)前記複数種の命令セットのうち一つを既定命令セットと定め、分岐命令の分岐先命令に対し、当該分岐先命令が属する命令セットを選択して当該分岐先命令へ分岐する既定命令セットに属する特定の分岐命令を追加する。
(3)機械語命令列中に間接アドレシングによる分岐命令を生成すべき場合、既定命令セットを選択して分岐する特定の間接アドレシング分岐命令を生成し、このとき本来の分岐先に対して前記追加された分岐命令をその分岐先とする。
<全体構成>
図1は、本実施の形態におけるプログラム変換装置の全体構成を示す機能ブロック図である。当該プログラム変換装置100は、翻訳部110及び連結部120からなる。翻訳部110及び連結部120はそれぞれ、コンパイラ及びリンケージエディタである。
【0016】
プログラム変換装置100は、具体的には、プロセッサ、プログラムを記憶しているROM(Read Only Memory)、作業用のRAM(Random Access Memory)、ハードディスク装置等のハードウェアにより実現される。当該プログラム変換装置の各構成要素の機能は、前記プロセッサがROMに記憶されているプログラムを実行することにより実現される。情報の記憶及び前記各構成要素間での受け渡しは、前記RAM及びハードディスク装置を用いて行う。
【0017】
プログラム変換装置100は、前記複数種の命令セットのうち一つを既定命令セットとして、例えばパラメータファイル(不図示)等を介して指定され記憶する。
<翻訳部110の構成>
翻訳部110は、字句構文解析部111、中間コード生成部112、及びオブジェクト情報生成部113から構成され、オブジェクト情報生成部113は、命令セット所属情報生成部116、モード切替命令追加部117、及び擬似分岐情報生成部118を含む機械語命令列生成部114、及び間接入口情報生成部119を含むシンボル情報生成部115から構成される。
【0018】
翻訳部110は、一例としてC言語で記述されたソースプログラムをコンパイルし、一具体例として従来の技術の説明に用いた図15(A)及び(B)のソースプログラムをコンパイルする。
翻訳部110は、一つ以上のソースファイル131に記録されているソースプログラムを読み込み、字句構文解析部111により当該ソースプログラムを字句構文解析し、中間コード生成部112により中間コード列を生成する。中間コードは、ソースプログラムの各文に対応して実行されるべき処理を定義するために用いられる、文よりも小さな実行単位を表すコードであり、ソースプログラムから機械語命令列を生成する処理の便宜上設けられる。字句構文解析部111及び中間コード生成部112が行う処理は、従来のコンパイラによって一般的に実施されている技術に従うものとし、ここでは詳細な説明を省略する。
【0019】
オブジェクト情報生成部113は、前記ソースプログラム及び前記中間コードに従って、機械語命令列、命令セット所属情報、擬似分岐情報、及びシンボル情報を含むオブジェクトプログラムを生成し、各ソースファイルに対応して設けられるオブジェクトファイル132に記録する。
機械語命令列生成部114は、前記ソースプログラムに対し実行されるべき機械語命令列を生成する。
【0020】
命令セット所属情報生成部116は、前記ソースプログラムに記述されている命令セット表示行に対し、当該行に表示された命令セットと次に生成される機械語命令の機械語命令列における場所とを対応付けて示す命令セット所属情報を生成するとともに、当該行以降のソースプログラムを当該命令セットの機械語により生成すべきことを機械語命令列生成部114に指示する。機械語命令列生成部114は、当該指示を受けた後、当該指示された命令セットに属する機械語命令を生成する。
【0021】
モード切替命令追加部117は、前記ソースプログラムに記述されている外部参照可能なラベルに対応する機械語命令列における場所、例えば関数を実行する機械語命令列の先頭(以降、関数入口と記す)について、当該場所に対応して示される命令セットを前記命令セット所属情報から検索し、当該命令セットが検索されない場合はその直前の場所に対応して示される命令セットを検索し、検索された命令セットを当該場所にある機械語命令が属する命令セットであると識別する。
【0022】
当該識別された命令セットが既定命令セットと異なる場合、モード切替命令追加部117は、既定命令セットを選択して当該シンボル情報で表される場所へ分岐する既定命令セットに属する特定の分岐命令を機械語命令列に追加する。
当該分岐命令は、機械語命令列において直前に置かれた命令から継続して実行されない場所に追加すればよく、例えば、当該関数を実行する機械語命令列の先頭命令の直前に生成すればよい。
【0023】
モード切替命令追加部117は、関数入口のみならず、前記ソースプログラムにおいて外部参照可能なラベルに後続して記述されている処理を実行する機械語命令列の先頭(以降、外部入口と記す)について同様処理を行ってもよい。
擬似分岐情報生成部118は、前記ソースプログラム中に記述されている外部参照可能なラベルへの個々の制御移行処理について、生成すべき分岐命令のアドレシングに応じて次の処理を行う。
【0024】
直接アドレシング分岐命令を生成すべき場合、当該分岐命令の配置場所を示す機械語命令列における相対アドレスと当該分岐命令の種類と当該分岐命令が命令セットを選択する必要があるか否かが未定であることとを対応付けて示す擬似分岐情報を生成する。
間接アドレシング分岐命令を生成すべき場合、当該擬似分岐情報を生成せず、後述する間接入口情報により本来の分岐先に対応して示される場所へ既定命令セットを選択して分岐する間接アドレシング分岐命令を生成する。
【0025】
擬似分岐情報生成部118は、ソースプログラム中に記述されている関数呼び出しのみならず、外部参照可能なラベルへ分岐する全ての制御移行処理に対し当該処理を行ってもよい。
機械語命令列生成部114は、当該擬似分岐情報により示される配置場所に、生成されるべき分岐命令と等しい大きさの領域を確保する。
【0026】
シンボル情報生成部115は、関数入口及び外部入口を識別するシンボルとそれらの場所を表す機械語命令列における相対アドレスとを対応付けて示すとともに、当該シンボルと当該場所を参照するアドレスが存在する機械語命令列における場所とを対応付けて示すシンボル情報を生成する。
シンボル情報生成部115は、当該シンボルとして、ソースプログラムに記述された関数名及び外部参照可能なラベル名に例えば”_0”といった接頭語を付加した記号を用いる。
【0027】
間接入口情報生成部119は、関数入口及び外部入口について、モード切替命令追加部117が分岐命令を追加した場合、当該関数入口及び外部入口を識別するシンボルと当該追加された分岐命令の場所とを対応付けて示す間接入口情報を生成し、追加しなかった場合、当該シンボルと当該関数入口及び外部入口自身の場所とを対応付けて示す間接入口情報を生成する。
【0028】
間接入口情報は、具体的には、本来のシンボル情報に含まれる記号の接頭語”_0”を”_”に代えて得られるシンボルと前述した何れかの場所を示す相対アドレスとを対応付けて示すシンボル情報であり、接頭文字の規則性によって本来のシンボル情報を識別する。
命令セット所属情報生成部116は、モード切替命令追加部117が分岐命令を追加した場合、当該追加された分岐命令の場所と既定命令セットとを対応付けて示す命令セット所属情報を生成する。
<オブジェクトプログラムの一具体例>
図2(A)及び(B)は、翻訳部110が生成するオブジェクトプログラムの一具体例である。既定命令セットをHD命令セットとして図15(A)及び(B)のソースプログラムをコンパイルして生成される、それぞれオブジェクトプログラム211及びオブジェクトプログラム212を、アセンブラ表記により表した模式図である。同図では、特に、前記命令セット所属情報及び前記擬似分岐情報をそれぞれ命令セット表示擬似命令及び擬似分岐命令として表記している。オブジェクトプログラムを表すための具体的なデータ構造については後述する。
【0029】
図3は、前記命令セット表示擬似命令、及び擬似分岐命令の一例であり、擬似命令欄151は擬似命令を表すニーモニック、オペランド欄152は当該擬似命令が取るオペランド、機能欄153は当該擬似命令が表す情報を示している。INSTMODEが命令セット表示擬似命令、brx及びcallxが擬似分岐命令である。
【0030】
図15(A)のソースプログラムの各行に対して生成される図2(A)のオブジェクトプログラム211を逐次説明する。
(1)HD命令セットを指示した命令セット表示行に対し、後続して記述されている関数fの関数入口”_0f”以降にHD命令セットに属する機械語命令が置かれることを示す命令セット表示擬似命令INSTMODEが生成される。
(2)関数fの宣言の開始に対し、関数入口”_0f”を示すシンボル情報が生成される。関数入口”_0f”以降に置かれる機械語命令はHD命令セットに属するものであると識別され、当該関数入口に対し命令セットを切り替えるための分岐命令は追加されず、間接入口情報として当該関数入口と同一場所を示すシンボル情報”_f”が生成される。
(3)関数gの呼び出しに対し、関数gの関数入口”_0g”に分岐するサブルーチンコール命令の生成を指示する擬似分岐命令callxが生成される。
(4)関数へのポインタ変数funcへ関数gのアドレス代入及び(*func)の間接呼び出しに対し、関数入口”_0g”に対応して設けられたシンボル情報”_g”で示されるアドレスをレジスタR0に代入するmov命令と、レジスタR0の内容で示されるアドレスに分岐する間接アドレシングによる分岐命令callとが生成される。ここに置かれるべき命令はHD命令セットに属し、間接アドレシングによる分岐先命令もHD命令セットに属するように生成されるから、この命令には選択されている命令セットを変更しないcall命令が用いられる。
【0031】
図15(B)のソースプログラムの各行に対して生成される図2(B)のオブジェクトプログラム212を逐次説明する。
(1)HS命令セットを指示した命令セット表示行に対し、後続して記述されている関数gの関数入口”_0g”以降にHS命令セットに属する機械語命令が置かれることを示す命令セット表示擬似命令INSTMODEが生成される。
(2)関数gの宣言の開始に対し、関数入口”_0g”を示すシンボル情報が生成される。関数入口”_0g”以降に置かれる機械語命令はHS命令セットに属するものであると識別され、選択されている命令セットを変更して”_0g”へ分岐するHD命令セットに属する分岐命令brcが追加され、間接入口情報として当該分岐命令brcの場所を示すシンボル情報”_g”が生成される。
<オブジェクトファイル132の構成>
図4(A)乃至(D)は、前記オブジェクトプログラムを表すための具体的なデータ構造の一例であり、特にオブジェクトファイル132に保持されている前記オブジェクトプログラムの構成を示している。
【0032】
同図(A)は、オブジェクトファイル132の全体構成であり、機械語コード部250、シンボルテーブル部260、命令セット所属情報テーブル部270、擬似分岐情報テーブル部280から構成される。
機械語コード部250は前記機械語命令列を保持し、シンボルテーブル部260は前記シンボル情報を保持し、命令セット所属情報テーブル部270は前記命令セット所属情報を保持し、擬似分岐情報テーブル部280は前記擬似分岐情報を保持している。
【0033】
同図(B)は、シンボルテーブル部260の詳細な構成であり、シンボル欄261は関数入口及び外部入口を識別するシンボルを保持し、区分欄262は定義か参照かを区分する記号を保持し、アドレス欄263は当該区分が定義の場合、当該場所の機械語命令列における相対アドレスを保持し、当該区分が参照の場合、当該場所を参照するアドレスが置かれる機械語命令列中の場所の相対アドレスを保持している。
【0034】
シンボルテーブル部260には、間接入口情報生成部119により生成された間接入口情報に相当するシンボル情報も保持される。
同図(C)は、命令セット所属情報テーブル部270の詳細な構成であり、シンボル欄271は関数入口及び外部入口を識別する記号を保持し、命令セット欄272は当該関数入口及び外部入口以降に置かれた機械語命令が属する命令セットを示す記号を保持している。
【0035】
同図(D)は、擬似分岐情報テーブル部280の詳細な構成であり、擬似分岐命令欄281は擬似分岐命令のニーモニックを保持し、アドレス欄282は分岐命令の配置場所を示す機械語命令列における相対アドレスを保持している。
<連結部120の構成>
連結部120は、分岐命令配置部121、モード切替命令削除部122、モード分類部125を含む配置部123、及び外部アドレス解決部124から構成される。
【0036】
連結部120は、全てのオブジェクトファイル132に記録されているオブジェクトプログラムを読み込み、当該オブジェクトプログラムに含まれる命令セット所属情報、擬似分岐情報、及びシンボル情報に基づいて各機械語命令列をリンクして目的プロセッサが実行可能な実行形式プログラムを生成し、実行形式ファイル133に記録する。
【0037】
分岐命令配置部121は、前記擬似分岐情報により示されるアドレスを保持し区分が「参照」であるシンボル情報を検索し、検索されたシンボル情報と等しいシンボルを保持し区分が「定義」であるシンボル情報をさらに検索し、後者のシンボル情報により示されるアドレスを当該場所に配置される分岐命令の分岐先と認識し、当該分岐先にある命令が属する命令セットを識別する。当該識別された命令セットと、生成すべき分岐命令の命令セットとが異なる場合、読み込んだ機械語命令列における当該場所の内容を、前記識別された命令セットを選択して分岐する当該擬似分岐情報に応じた種類の分岐命令に書き換える。両者が一致する場合、選択されている命令セットを変更せずに分岐する分岐命令に書き換える。
【0038】
モード切替命令削除部122は、同一語尾にそれぞれ接頭語”_0”及び”_”を付したシンボルに対応し、かつ区分が「定義」である前記シンボル情報により示されるアドレスを比較し、両者が異なる場合、接頭語”_”を付されたシンボルに対応するアドレスに、モード切替命令追加部117により分岐命令が追加されていると認識する。
【0039】
前記同一語尾に接頭語”_”を付したシンボルに対応し、かつ区分が「参照」であるシンボル情報を検索し、該当するシンボル情報が存在しない場合、実行時に前記命令への間接アドレシングによる分岐が発生しないと判断し、読み込んだ機械語命令列から前記命令を削除する。
若しくは、機械語命令列から間接アドレシング分岐命令を検索し、該当する分岐命令が存在しない場合、実行時に前記命令への間接アドレシングによる分岐が発生しないと判断し、前記命令を削除してもよい。
【0040】
削除後、当該機械語命令列における以降の機械語命令列を詰め、シンボル情報及び擬似分岐情報に含まれ当該詰めた機械語命令列中の場所を示す相対アドレスを更新する。また、削除された命令に対応して生成されていた命令セット所属情報を削除し、削除された命令の場所を示す間接入口情報を、本来の関数入口及び外部入口を示すよう更新する。
【0041】
配置部123は、前記書き換え及び削除後の各機械語命令列の各部分が配置される絶対アドレスを決定する。このときモード分類部125は、命令セット所属情報に基づいて、前記更新後の各機械語命令列において同一命令セットに属する機械語命令からなる部分を命令セット毎に分類し、配置部123は、同一命令セットに属すると分類された部分が連続して配置されるように、前記絶対アドレスを決定し、実行形式プログラムを生成する。
【0042】
外部アドレス解決部124は、前記決定された絶対アドレスに基づき、前記更新後の各シンボル情報により表される場所の絶対アドレスを算出し、前記実行形式プログラムにおいて当該場所を参照するアドレスを当該算出された絶対アドレスで置き換えることにより、プロセッサにより実行可能な実行形式プログラムを生成し、実行形式ファイル133に記録する。
<実行形式プログラムの一具体例>
図5は、連結部120が生成する実行形式プログラムの一具体例であり、図2(A)及び(B)のオブジェクトプログラムをリンクして生成される実行形式プログラムをアセンブラ表記により表した模式図である。実行形式プログラム213に含まれる機械語命令列214及び機械語命令列215は、それぞれオブジェクトプログラム211及びオブジェクトプログラム212に由来する。
【0043】
連結部120は、シンボル情報及び擬似分岐情報を検索することにより、擬似分岐命令callxにより示される場所でシンボル情報”_0g”が参照されていることを認識し、当該擬似分岐命令の指示により置かれるサブルーチンコール命令の分岐先を”_0g”であると識別する。
命令セット所属情報を検索することにより、当該擬似分岐命令に従って配置される機械語命令、及びシンボル情報”_0g”により示される場所に配置される機械語命令が、それぞれHD命令セット及びHS命令セットに属することを識別し、当該擬似分岐命令により示される場所の内容を、選択されている命令セットを変更するHD命令セットのサブルーチンコール命令callcに書き換える。
【0044】
連結部120は、シンボル情報”_0g”及び”_g”により示される場所が異なっていることから、シンボル情報”_g”により示される場所に、命令セットを切り替えるための分岐命令が置かれていることを認識し、”_g”が参照されていることを示すシンボル情報を検索する。”_g”はmov命令で参照されているため当該シンボル情報が存在して発見されるから、前記分岐命令は削除されない。
【0045】
配置部123は、HD命令とHS命令とがそれぞれ一連となる配置を決定し、外部アドレス解決部124は、従来一般に行われている外部アドレス解決処理を実行することにより図5に示した実行形式プログラムを生成する。
<全体動作>
次に、フローチャートを参照しながら、翻訳部110及び連結部120がそれぞれ行う処理の特徴部分を説明する。個々の構成要素が行う処理について既に述べた事項は省略し、動作の連携について主に説明する。
【0046】
図6は、翻訳部110におけるオブジェクト情報生成部113が実行するオブジェクト情報生成処理おける特徴部分を示すフローチャートである。
ここでは、命令セット表示行をソースプログラムにおいて特に関数定義の先頭に記述されるものとし、関数入口の定義及び呼び出しについて行われる処理として説明したが、関数入口を外部入口と読み替え、関数呼び出しを外部参照可能なラベルへの分岐と読み替えても全く同様に説明される。
【0047】
オブジェクト情報生成部113は中間コードを一つ取得する(ステップS101)。
取得された中間コードが関数定義の先頭にあたる場合(ステップS102:YES)、命令セット所属情報生成部116は命令セット表示行に示された命令セットを使用命令セットとして機械語命令列生成部114に指示し(ステップS103)、当該関数入口以降、当該使用命令セットの機械語命令が生成されることを示す命令セット所属情報を生成する(ステップS104)。モード切替命令追加部117は、当該使用命令セットが既定命令セットと異なる場合にのみ(ステップS105:NO)命令セットを切り替えるための分岐命令を生成する(ステップS106)。シンボル情報生成部115は関数入口を示すシンボル情報を生成し(ステップS107)、間接入口情報生成部119は間接分岐による場合の関数の入口を示す間接入口情報を生成する(ステップS108)。
【0048】
取得された中間コードが関数呼び出しにあたる場合(ステップS109:YES)、当該関数呼び出しを実行するサブルーチンコール命令のアドレシング方法に応じて、直接アドレシングである場合(ステップS110:直接)擬似分岐情報を生成し(ステップS111)、間接アドレシングである場合(ステップS110:間接)、使用命令セットが既定命令セットなら(ステップS112:YES)選択されている命令セットを変更しないサブルーチンコール命令を生成し(ステップS113)、そうでなければ(ステップS112:NO)既定命令セットを選択するサブルーチンコール命令を生成する(ステップS114)。
【0049】
取得された中間コードがソースプログラムのその他の部分にあたる場合(ステップS109:NO)、機械語命令列生成部114は当該中間コードを実行する使用命令セットの機械語命令列を生成する(ステップS115)。
上記処理を全ての中間コードを処理し終えるまで繰り返す(ステップS116)。
【0050】
図7は、連結部120が実行する連結処理における特徴部分を示すフローチャートである。
連結部120は連結すべき全てのオブジェクトファイルを読み込む(ステップS201)。
分岐命令配置部121は、読み込んだ擬似分岐情報を検索し(ステップS202)、見つかった各擬似分岐情報について(ステップS203)生成すべきサブルーチンコール命令とその分岐先命令との命令セットが一致する場合(ステップS205:YES)読み込んだ機械語命令列において当該擬似分岐情報により示される場所を、選択されている命令セットを変更しないサブルーチンコール命令に置換し(ステップS206)、一致しない場合(ステップS205:NO)選択されている命令セットを変更するサブルーチンコール命令に置換する(ステップS207)。
【0051】
モード切替命令削除部122は、読み込んだシンボル情報から関数入口と異なる場所を示す間接入口情報を検索し(ステップS208)、検索された各間接入口情報について(ステップS209)そのシンボルを参照しているシンボル情報を検索し、見つからない場合(ステップS210:NO)読み込んだ機械語命令列において当該当該間接入口情報により示される場所に置かれた分岐命令を削除する(ステップS211)。
【0052】
モード分類部125は、前記変更後の機械語命令列の各部分を命令セット毎に分類し、配置部123は、同一命令セットに属すると分類された部分が連続して配置されるように、当該各部分の絶対アドレスを決定し(ステップS212)、外部アドレス解決部124は、当該決定された絶対アドレスに基づいて外部アドレスを解決する。(ステップS213)。
<命令セットの他の組み合わせによる生成例>
図2(A)、(B)及び図5では、HD命令セットの呼び出し元関数からHS命令セットの呼び出し先関数を呼び出す場合の例を示した。
【0053】
命令セットがHD及びHSの2種類である場合の、呼び出し元関数及び呼び出し先関数における命令セットの他の組み合わせによる例を次に示す。
図8は、HD命令セットの呼び出し元関数からHD命令セットの呼び出し先関数を呼び出す場合の例である。同図(A)及び(B)は図15(A)及び(B)のソースプログラムを何れもHD命令セットでコンパイルして得られるオブジェクトプログラム221及びオブジェクトプログラム222、同図(C)は、それらをリンクして得られる実行形式プログラム223であり、機械語命令列224及び機械語命令列225は、それぞれオブジェクトプログラム221及びオブジェクトプログラム222に由来する。
【0054】
関数f及び関数gは何れも既定命令セットであるHD命令セットでコンパイルされるので、命令セットを切り替えるための分岐命令は追加されず、両者の間接入口_f及び_gはそれぞれ本来の関数入口_0f及び_0gとなる。
オブジェクトプログラム221に生成された擬似分岐情報callxに対し、リンク時に、選択されている命令セットを変更しない直接アドレシングサブルーチンコール命令callが機械語命令列224に配置される。
【0055】
間接アドレシング分岐命令は分岐先命令が既定命令セットHDであるとして生成されるので、選択されている命令セットを変更しない間接アドレシングサブルーチンコール命令callがオブジェクトプログラム221に生成される。
図9は、HS命令セットの呼び出し元関数からHD命令セットの呼び出し先関数を呼び出す場合の例である。同図(A)及び(B)は図15(A)及び(B)のソースプログラムをそれぞれHS命令セット及びHD命令セットでコンパイルして得られるオブジェクトプログラム231及びオブジェクトプログラム232、同図(C)は、それらをリンクして得られる実行形式プログラム233であり、機械語命令列234及び機械語命令列235は、それぞれオブジェクトプログラム231及びオブジェクトプログラム232に由来する。
【0056】
関数fは、既定命令セットと異なるHS命令セットでコンパイルされるので、オブジェクトプログラム231に命令セットを切り替えるための分岐命令brcが追加され、関数fの間接入口_fは当該分岐命令brcとなる。ただし、本例では間接入口_fについては参照がないために、当該分岐命令brcはリンク時に削除されるものとした。
【0057】
関数gの間接入口_gは本来の関数入口_0gとなる。
オブジェクトプログラム231に生成された擬似分岐情報callxに対し、リンク時に、選択されている命令セットを変更する直接アドレシングサブルーチンコール命令callcが機械語命令列224に配置される。
間接アドレシング分岐命令は分岐先命令が既定命令セットHDであるとして生成されるので、選択されている命令セットを変更する間接アドレシングサブルーチンコール命令callcがオブジェクトプログラム231に生成される。
【0058】
図10は、HS命令セットの呼び出し元関数からHS命令セットの呼び出し先関数を呼び出す場合の例である。同図(A)及び(B)は図15(A)及び(B)のソースプログラムを何れもHS命令セットでコンパイルして得られるオブジェクトプログラム241及びオブジェクトプログラム242、同図(C)は、それらをリンクして得られる実行形式プログラム243であり、機械語命令列244及び機械語命令列245は、それぞれオブジェクトプログラム241及びオブジェクトプログラム242に由来する。
【0059】
関数f及び関数gは何れも既定命令セットと異なるHS命令セットでコンパイルされるので、オブジェクトプログラム241及びオブジェクトプログラム242にそれぞれ命令セットを切り替えるための分岐命令brcが追加され、関数fの間接入口_f及び関数gの間接入口_gはそれぞれの分岐命令brcとなる。ただし、本例では間接入口_fについては参照がないために、オブジェクトプログラム241に追加された分岐命令brcはリンク時に削除されるものとした。
【0060】
オブジェクトプログラム241に生成された擬似分岐情報callxに対し、リンク時に、命令セットを変更しない直接アドレシングサブルーチンコール命令callが機械語命令列244に配置される。
間接アドレシング分岐命令は分岐先命令が既定命令セットHDであるとして生成されるので、選択されている命令セットを変更する間接アドレシングサブルーチンコール命令callcがオブジェクトプログラム241に生成される。
<まとめ>
以上説明したように、プログラム変換装置100によれば、翻訳部110はコンパイル時に分岐元及び分岐先の命令セットの異同に依存しない擬似分岐情報を分岐命令の実体に代えて生成し、連結部120はリンク時に分岐元及び分岐先の命令セットの異同を判断して適切な分岐命令を生成するので、呼び出し先関数の命令セットが未定であってもコンパイル可能となり、かつ呼び出し先関数が命令セットを変更して再コンパイルされた場合でも当該関数を呼び出す関数呼び出しを含むソースプログラムを再コンパイルする必要がない。
【0061】
具体的に、呼び出し元関数f及び呼び出し先関数gがそれぞれHD命令セット及びHS命令セットでコンパイルした図2の状態と、呼び出し先関数gをHD命令セットで再コンパイルした図8の状態とを比較すれば、呼び出し先関数gの再コンパイル後、呼び出し元関数fに対応するオブジェクトプログラムには何ら変更を加えることなくリンクできることが分かる。このことは他の組み合わせ間の変更においても同様である。
【0062】
また、プログラム変換装置100は命令セットの一つを既定命令セットと定め、翻訳部110は、既定命令セットでない命令セットに属する分岐先命令に対し、当該命令セットを選択して当該分岐先命令に分岐する既定命令セットに属する分岐命令を追加し、当該追加された分岐命令を本来の分岐先に対する間接入口として示す。
【0063】
翻訳部110は、さらに、間接アドレシングによる分岐命令については、前記擬似分岐情報を生成せず、既定命令セットを選択して本来の分岐先に対して示された間接入口に分岐する分岐命令の実体を生成する。
これにより、間接アドレシングによるサブルーチンコール命令においても命令セットの変更選択を正しく行う機械語命令列が生成される。
<その他の変形例>
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)本発明は、実施の形態で説明したステップを含む方法であるとしてもよい。また、これらの方法を、コンピュータシステムを用いて実現するためのコンピュータプログラムであるとしてもよいし、前記プログラムを表すデジタル信号であるとしてもよい。
【0064】
また、本発明は、前記プログラム又は前記デジタル信号を記録したコンピュータ読取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、半導体メモリ等であるとしてもよい。
また、本発明は、電気通信回線、無線又は有線通信回線、若しくはインターネットに代表されるネットワーク等を経由して伝送される前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【0065】
また、本発明は、マイクロプロセッサ及びメモリを備えたコンピュータシステムであり、前記メモリは前記プログラムを記憶しており、前記マイクロプロセッサは前記メモリに記憶されている前記プログラムに従って動作することにより、前記方法を実現するとしてもよい。
また、前記プログラム又は前記デジタル信号は、前記記録媒体に記録されて移送され、若しくは、前記ネットワーク等を経由して移送され、独立した他のコンピュータシステムにおいて実施されるとしてもよい。
(2)擬似分岐情報生成部118は、前記ソースプログラムにおいて関数の末尾に記述されている関数呼び出し処理に対し、戻りアドレスを記録しない分岐命令の生成を指示する擬似分岐命令brxを生成してもよい。
【0066】
図11(A)、(B)は、そのような場合に該当するソースプログラムの一例であり、関数gが関数fの末尾において呼び出される。
図12(A)、(B)は、それぞれ図11(A)、(B)のソースプログラムをコンパイルして得られるオブジェクトプログラムであり、関数gの呼び出し処理に対し戻りアドレスを記録しない分岐命令の生成を指示する擬似分岐命令brxが生成されている。これらをリンクして得られる実行形式プログラム(不図示)では、当該擬似分岐命令brxに対し選択されている命令セットを変更し、かつリターンアドレスを記録しない分岐命令brcが生成されるので、図12(B)の末尾のret命令は、図12(A)に示した機械語命令を経由することなく、図12(A)を呼び出した場所へ直接リターンする。
(3)プログラム変換装置100が対象とするプロセッサはn(3≦n)種の命令セットを有するとしてもよい。
【0067】
図13は、n種の命令セットを有するプロセッサにより実行される分岐命令の一例であり、命令欄291は分岐命令を表すニーモニック、オペランド欄292は当該分岐命令が取るオペランド、機能欄293は当該分岐命令の機能を表している。これらの分岐命令は全ての命令セットに含まれている。機能欄293に示したように、こられの分岐命令は命令セットを選択する。
【0068】
図14(A)及び(B)は、既定命令セットをMODE1命令セットとして、図15(A)のソースプログラムをそれぞれMODE1命令セット及びMODEn命令セットでコンパイルして生成されるオブジェクトプログラムをアセンブラ表記により表した模式図である。
プログラム変換装置100は、この場合も2種の命令セットを有するプロセッサを対象とした場合と同様の効果を発揮する。
(4)分岐命令配置部121は、配置部123によって決定された機械語命令列各部の絶対アドレスに基づいて、前記擬似分岐情報に対応する実行形式プログラムにおける場所を算出し、当該場所を所定の分岐命令に書き換えてもよい。
【0069】
また、モード切替命令追加部117は、命令セットを切り替えるための分岐命令を実行形式プログラムに追加してもよい。
また、モード切替命令削除部122は、当該追加された分岐命令を、実行形式プログラムにおいて削除してもよい。
【0070】
【発明の効果】
(1)本発明のプログラム変換装置は、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換装置であって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成手段と、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成手段と、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別手段と、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置手段とを備える。
【0071】
この構成によれば、前記翻訳装置はコンパイル時に命令セットの選択要否を未定と示した擬似分岐情報を分岐命令の実体に代えて生成し、前記連結装置はリンク時に分岐元及び分岐先の命令セットの異同を判断して適切な分岐命令を生成するので、呼び出し先関数の命令セットが未定であってもコンパイル可能となり、かつ呼び出し先関数が命令セットを変更して再コンパイルされた場合でも当該関数を呼び出す関数呼び出しを含むソースプログラムを再コンパイルする必要がない。
(2)前記(1)のプログラム変換装置において、前記分岐命令配置手段は、配置されるべき分岐命令が属する命令セットと前記命令セット識別手段により識別された命令セットとの異同を判定する命令セット異同判定部を有し、両者が異なると判定された場合、前記特定の分岐命令を配置し、両者が一致すると判定された場合、命令セットを選択し直さずに分岐する分岐命令を配置してもよい。
【0072】
この構成によれば、前記(1)と同様の効果を発揮する。
(3)前記(1)又は(2)のプログラム変換装置は、前記複数種の命令セットのうち一つを既定命令セットとして記憶しており、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加手段と、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成手段とを備え、前記擬似分岐情報生成手段は、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成してもよい。
【0073】
この構成によれば、前記プログラム変換装置は命令セットの一つを既定命令セットと定め、前記翻訳装置は、既定命令セットでない命令セットに属する分岐先命令に対し、当該命令セットを選択して当該分岐先命令に分岐する既定命令セットに属する分岐命令を追加し、当該追加された分岐命令を本来の分岐先に対する間接入口として示す。この上で、間接アドレシングによる分岐命令については、前記擬似分岐情報を生成せず、既定命令セットを選択し本来の分岐先に対して示された間接入口に分岐する分岐命令の実体を生成する。これにより前記(1)の効果に加えて、間接アドレシングによる分岐命令についても命令セットの選択を正しく行う機械語命令列が生成される。
(4)前記(3)のプログラム変換装置において、前記命令追加手段は、前記ラベルに対応する前記オブジェクトプログラム中の場所における命令が既定命令セットに属するか否かを判断する既定命令セット判定部を有し、当該既定命令セット判定部により否と判断されたラベルについてのみ前記分岐命令を追加し、前記間接入口情報生成手段は、前記分岐命令が追加されなかった場合、前記ラベルと前記ラベルに対応する前記オブジェクトプログラム中の場所とを対応付けて示す間接入口情報を生成してもよい。
【0074】
この構成によれば、前記(3)と同様の効果を発揮するとともに、間接入口に追加される分岐命令の個数を削減するのでコードサイズの増加が抑制される。
(5)前記(3)又は(4)のプログラム変換装置は、さらに、前記命令追加手段により追加された各分岐命令を識別する分岐命令識別手段と、前記識別された個々の分岐命令について、実行時に当該命令への間接アドレシングによる分岐が発生しないことを判定する間接分岐不在判定手段と、前記分岐が発生しないと判定された場合、前記命令を削除する命令削除手段とを備えてもよい。
【0075】
この構成によれば、前記(4)と同様の効果を発揮するとともに、コードサイズの増加がさらに抑制される。
(6)前記(5)のプログラム変換装置において、前記間接分岐不在判定手段は、間接アドレシング分岐命令が前記オブジェクトプログラム中に存在しない場合、前記分岐が発生しないと判断してもよい。
(7)前記(5)のプログラム変換装置において、前記間接分岐不在判定手段は、前記分岐命令の場所が前記オブジェクトプログラム中において参照されていない場合、前記分岐が発生しないと判断してもよい。
【0076】
これらの構成によれば、前記(5)と同様の効果を発揮する。
(8)前記(1)乃至(7)の何れかのプログラム変換装置において、前記ソースプログラムに記述されている外部参照可能なラベルは関数名の宣言を含み、当該ラベルへの制御移行処理は当該関数の呼び出し処理を含んでもよい。
この構成によれば、関数入口に対して前記(1)乃至(7)の何れかと同様の効果が得られるので、特に関数型言語により記述されたソースプログラムに対して有効なプログラム変換装置が実現できる。
(9)前記(8)のプログラム変換装置において、前記擬似分岐情報生成手段は、前記ソースプログラムにおいて関数の末尾以外の部分に記述されている関数呼び出し処理に対し、サブルーチンコール命令を生成すべきことを示す擬似分岐情報を生成し、関数の末尾に記述されている関数呼び出し処理に対し、戻りアドレスを記録しない分岐命令を生成すべきことを示す擬似分岐情報を生成してもよい。
【0077】
この構成によれば、前記(8)と同様の効果を発揮するとともに、関数の末尾に記述された他の関数呼び出しに対応するリターン処理実行時間を短縮する。
(10)前記(1)乃至(7)のプログラム変換装置は、前記オブジェクトプログラムに含まれる同一命令セットに属する機械語命令が連続して配置されるようにリンクして前記実行形式プログラムを生成してもよい。
【0078】
この構成によれば、前記(1)乃至(7)の何れかと同様の効果を発揮するとともに、命令セットによって機械語命令の整列境界が異なる場合であっても、整列境界の違いにより実行形式プログラム中に生じる機械語命令が配置不能な領域を最小限に抑制する。
(11)本発明のプログラム変換方法は、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換方法であって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成ステップと、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成ステップと、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別ステップと、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置ステップとを含む。
【0079】
この構成によれば、当該プログラム変換方法は前記(1)と同様の効果を発揮する。
(12)前記(11)のプログラム変換方法は、前記複数種の命令セットのうち一つを既定命令セットとして実行され、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成ステップとを備え、前記擬似分岐情報生成ステップは、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成してもよい。
【0080】
この構成によれば、当該プログラム変換方法は前記(3)と同様の効果を発揮する。
(13)本発明のプログラムは、複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換装置を、コンピュータを用いて実現するためのコンピュータ実行可能なプログラムであって、前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき分岐命令のオブジェクトプログラムにおける配置場所と、当該分岐命令による命令セットの選択要否が未定であることとを対応付けて示す擬似分岐情報を生成する擬似分岐情報生成ステップと、オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成ステップと、前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別ステップと、当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置ステップとをコンピュータに実行させる。
【0081】
この構成によれば、当該プログラムは前記(1)と同様の効果を発揮するプログラム変換装置を実現する。
(14)前記(13)のプログラムは、前記複数種の命令セットのうち一つを既定命令セットと定めて動作し、前記コンピュータに対し、さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成ステップとを実行させ、前記擬似分岐情報生成ステップにおいて、前記分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成させ、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の間接アドレシング分岐命令を生成させてもよい。
【0082】
この構成によれば、当該プログラムは前記(3)と同様の効果を発揮するプログラム変換装置を実現する。
【図面の簡単な説明】
【図1】プログラム変換装置の構成を示す機能ブロック図である。
【図2】オブジェクトプログラムの内容を示す模式図である。(A)HD命令セットでコンパイルされたオブジェクトプログラムの例である。(B)HS命令セットでコンパイルされたオブジェクトプログラムの例である。
【図3】オブジェクトプログラムに生成される擬似命令の一例である。
【図4】オブジェクトプログラムを表すための具体的なデータ構造の一例である。
(A)全体構成を示す一例である。
(B)シンボルテーブル部の一例である。
(C)命令セット所属情報テーブル部の一例である。
(D)擬似分岐情報テーブル部の一例である。
【図5】実行形式プログラムの一例である。
【図6】翻訳部によるオブジェクト情報生成処理おける特徴部分を示すフローチャートである。
【図7】連結部による連結処理における特徴部分を示すフローチャートである。
【図8】他の命令セットの組み合わせによるプログラム変換例である。
(A)HD命令セットでコンパイルされたオブジェクトプログラムの例である。
(B)HD命令セットでコンパイルされたオブジェクトプログラムの例である。
(C)両者がリンクされた実行形式プログラムの一例である。
【図9】他の命令セットの組み合わせによるプログラム変換例である。
(A)HS命令セットでコンパイルされたオブジェクトプログラムの例である。
(B)HD命令セットでコンパイルされたオブジェクトプログラムの例である。
(C)両者がリンクされた実行形式プログラムの一例である。
【図10】他の命令セットの組み合わせによるプログラム変換例である。
(A)HS命令セットでコンパイルされたオブジェクトプログラムの例である。
(B)HS命令セットでコンパイルされたオブジェクトプログラムの例である。
(C)両者がリンクされた実行形式プログラムの一例である。
【図11】(A)及び(B)関数の末尾において他の関数を呼び出すソースプログラムの一例である。
【図12】(A)及び(B)オブジェクトプログラムの内容を示す模式図である。
【図13】n種類の命令セットを持つ目的プロセッサが有する分岐命令の一例である。
【図14】オブジェクトファイルの内容を示す模式図である。
(A)既定命令セットでコンパイルされたオブジェクトプログラムの例である。
(B)他の命令セットでコンパイルされたオブジェクトプログラムの例である。
【図15】ソースプログラムの一例である。
【図16】2種類の命令セットを持つ目的プロセッサが有する分岐命令の一例である。
【図17】(A)及び(B)従来のオブジェクトプログラムの一例である。
【符号の説明】
100 プログラム変換装置
110 翻訳部
111 字句構文解析部
112 中間コード生成部
113 オブジェクト情報生成部
114 機械語命令列生成部
115 シンボル情報生成部
116 命令セット所属情報生成部
117 モード切替命令追加部
118 擬似分岐情報生成部
119 間接入口情報生成部
120 連結部
121 分岐命令配置部
122 モード切替命令削除部
123 配置部
124 外部アドレス解決部
125 モード分類部
131 ソースファイル
132 オブジェクトファイル
133 実行形式ファイル
151 擬似命令欄
152 オペランド欄
153 機能欄
211、212 オブジェクトプログラム
213 実行形式プログラム
214、215 機械語命令列
221、222 オブジェクトプログラム
223 実行形式プログラム
224、225 機械語命令列
231、232 オブジェクトプログラム
233 実行形式プログラム
234、235 機械語命令列
241、242 オブジェクトプログラム
243 実行形式プログラム
244、245 機械語命令列
250 機械語コード部
260 シンボルテーブル部
261 シンボル欄
262 区分欄
263 アドレス欄
270 命令セット所属情報テーブル部
271 シンボル欄
272 命令セット欄
280 擬似分岐情報テーブル部
281 擬似分岐命令欄
282 アドレス欄
291 命令欄
292 オペランド欄
293 機能欄
351 命令欄
352 オペランド欄
353 機能欄

Claims (14)

  1. 複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、
    命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換装置であって、
    前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき命令セットの選択要否が未定である分岐命令のオブジェクトプログラムにおける配置場所示す擬似分岐情報を生成する擬似分岐情報生成手段と、
    オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成する命令セット所属情報生成手段と、
    前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別手段と、
    当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置手段と
    を備えることを特徴とするプログラム変換装置。
  2. 前記分岐命令配置手段は、
    配置されるべき分岐命令が属する命令セットと前記命令セット識別手段により識別された命令セットとの異同を判定する命令セット異同判定部を有し、
    両者が異なると判定された場合、前記特定の分岐命令を配置し、両者が一致すると判定された場合、命令セットを選択し直さずに分岐する分岐命令を配置する
    ことを特徴とする請求項1に記載のプログラム変換装置。
  3. 前記プログラム変換装置は、
    前記複数種の命令セットのうち一つを既定命令セットとして記憶しており、
    さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットに属する命令であって当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令である既定命令セット分岐命令を、前記オブジェクトプログラムに追加する命令追加手段と、
    当該ラベルと当該既定命令セット分岐命令が追加された場所とを対応付けて示す間接入口情報を生成する間接入口情報生成手段とを備え、
    前記擬似分岐情報生成手段は、前記命令セットの選択要否が未定である分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の分岐命令である間接アドレシング分岐命令を生成する
    ことを特徴とする請求項1又は請求項2に記載のプログラム変換装置。
  4. 前記命令追加手段は、
    前記ラベルに対応する前記オブジェクトプログラム中の場所における命令が既定命令セットに属するか否かを判断する既定命令セット判定部を有し、
    当該既定命令セット判定部により否と判断されたラベルについてのみ前記既定命令セット分岐命令を追加し、
    前記間接入口情報生成手段は、
    前記既定命令セット分岐命令が追加されなかった場合、前記ラベルと前記ラベルに対応する前記オブジェクトプログラム中の場所とを対応付けて示す間接入口情報を生成する
    ことを特徴とする請求項3に記載のプログラム変換装置。
  5. 前記プログラム変換装置は、さらに、
    前記命令追加手段により追加された各既定命令セット分岐命令を識別する分岐命令識別手段と、
    前記識別された個々の既定命令セット分岐命令について、実行時に当該既定命令セット分岐命令への間接アドレシングによる分岐が発生しないことを判定する間接分岐不在判定手段と、
    前記分岐が発生しないと判定された場合、前記既定命令セット分岐命令を削除する命令削除手段とを備える
    ことを特徴とする請求項3又は請求項4に記載のプログラム変換装置。
  6. 前記間接分岐不在判定手段は、
    間接アドレシング分岐命令が前記オブジェクトプログラム中に存在しない場合、前記分岐が発生しないと判断する
    ことを特徴とする請求項5に記載のプログラム変換装置。
  7. 前記間接分岐不在判定手段は、
    前記既定命令セット分岐命令の場所が前記オブジェクトプログラム中において参照されていない場合、前記分岐が発生しないと判断する
    ことを特徴とする請求項5に記載のプログラム変換装置。
  8. 前記ソースプログラムに記述されている外部参照可能なラベルは関数名の宣言を含み、当該ラベルへの制御移行処理は当該関数の呼び出し処理を含む
    ことを特徴とする請求項1乃至請求項7の何れかに記載のプログラム変換装置。
  9. 前記擬似分岐情報生成手段は、
    前記ソースプログラムにおいて関数の末尾以外の部分に記述されている関数呼び出し処理に対し、サブルーチンコール命令を生成すべきことを示す擬似分岐情報を生成し、関数の末尾に記述されている関数呼び出し処理に対し、戻りアドレスを記録しない分岐命令を生成すべきことを示す擬似分岐情報を生成する
    ことを特徴とする請求項8に記載のプログラム変換装置。
  10. 前記プログラム変換装置は、
    前記オブジェクトプログラムに含まれる同一命令セットに属する機械語命令が連続して配置されるようにリンクして前記実行形式プログラムを生成する
    ことを特徴とする請求項1乃至請求項7の何れかに記載のプログラム変換装置。
  11. 複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、
    記憶装置とプロセッサを含むコンピュータが、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを前記記憶装置中に生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換方法であって、
    前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき命令セットの選択要否が未定である分岐命令のオブジェクトプログラムにおける配置場所示す擬似分岐情報を前記コンピュータに含まれるプロセッサが生成し、前記記憶装置中に記憶する擬似分岐情報生成ステップと、
    オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて前記コンピュータに含まれるプロセッサが生成し、前記記憶装置中に記憶する命令セット所属情報生成ステップと、
    前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて前記コンピュータに含まれるプロセッサが識別する命令セット識別ステップと、
    当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を前記コンピュータに含まれるプロセッサが配置する分岐命令配置ステップと
    を含むことを特徴とするプログラム変換方法。
  12. 前記プログラム変換方法は、
    前記複数種の命令セットのうち一つを既定命令セットとして前記記憶装置中に記憶しており
    さらに、前記コンピュータに含まれるプロセッサが、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令である既定命令セット分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、
    当該ラベルと当該既定命令セット分岐命令追加した場所とを対応付けて示す間接入口情報を前記コンピュータに含まれるプロセッサが生成し、前記記憶装置中に記憶する間接入口情報生成ステップとを備え、
    前記擬似分岐情報生成ステップは、
    前記命令セットの選択要否が未定である分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成し、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の分岐命令である間接アドレシング分岐命令を生成するステップを含むものである
    ことを特徴とする請求項11に記載のプログラム変換方法。
  13. 複数種の命令セットを有し、そのうち一つを選択して当該選択された命令セットに従って機械語命令を解釈実行するプロセッサであって、特定の分岐命令を実行することにより何れかの命令セットを選択するプロセッサを対象とし、
    記憶装置とプロセッサを含むコンピュータに、命令セットの指示並びに外部参照可能なラベル及び当該ラベルへの制御移行処理が記述されているソースプログラムをコンパイルして前記指示に応じた命令セットに属する機械語命令を含むオブジェクトプログラムを前記記憶装置中に生成し、当該オブジェクトプログラムをリンクして実行形式プログラムを生成するプログラム変換処理を行わせるためのコンピュータプログラムであって、
    前記ソースプログラム中に記述されている個々の制御移行処理について、当該処理に対して生成されるべき命令セットの選択要否が未定である分岐命令のオブジェクトプログラムにおける配置場所示す擬似分岐情報を生成し、前記記憶装置中に記憶する擬似分岐情報生成ステップと、
    オブジェクトプログラム中に配置される各機械語命令が何れの命令セットに属するかを示す命令セット所属情報を前記ソースプログラム中に記述されている指示に応じて生成し、前記記憶装置中に記憶する命令セット所属情報生成ステップと、
    前記擬似分岐情報により配置場所を示された分岐命令の分岐先となる機械語命令が属する命令セットを前記命令セット所属情報に基づいて識別する命令セット識別ステップと、
    当該配置場所に、前記識別された命令セットを選択して分岐する特定の分岐命令を配置する分岐命令配置ステップと
    前記コンピュータに含まれるプロセッサに実行させることを特徴とするコンピュータプログラム。
  14. 前記コンピュータプログラムは、前記複数種の命令セットのうち一つを既定命令セットとして前記記憶装置中に記憶しており
    さらに、前記ソースプログラム中に記述されている個々の外部参照可能なラベルについて、既定命令セットを選択して当該ラベルに対応する前記オブジェクトプログラム中の場所へ分岐する特定の分岐命令である既定命令セット分岐命令を、前記オブジェクトプログラムに追加する命令追加ステップと、
    当該ラベルと当該分岐命令が追加された場所とを対応付けて示す間接入口情報を前記プロセッサに生成し、前記記憶装置中に記憶する間接入口情報生成ステップとを前記コンピュータに含まれるプロセッサ実行させ、
    前記擬似分岐情報生成ステップ
    前記命令セットの選択要否が未定である分岐命令が直接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成させ、間接アドレシング命令として生成されるべき場合、前記擬似分岐情報を生成せず、既定命令セットを選択して前記制御移行処理の移行先ラベルに対応して前記間接入口情報により示される場所へ分岐する特定の分岐命令である間接アドレシング分岐命令を生成するステップを含むものである
    ことを特徴とする請求項13に記載のコンピュータプログラム。
JP2001377886A 2001-12-11 2001-12-11 プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム Expired - Fee Related JP4044756B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001377886A JP4044756B2 (ja) 2001-12-11 2001-12-11 プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム
US10/315,877 US7254807B2 (en) 2001-12-11 2002-12-10 Program conversion apparatus, program conversion method, and computer program for executing program conversion process
CNB021560390A CN1194295C (zh) 2001-12-11 2002-12-11 程序变换装置及程序变换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001377886A JP4044756B2 (ja) 2001-12-11 2001-12-11 プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム

Publications (2)

Publication Number Publication Date
JP2003177924A JP2003177924A (ja) 2003-06-27
JP4044756B2 true JP4044756B2 (ja) 2008-02-06

Family

ID=19185749

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001377886A Expired - Fee Related JP4044756B2 (ja) 2001-12-11 2001-12-11 プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム

Country Status (3)

Country Link
US (1) US7254807B2 (ja)
JP (1) JP4044756B2 (ja)
CN (1) CN1194295C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8679187B2 (en) 2006-03-20 2014-03-25 Smith & Nephew, Inc. Acetabular cup assembly for multiple bearing materials

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3847672B2 (ja) * 2002-07-03 2006-11-22 松下電器産業株式会社 コンパイラ装置及びコンパイル方法
GB0316531D0 (en) * 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for performing native binding
US20050273776A1 (en) * 2004-06-08 2005-12-08 Intel Corporation Assembler supporting pseudo registers to resolve return address ambiguity
JP2006107338A (ja) * 2004-10-08 2006-04-20 Matsushita Electric Ind Co Ltd プログラム処理装置
JP4712512B2 (ja) * 2005-10-14 2011-06-29 富士通株式会社 プログラム変換プログラム、プログラム変換装置、プログラム変換方法
US9256408B2 (en) * 2012-01-20 2016-02-09 Qualcomm Incorporated Optimizing texture commands for graphics processing unit
WO2017128160A1 (zh) * 2016-01-28 2017-08-03 深圳配天智能技术研究院有限公司 加工复位实现方法、编译器、机器人、数控系统及机床
JP7031930B2 (ja) * 2018-03-19 2022-03-08 Necプラットフォームズ株式会社 プログラム生成部、情報処理装置、プログラム生成方法、及びプログラム
US11334324B2 (en) * 2019-11-08 2022-05-17 Software Ag Systems and/or methods for error-free implementation of non-java program code on special purpose processors
US11748074B2 (en) 2021-05-28 2023-09-05 Software Ag User exit daemon for use with special-purpose processor, mainframe including user exit daemon, and associated methods
CN116501415B (zh) * 2023-06-30 2023-09-22 英诺达(成都)电子科技有限公司 命令执行方法及装置、电子设备、计算机可读存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4325120A (en) * 1978-12-21 1982-04-13 Intel Corporation Data processing system
JP2968289B2 (ja) * 1989-11-08 1999-10-25 株式会社リコー 中央演算処理装置
DE69130495T2 (de) * 1990-06-29 1999-06-24 Digital Equipment Corp., Maynard, Mass. Umwandlung der Befehle von internen Prozessorregistern in I/O-Adressraum
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp., Maynard, Mass. Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
EP0463966B1 (en) * 1990-06-29 1998-11-25 Digital Equipment Corporation High-performance multi-processor having floating point unit and operation method
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
US5644769A (en) * 1993-06-14 1997-07-01 Matsushita Electric Industrial Co., Ltd. System for optimizing program by virtually executing the instruction prior to actual execution of the program to invalidate unnecessary instructions
JP3220055B2 (ja) * 1997-07-17 2001-10-22 松下電器産業株式会社 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ装置。
JPH11338710A (ja) * 1998-05-28 1999-12-10 Toshiba Corp 複数種の命令セットを持つプロセッサのためのコンパイル方法ならびに装置および同方法がプログラムされ記録される記録媒体
US6425069B1 (en) * 1999-03-05 2002-07-23 International Business Machines Corporation Optimization of instruction stream execution that includes a VLIW dispatch group
JP2001202243A (ja) * 1999-04-30 2001-07-27 Hitachi Ltd データ処理装置
US6484312B1 (en) * 1999-06-07 2002-11-19 Microsoft Corporation Inferring operand types within an intermediate language
US6654877B1 (en) * 2000-08-23 2003-11-25 Hewlett-Packard Development Company, L.P. System and method for selectively executing computer code
US6874081B2 (en) * 2001-05-17 2005-03-29 Broadcom Corporation Selection of link and fall-through address using a bit in a branch address for the selection

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8679187B2 (en) 2006-03-20 2014-03-25 Smith & Nephew, Inc. Acetabular cup assembly for multiple bearing materials

Also Published As

Publication number Publication date
CN1425982A (zh) 2003-06-25
US20030135849A1 (en) 2003-07-17
CN1194295C (zh) 2005-03-23
JP2003177924A (ja) 2003-06-27
US7254807B2 (en) 2007-08-07

Similar Documents

Publication Publication Date Title
CN111770113B (zh) 一种执行智能合约的方法、区块链节点和节点设备
US7146606B2 (en) General purpose intermediate representation of software for software development tools
KR100311585B1 (ko) 템플릿오브젝트파일들을최적화하기위한시스템과방법
JP3327818B2 (ja) プログラム変換装置及び記録媒体
JP3190773B2 (ja) 言語処理プログラムのコンパイル処理方法
US20030088860A1 (en) Compiler annotation for binary translation tools
US7299462B2 (en) Relocation format for linking
JP4044756B2 (ja) プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム
US5842021A (en) Optimizer
US20090089767A1 (en) Method and system for implementing a just-in-time compiler
US5960197A (en) Compiler dispatch function for object-oriented C
US6738966B1 (en) Compiling device, computer-readable recording medium on which a compiling program is recorded and a compiling method
US6684394B1 (en) Relocation format for linking with relocation instructions containing operations for combining section data
US6859932B1 (en) Relocation format for linking
US20240134666A1 (en) Hybrid just in time load module compiler with performance optimizations
JPH0926884A (ja) バイナリ操作を必要とするタスク中に必要なフロー情報を使用可能とする方法および装置
US6687899B1 (en) Relocation format for linking
US6704928B1 (en) Relocation format for linking
US20020104078A1 (en) Forming an executable program
JP3266097B2 (ja) 非リエントラントプログラムの自動リエントラント化方法及びシステム
EP0180077B1 (en) A data processing machine for compiling computer programs
JP2002182926A (ja) コンパイル方法及びコンピュータ読み取り可能な記録媒体
KR100345401B1 (ko) 바이너리 프로그램 변환 장치 및 그 방법
Cilio et al. Global program optimization: register allocation of static scalar objects
JPH0561687A (ja) コンパイラの処理方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070706

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070912

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071116

R150 Certificate of patent or registration of utility model

Ref document number: 4044756

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101122

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111122

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121122

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121122

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131122

Year of fee payment: 6

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees