JPH11212804A - 仮想マシン及びプログラム変換装置 - Google Patents
仮想マシン及びプログラム変換装置Info
- Publication number
- JPH11212804A JPH11212804A JP10019242A JP1924298A JPH11212804A JP H11212804 A JPH11212804 A JP H11212804A JP 10019242 A JP10019242 A JP 10019242A JP 1924298 A JP1924298 A JP 1924298A JP H11212804 A JPH11212804 A JP H11212804A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- map
- virtual machine
- byte
- program
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【課題】 多種類の命令を命令語長1バイト命令として
サポートする仮想マシンを提供する。 【解決手段】 マイクロプロセッサ配下でバイトコード
を逐次解読して実行する仮想マシン100は、様々な命
令マップを記憶する命令マップ記憶部110と、前記複
数の命令マップのうち1つを選択する命令マップ選択部
116と、プログラムメモリ131に記憶するバイトコ
ードを読み込む命令読込部112と、命令読込部112
が読み込んだバイトコードを命令マップ選択部116が
選択している命令マップに基づいて解読する命令判別部
111と、命令判別部111の解読結果に基づいて当該
バイトコードを実行する命令実行部120とを備え、命
令判別部111は、解読したバイトコードが命令マップ
切替命令である場合には命令マップ選択部116が選択
している命令マップを切り替える。
サポートする仮想マシンを提供する。 【解決手段】 マイクロプロセッサ配下でバイトコード
を逐次解読して実行する仮想マシン100は、様々な命
令マップを記憶する命令マップ記憶部110と、前記複
数の命令マップのうち1つを選択する命令マップ選択部
116と、プログラムメモリ131に記憶するバイトコ
ードを読み込む命令読込部112と、命令読込部112
が読み込んだバイトコードを命令マップ選択部116が
選択している命令マップに基づいて解読する命令判別部
111と、命令判別部111の解読結果に基づいて当該
バイトコードを実行する命令実行部120とを備え、命
令判別部111は、解読したバイトコードが命令マップ
切替命令である場合には命令マップ選択部116が選択
している命令マップを切り替える。
Description
【0001】
【発明の属する技術分野】本発明は、一つのプログラム
を異なったアーキテクチャのマイクロプロセッサ上で動
作させるための仮想マシン及びプログラムを当該仮想マ
シンに好適なプログラムに変換するプログラム変換装置
に関する。
を異なったアーキテクチャのマイクロプロセッサ上で動
作させるための仮想マシン及びプログラムを当該仮想マ
シンに好適なプログラムに変換するプログラム変換装置
に関する。
【0002】
【従来の技術】近年、インターネットの利用が拡大し、
あるコンピュータ上で開発したプログラムをインターネ
ットを通じて配送し、他のコンピュータ上で実行させた
いという要求が高まってきている。このようなプログラ
ムの流通においては、プログラム開発側のコンピュータ
とプログラム実行側のコンピュータは必ずしも同一の機
種であるとは限らないため、コンピュータ間のアーキテ
クチャの違いを吸収する必要があり、このために仮想マ
シンなる技術が開発されている。
あるコンピュータ上で開発したプログラムをインターネ
ットを通じて配送し、他のコンピュータ上で実行させた
いという要求が高まってきている。このようなプログラ
ムの流通においては、プログラム開発側のコンピュータ
とプログラム実行側のコンピュータは必ずしも同一の機
種であるとは限らないため、コンピュータ間のアーキテ
クチャの違いを吸収する必要があり、このために仮想マ
シンなる技術が開発されている。
【0003】ここで仮想マシンとは、仮想マシンコード
(バイトコード)を逐次解釈してそれぞれのコンピュー
タ上で実行するための制御を行うプログラムをいい、仮
想マシンの命令セットは実行環境となるコンピュータの
アーキテクチャに依存しない。従って、流通するプログ
ラムは、この仮想マシンコードで記述してあれば、又は
仮想マシンコードに翻訳してあれば、様々なコンピュー
タの上で実行可能なものとなる。
(バイトコード)を逐次解釈してそれぞれのコンピュー
タ上で実行するための制御を行うプログラムをいい、仮
想マシンの命令セットは実行環境となるコンピュータの
アーキテクチャに依存しない。従って、流通するプログ
ラムは、この仮想マシンコードで記述してあれば、又は
仮想マシンコードに翻訳してあれば、様々なコンピュー
タの上で実行可能なものとなる。
【0004】例えば、パーソナルコンピュータやワーク
ステーションの分野では、通信回線を通じて配送して他
のコンピュータ上で動作させるプログラムは、Java
Soft社のJavaを用いて開発されるのが一般的
であり、Java言語で開発されたプログラムは、コン
パイラにより仮想マシンの動作を記述するバイトコード
で構成するプログラムに変換され、配送される。なお、
JavaにおけるバイトコードをJavaByteCo
deという。
ステーションの分野では、通信回線を通じて配送して他
のコンピュータ上で動作させるプログラムは、Java
Soft社のJavaを用いて開発されるのが一般的
であり、Java言語で開発されたプログラムは、コン
パイラにより仮想マシンの動作を記述するバイトコード
で構成するプログラムに変換され、配送される。なお、
JavaにおけるバイトコードをJavaByteCo
deという。
【0005】この場合、実行側コンピュータでは、Ja
vaByteCodeを解釈実行するJava仮想マシ
ンが動作している。JavaByteCodeはコンピ
ュータアーキテクチャに依存しないため、実行側コンピ
ュータが、Intel社のx86、Motorola社
のPowerPC、SUN Microsystems
社のSPARC等のどのアーキテクチャに基づくパーソ
ナルコンピュータ或いはワークステーションであって
も、共通の動作を行なう。
vaByteCodeを解釈実行するJava仮想マシ
ンが動作している。JavaByteCodeはコンピ
ュータアーキテクチャに依存しないため、実行側コンピ
ュータが、Intel社のx86、Motorola社
のPowerPC、SUN Microsystems
社のSPARC等のどのアーキテクチャに基づくパーソ
ナルコンピュータ或いはワークステーションであって
も、共通の動作を行なう。
【0006】このJava仮想マシンにおいて実行され
る命令は、1バイトの命令種別と、必要に応じて処理対
象等を特定する複数バイトのパラメータとで構成されて
おり、Java仮想マシンで扱える命令種別は256種
類以下に制限されている。また、Java仮想マシンで
は、整数型データは、4バイト(32ビット)のデータ
として扱われる。
る命令は、1バイトの命令種別と、必要に応じて処理対
象等を特定する複数バイトのパラメータとで構成されて
おり、Java仮想マシンで扱える命令種別は256種
類以下に制限されている。また、Java仮想マシンで
は、整数型データは、4バイト(32ビット)のデータ
として扱われる。
【0007】なお、Javaに関しては、「The J
ava Virtual Machine Speci
fication」(http://java.su
n.com)に詳しく説明されている。
ava Virtual Machine Speci
fication」(http://java.su
n.com)に詳しく説明されている。
【0008】
【発明が解決しようとする課題】ところで、最近、T
V、デジタルビデオ、DVDプレーヤー等の家電分野に
おいても、コンピュータの分野における場合と同様に、
インターネットやIEEE1394規格に基づく配線等
を通じてプログラムを配送し、各家電製品間で協調動作
を行なわせたいという要求が出てきている。
V、デジタルビデオ、DVDプレーヤー等の家電分野に
おいても、コンピュータの分野における場合と同様に、
インターネットやIEEE1394規格に基づく配線等
を通じてプログラムを配送し、各家電製品間で協調動作
を行なわせたいという要求が出てきている。
【0009】この要求に対し、Java仮想マシンを利
用することで対応しようとする場合、以下に示すような
問題がある。まず第1に、利用できる命令種別が少ない
という問題がある。例えば、Intel社のMMX P
entiumチップや、家電製品組み込み用マイコンで
ある日立社のSH−DSPチップのように、マルチメデ
ィア命令、あるいはDSP命令等の画像処理や音声処理
に有用な演算機能を組み込んだマイクロプロセッサが近
年出現してきているが、Java仮想マシンでは、これ
らの命令をサポートしておらず、マルチメディア命令等
を用いたバイトコードプログラムを実行することはでき
ない。
用することで対応しようとする場合、以下に示すような
問題がある。まず第1に、利用できる命令種別が少ない
という問題がある。例えば、Intel社のMMX P
entiumチップや、家電製品組み込み用マイコンで
ある日立社のSH−DSPチップのように、マルチメデ
ィア命令、あるいはDSP命令等の画像処理や音声処理
に有用な演算機能を組み込んだマイクロプロセッサが近
年出現してきているが、Java仮想マシンでは、これ
らの命令をサポートしておらず、マルチメディア命令等
を用いたバイトコードプログラムを実行することはでき
ない。
【0010】このことは、Java仮想マシンが、バイ
トコードのサイズの縮小化等に鑑み、命令種別を1バイ
トで表現できる範囲に限定したことによると考えられ
る。第2の問題として、Java仮想マシンは、整数型
データを4バイトのデータとして扱うため、小さい値の
みを使用するプログラムにおいては、データ格納領域の
無駄が生じるという問題がある。
トコードのサイズの縮小化等に鑑み、命令種別を1バイ
トで表現できる範囲に限定したことによると考えられ
る。第2の問題として、Java仮想マシンは、整数型
データを4バイトのデータとして扱うため、小さい値の
みを使用するプログラムにおいては、データ格納領域の
無駄が生じるという問題がある。
【0011】家電製品の分野では、例えば画像処理プロ
グラムのような、処理対象とするデータの大部分が1バ
イトあるいは2バイトのデータである各種の制御プログ
ラムが多く用いられるため、この第2の問題は非常に重
大な問題といえる。この第2の問題を解決するために、
1バイトの整数型データを処理する命令あるいは2バイ
トの整数型データを処理する命令を命令種別に追加でき
ればよいのであるが、上記第1の問題として指摘したよ
うに、利用できる命令種別は限られているため、この問
題を解決しても他に弊害を及ぼすことになる。
グラムのような、処理対象とするデータの大部分が1バ
イトあるいは2バイトのデータである各種の制御プログ
ラムが多く用いられるため、この第2の問題は非常に重
大な問題といえる。この第2の問題を解決するために、
1バイトの整数型データを処理する命令あるいは2バイ
トの整数型データを処理する命令を命令種別に追加でき
ればよいのであるが、上記第1の問題として指摘したよ
うに、利用できる命令種別は限られているため、この問
題を解決しても他に弊害を及ぼすことになる。
【0012】そこで、本発明はかかる問題点に鑑みてな
されたものであり、様々なデータ長の整数型データを扱
う命令等、多種類の命令を短い命令語長の命令としてサ
ポートする仮想マシンを提供することを第1の目的とす
る。さらに、本発明に係る仮想マシンに対応して、バイ
トコードプログラムサイズを短縮化するためのプログラ
ム変換装置を提供することを第2の目的とする。
されたものであり、様々なデータ長の整数型データを扱
う命令等、多種類の命令を短い命令語長の命令としてサ
ポートする仮想マシンを提供することを第1の目的とす
る。さらに、本発明に係る仮想マシンに対応して、バイ
トコードプログラムサイズを短縮化するためのプログラ
ム変換装置を提供することを第2の目的とする。
【0013】
【課題を解決するための手段】上記課題を解決するため
に本発明に係る仮想マシンは、仮想マシンコードからな
るプログラムを格納する記憶装置にアクセス可能なマイ
クロプロセッサ配下で、仮想マシンコードを逐次解読し
て実行する仮想マシンであって、前記記憶装置を、仮想
マシンコードの複数の値それぞれと命令種別とを対応付
けたテーブルである命令マップを複数記憶する命令マッ
プ記憶手段として機能させ、前記複数の命令マップのう
ち少なくとも2つは、少なくとも1つの1バイトの仮想
マシンコードの値に対して相異なる命令種別を対応付け
ており、前記マイクロプロセッサを、前記命令マップ記
憶手段に記憶している複数の命令マップのうち1つを選
択する命令マップ選択手段と、前記記憶装置から仮想マ
シンコードを読み込む命令読込手段と、前記命令マップ
選択手段により選択している命令マップに基づき、前記
命令読込手段により読み込んだ仮想マシンコードを解読
して当該仮想マシンコードに対応する命令種別で示され
る動作を実行する実行制御手段として機能させることを
特徴とする。
に本発明に係る仮想マシンは、仮想マシンコードからな
るプログラムを格納する記憶装置にアクセス可能なマイ
クロプロセッサ配下で、仮想マシンコードを逐次解読し
て実行する仮想マシンであって、前記記憶装置を、仮想
マシンコードの複数の値それぞれと命令種別とを対応付
けたテーブルである命令マップを複数記憶する命令マッ
プ記憶手段として機能させ、前記複数の命令マップのう
ち少なくとも2つは、少なくとも1つの1バイトの仮想
マシンコードの値に対して相異なる命令種別を対応付け
ており、前記マイクロプロセッサを、前記命令マップ記
憶手段に記憶している複数の命令マップのうち1つを選
択する命令マップ選択手段と、前記記憶装置から仮想マ
シンコードを読み込む命令読込手段と、前記命令マップ
選択手段により選択している命令マップに基づき、前記
命令読込手段により読み込んだ仮想マシンコードを解読
して当該仮想マシンコードに対応する命令種別で示され
る動作を実行する実行制御手段として機能させることを
特徴とする。
【0014】これにより、複数の命令マップの選択が可
能なため、本仮想マシンは多種類の命令を命令語長1バ
イトの命令としてサポートすることになる。従って、そ
れぞれの命令マップで定義されている種々の命令を使用
する様々なバイトコードプログラムを本仮想マシン上で
実行することができる。また、本発明に係るプログラム
変換装置は、上述の仮想マシンであって、複数の前記命
令マップのそれぞれには、前記命令マップ選択手段が選
択する命令マップを所定の命令マップに切り替える旨の
少なくとも1つの命令マップ切替命令が含まれており、
前記命令マップ実行制御手段は、前記仮想マシンコード
が命令マップ切替命令であると解読したときには、当該
命令マップ切替命令に基づいて前記命令マップ選択手段
が選択する命令マップを切り替えることとしたものを対
象とするアセンブラソースプログラム中の命令記述を検
査しその結果に応じて前記アセンブラソースプログラム
に所定の命令記述を加えるプログラム変換装置であっ
て、前記アセンブラソースプログラムを格納する記憶手
段と、前記の複数の命令マップのうち、前記アセンブラ
ソースプログラム中の命令記述が示す動作を実現するた
めの命令が命令語長1バイトの命令として含まれている
1つの命令マップを特定する命令マップ特定手段と、前
記命令マップ特定手段によって特定された命令マップへ
切り替える旨の命令マップ切替命令記述を、前記アセン
ブラソースプログラム中の前記命令記述より先に実行さ
れる部分に挿入する命令マップ切替命令記述挿入手段と
を備えることを特徴とする。
能なため、本仮想マシンは多種類の命令を命令語長1バ
イトの命令としてサポートすることになる。従って、そ
れぞれの命令マップで定義されている種々の命令を使用
する様々なバイトコードプログラムを本仮想マシン上で
実行することができる。また、本発明に係るプログラム
変換装置は、上述の仮想マシンであって、複数の前記命
令マップのそれぞれには、前記命令マップ選択手段が選
択する命令マップを所定の命令マップに切り替える旨の
少なくとも1つの命令マップ切替命令が含まれており、
前記命令マップ実行制御手段は、前記仮想マシンコード
が命令マップ切替命令であると解読したときには、当該
命令マップ切替命令に基づいて前記命令マップ選択手段
が選択する命令マップを切り替えることとしたものを対
象とするアセンブラソースプログラム中の命令記述を検
査しその結果に応じて前記アセンブラソースプログラム
に所定の命令記述を加えるプログラム変換装置であっ
て、前記アセンブラソースプログラムを格納する記憶手
段と、前記の複数の命令マップのうち、前記アセンブラ
ソースプログラム中の命令記述が示す動作を実現するた
めの命令が命令語長1バイトの命令として含まれている
1つの命令マップを特定する命令マップ特定手段と、前
記命令マップ特定手段によって特定された命令マップへ
切り替える旨の命令マップ切替命令記述を、前記アセン
ブラソースプログラム中の前記命令記述より先に実行さ
れる部分に挿入する命令マップ切替命令記述挿入手段と
を備えることを特徴とする。
【0015】これにより、本プログラム変換装置は、ア
センブラソースプログラム中のある命令記述に対して、
当該命令記述をバイトコードに翻訳する段階において短
いバイトコードにすることができるように命令マップ切
替命令の命令記述を挿入するため、結果的にバイトコー
ドプログラムのサイズを短縮し得る。即ち、本プログラ
ム変換装置の出力を受けて、アセンブラソースプログラ
ムを仮想マシンで実行可能なバイトコードプログラムに
翻訳するアセンブラは、アセンブラソースプログラム中
に挿入された命令マップ切替命令の命令記述を参照する
ことにより、どの命令マップに基づいて各命令記述をバ
イトコードに翻訳するかを決定することができ、決定し
た命令マップに基づき最小のバイトコードに翻訳できる
ので、結果的に、バイトコードプログラムのサイズを短
縮することができる。
センブラソースプログラム中のある命令記述に対して、
当該命令記述をバイトコードに翻訳する段階において短
いバイトコードにすることができるように命令マップ切
替命令の命令記述を挿入するため、結果的にバイトコー
ドプログラムのサイズを短縮し得る。即ち、本プログラ
ム変換装置の出力を受けて、アセンブラソースプログラ
ムを仮想マシンで実行可能なバイトコードプログラムに
翻訳するアセンブラは、アセンブラソースプログラム中
に挿入された命令マップ切替命令の命令記述を参照する
ことにより、どの命令マップに基づいて各命令記述をバ
イトコードに翻訳するかを決定することができ、決定し
た命令マップに基づき最小のバイトコードに翻訳できる
ので、結果的に、バイトコードプログラムのサイズを短
縮することができる。
【0016】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を用いて詳細に説明する。 <実施の形態1>以下、本発明の実施の形態1における
仮想マシンについて説明する。 <構成>図1は、本発明の実施の形態1における仮想マ
シンの位置づけに関する概念図である。
て、図面を用いて詳細に説明する。 <実施の形態1>以下、本発明の実施の形態1における
仮想マシンについて説明する。 <構成>図1は、本発明の実施の形態1における仮想マ
シンの位置づけに関する概念図である。
【0017】仮想マシン100は、マイクロプロセッサ
140上でOS141の管理下において、仮想マシンの
命令体系に適合した機械語列で構成されるバイトコード
プログラム130の動作を実現するものであり、一種の
プログラムである。但し、仮想マシン100は、プログ
ラムであるが、その名が示すように、マイクロプロセッ
サやOSをシミュレートしたものとしての特徴を有して
いる。即ち、独自の命令セットをもち、当該命令セット
の命令列からなるバイトコードを逐次解釈実行する。
140上でOS141の管理下において、仮想マシンの
命令体系に適合した機械語列で構成されるバイトコード
プログラム130の動作を実現するものであり、一種の
プログラムである。但し、仮想マシン100は、プログ
ラムであるが、その名が示すように、マイクロプロセッ
サやOSをシミュレートしたものとしての特徴を有して
いる。即ち、独自の命令セットをもち、当該命令セット
の命令列からなるバイトコードを逐次解釈実行する。
【0018】以下、仮想マシンの機能構造について説明
する。図2は、本発明の実施の形態1における仮想マシ
ンの機能ブロック図である。プログラムメモリ131
は、バイトコードプログラムを格納するメモリであり、
データメモリ132は、バイトコードプログラムの処理
対象となるデータを格納するメモリである。
する。図2は、本発明の実施の形態1における仮想マシ
ンの機能ブロック図である。プログラムメモリ131
は、バイトコードプログラムを格納するメモリであり、
データメモリ132は、バイトコードプログラムの処理
対象となるデータを格納するメモリである。
【0019】仮想マシン100は、プログラムメモリ1
31からバイトコードを読み込み解釈してマイクロプロ
セッサ140上で実行するためのプログラムであり、命
令解読部110と命令実行部120とからなる。命令解
読部110は、命令判別部111、命令読込部112、
命令マップ記憶部113、命令種別格納部114、処理
対象格納部115、命令マップ選択部116を有する。
31からバイトコードを読み込み解釈してマイクロプロ
セッサ140上で実行するためのプログラムであり、命
令解読部110と命令実行部120とからなる。命令解
読部110は、命令判別部111、命令読込部112、
命令マップ記憶部113、命令種別格納部114、処理
対象格納部115、命令マップ選択部116を有する。
【0020】命令マップ記憶部113は、後述する8枚
の命令マップを記憶している。命令マップ選択部116
は、命令マップ記憶部113の中のいずれか1つの命令
マップのみを参照可能状態とするよう選択するものであ
り、命令判別部111の指示に従っていずれかの命令マ
ップを選択する。従って、命令判別部111から命令マ
ップ選択部116を介して命令マップ記憶部113を参
照する場合には、命令マップ選択部116が現在選択し
ている1つの命令マップを参照することしかできない。
の命令マップを記憶している。命令マップ選択部116
は、命令マップ記憶部113の中のいずれか1つの命令
マップのみを参照可能状態とするよう選択するものであ
り、命令判別部111の指示に従っていずれかの命令マ
ップを選択する。従って、命令判別部111から命令マ
ップ選択部116を介して命令マップ記憶部113を参
照する場合には、命令マップ選択部116が現在選択し
ている1つの命令マップを参照することしかできない。
【0021】命令読込部112は、プログラムメモリ1
31から1バイトのバイトコードを読み込み命令判別部
111に渡す。命令判別部111は、命令読込部112
から渡されたバイトコードがいかなる命令なのかを、命
令マップ選択部116を介して命令マップ記憶部113
に記憶している命令マップの1つを参照して判別し、命
令に応じて命令種別を命令種別格納部114に格納し、
命令の処理対象となる汎用仮想レジスタを識別するため
のレジスタID等、命令に応じてその処理対象となる値
を当該バイトコードを参照することにより取得して処理
対象格納部115に格納するものである。
31から1バイトのバイトコードを読み込み命令判別部
111に渡す。命令判別部111は、命令読込部112
から渡されたバイトコードがいかなる命令なのかを、命
令マップ選択部116を介して命令マップ記憶部113
に記憶している命令マップの1つを参照して判別し、命
令に応じて命令種別を命令種別格納部114に格納し、
命令の処理対象となる汎用仮想レジスタを識別するため
のレジスタID等、命令に応じてその処理対象となる値
を当該バイトコードを参照することにより取得して処理
対象格納部115に格納するものである。
【0022】但し、命令判別部111は、判別した命令
が、命令マップ切替えのための命令のうちの1つであれ
ば、命令マップ選択部116に、当該命令に応じた命令
マップを選択するように指示をするのみで、命令種別格
納部114又は処理対象格納部115への格納等は行わ
ない。以下、命令マップ切替えのための命令を、命令マ
ップ切替命令という。
が、命令マップ切替えのための命令のうちの1つであれ
ば、命令マップ選択部116に、当該命令に応じた命令
マップを選択するように指示をするのみで、命令種別格
納部114又は処理対象格納部115への格納等は行わ
ない。以下、命令マップ切替えのための命令を、命令マ
ップ切替命令という。
【0023】なお、命令解読部110は、上述の他の読
み出し部や命令解読制御部をも有するが、本発明の主た
る部分ではないため説明を省略する。命令実行部120
は、命令制御部121、仮想演算器122、メモリ制御
部123、汎用仮想レジスタ124を有する。命令制御
部121は、命令種別格納部114と処理対象格納部1
15との内容に従って、仮想演算器122を用いて、汎
用仮想レジスタ124の値を変化させ、また、メモリ制
御部123を用いてデータメモリ132にアクセスす
る。
み出し部や命令解読制御部をも有するが、本発明の主た
る部分ではないため説明を省略する。命令実行部120
は、命令制御部121、仮想演算器122、メモリ制御
部123、汎用仮想レジスタ124を有する。命令制御
部121は、命令種別格納部114と処理対象格納部1
15との内容に従って、仮想演算器122を用いて、汎
用仮想レジスタ124の値を変化させ、また、メモリ制
御部123を用いてデータメモリ132にアクセスす
る。
【0024】汎用仮想レジスタ124は、R0からR3
までの4本あり、処理の対象となる値を格納するのに用
いられる。また、命令実行部中には、前記の汎用仮想レ
ジスタと同様に、浮動小数点データを格納するための汎
用浮動小数仮想レジスタ、マルチメディア命令の処理対
象となる汎用マルチメディア仮想レジスタもそれぞれ4
本存在する。
までの4本あり、処理の対象となる値を格納するのに用
いられる。また、命令実行部中には、前記の汎用仮想レ
ジスタと同様に、浮動小数点データを格納するための汎
用浮動小数仮想レジスタ、マルチメディア命令の処理対
象となる汎用マルチメディア仮想レジスタもそれぞれ4
本存在する。
【0025】ここで、マルチメディア命令は、8バイト
のサイズをもつ汎用マルチメディア仮想レジスタ中の各
2バイトの4つのフィールドをそれぞれ別個に処理対象
とし同時に4つの値に対して演算を施す命令である。例
えば、命令種別格納部114に加算命令である旨の「a
dd」が格納され、処理対象格納部115にレジスタI
Dが0と1のレジスタである旨の「R0,R1」が格納
された場合には、命令制御部121がそれを、R1←R
0+R1として実行する。ここで「←」は値の代入を意
味する。
のサイズをもつ汎用マルチメディア仮想レジスタ中の各
2バイトの4つのフィールドをそれぞれ別個に処理対象
とし同時に4つの値に対して演算を施す命令である。例
えば、命令種別格納部114に加算命令である旨の「a
dd」が格納され、処理対象格納部115にレジスタI
Dが0と1のレジスタである旨の「R0,R1」が格納
された場合には、命令制御部121がそれを、R1←R
0+R1として実行する。ここで「←」は値の代入を意
味する。
【0026】即ち、命令制御部121は、プログラムメ
モリ131に格納されたバイトコードを解読する命令解
読部110の解読結果に基づき、プログラムをマイクロ
プロセッサ140上で実行する。なお、命令実行部12
0は、上述の他の命令実行制御部をも有するが、本発明
の主たる部分ではないため説明を省略する。
モリ131に格納されたバイトコードを解読する命令解
読部110の解読結果に基づき、プログラムをマイクロ
プロセッサ140上で実行する。なお、命令実行部12
0は、上述の他の命令実行制御部をも有するが、本発明
の主たる部分ではないため説明を省略する。
【0027】<命令マップ>以下、命令マップ記憶部1
13が記憶する複数の命令マップについて説明する。命
令マップ記憶部113は、4バイト命令用の命令マッ
プ、1バイト符号付き命令用の命令マップ、1バイト符
号なし命令用の命令マップ、2バイト符号付き命令用の
命令マップ、2バイト符号なし命令用の命令マップ、単
精度浮動小数命令用の命令マップ、倍精度浮動小数命令
用の命令マップ、マルチメディア命令用の命令マップの
合計8つの命令マップを記憶している。
13が記憶する複数の命令マップについて説明する。命
令マップ記憶部113は、4バイト命令用の命令マッ
プ、1バイト符号付き命令用の命令マップ、1バイト符
号なし命令用の命令マップ、2バイト符号付き命令用の
命令マップ、2バイト符号なし命令用の命令マップ、単
精度浮動小数命令用の命令マップ、倍精度浮動小数命令
用の命令マップ、マルチメディア命令用の命令マップの
合計8つの命令マップを記憶している。
【0028】図3及び図4は、4バイト命令用の命令マ
ップの内容のイメージを示す概念図であり、図5及び図
6は、1バイト符号付き命令用の命令マップの内容のイ
メージを示す概念図であり、図7及び図8は、単精度浮
動小数命令用の命令マップの内容のイメージを示す概念
図であり、図9及び図10は、マルチメディア命令用の
命令マップの内容のイメージを示す概念図である。
ップの内容のイメージを示す概念図であり、図5及び図
6は、1バイト符号付き命令用の命令マップの内容のイ
メージを示す概念図であり、図7及び図8は、単精度浮
動小数命令用の命令マップの内容のイメージを示す概念
図であり、図9及び図10は、マルチメディア命令用の
命令マップの内容のイメージを示す概念図である。
【0029】これらの命令マップは、仮想マシン100
の命令セットを示すものであり、横軸に16進数の1の
位を、縦軸に16進数の10の位を取った表形式で示し
てある。図3、図5、図7、図9は1の位が0〜7の命
令を、図4、図6、図8、図10は1の位が8〜fの命
令を示している。図中では各命令につき、ニーモニック
とオペランドを空白で区切って示してあり、オペランド
は1つ、又は「,」で区切られた2つである。
の命令セットを示すものであり、横軸に16進数の1の
位を、縦軸に16進数の10の位を取った表形式で示し
てある。図3、図5、図7、図9は1の位が0〜7の命
令を、図4、図6、図8、図10は1の位が8〜fの命
令を示している。図中では各命令につき、ニーモニック
とオペランドを空白で区切って示してあり、オペランド
は1つ、又は「,」で区切られた2つである。
【0030】実際には命令マップは、バイトコードの値
それぞれに対応する命令種別を表す情報からなる。命令
マップは、2バイトを命令語長とする拡張命令をも含ん
でいるが、図3〜図10には、命令マップ中の一部であ
る1バイトについての部分だけを示している。
それぞれに対応する命令種別を表す情報からなる。命令
マップは、2バイトを命令語長とする拡張命令をも含ん
でいるが、図3〜図10には、命令マップ中の一部であ
る1バイトについての部分だけを示している。
【0031】ここで、拡張命令とは、1バイト目がe0
〜efである命令であり、4バイト命令用の命令マップ
と1バイト符号付き命令用の命令マップと単精度浮動小
数命令用の命令マップとマルチメディア命令用の命令マ
ップとの拡張命令部分については、同一内容であり、拡
張命令には、仮想マシン100で使用可能なすべての命
令が含まれている。
〜efである命令であり、4バイト命令用の命令マップ
と1バイト符号付き命令用の命令マップと単精度浮動小
数命令用の命令マップとマルチメディア命令用の命令マ
ップとの拡張命令部分については、同一内容であり、拡
張命令には、仮想マシン100で使用可能なすべての命
令が含まれている。
【0032】即ち、拡張命令では、すべての演算処理を
表すことができ、4バイト命令用の命令マップは、4バ
イトの整数型データを処理対象とする命令を1バイトの
命令語長の命令としても重複定義したものであり、1バ
イト符号付き命令用の命令マップは、符号付き1バイト
整数型データを処理対象とする命令を1バイトの命令語
長の命令としても重複定義したものであり、単精度浮動
小数用の命令マップは、単精度の浮動小数点型のデータ
を処理対象とする命令を1バイトの命令語長の命令とし
ても重複定義したものであり、マルチメディア命令用の
命令マップは、マルチメディア命令を1バイトの命令語
長の命令としても重複定義したものである。
表すことができ、4バイト命令用の命令マップは、4バ
イトの整数型データを処理対象とする命令を1バイトの
命令語長の命令としても重複定義したものであり、1バ
イト符号付き命令用の命令マップは、符号付き1バイト
整数型データを処理対象とする命令を1バイトの命令語
長の命令としても重複定義したものであり、単精度浮動
小数用の命令マップは、単精度の浮動小数点型のデータ
を処理対象とする命令を1バイトの命令語長の命令とし
ても重複定義したものであり、マルチメディア命令用の
命令マップは、マルチメディア命令を1バイトの命令語
長の命令としても重複定義したものである。
【0033】ここで、命令語長とは、定数値やレジスタ
の識別のためのID等を含まずに、命令種別を特定しう
るに足りるビット数をバイト単位に切り上げたものをい
う。例えば、1バイトの命令語長の命令とは1バイトの
バイトコードの値に対応する命令であり、図3から図1
0に示す命令は、いずれも命令語長1バイトの命令であ
る。
の識別のためのID等を含まずに、命令種別を特定しう
るに足りるビット数をバイト単位に切り上げたものをい
う。例えば、1バイトの命令語長の命令とは1バイトの
バイトコードの値に対応する命令であり、図3から図1
0に示す命令は、いずれも命令語長1バイトの命令であ
る。
【0034】以下、これらの命令マップ中に示した主要
な命令のニーモニックやオペランドについて説明する。
Rn、Rmは、4本の汎用仮想レジスタR0、R1、R
2、R3のうちのいずれかである。Fn、Fmは、4本
の汎用浮動小数仮想レジスタF0、F1、F2、F3の
うちのいずれかである。
な命令のニーモニックやオペランドについて説明する。
Rn、Rmは、4本の汎用仮想レジスタR0、R1、R
2、R3のうちのいずれかである。Fn、Fmは、4本
の汎用浮動小数仮想レジスタF0、F1、F2、F3の
うちのいずれかである。
【0035】Mn、Mmは、4本の汎用マルチメディア
仮想レジスタM0、M1、M2、M3のうちのいずれか
である。PDは、結果レジスタIDであり、このPDを
オペランドに有する命令より前に実行される命令の処理
結果が格納される汎用仮想レジスタを指す。RRは、読
込アドレスであり、読み込み用のアドレスを格納するた
めの専用レジスタに格納されているアドレスを意味す
る。
仮想レジスタM0、M1、M2、M3のうちのいずれか
である。PDは、結果レジスタIDであり、このPDを
オペランドに有する命令より前に実行される命令の処理
結果が格納される汎用仮想レジスタを指す。RRは、読
込アドレスであり、読み込み用のアドレスを格納するた
めの専用レジスタに格納されているアドレスを意味す
る。
【0036】WRは、書込アドレスであり、書き込み用
のアドレスを格納するための専用レジスタに格納されて
いるアドレスを意味する。SPは、メモリ領域中の一部
であって関数内の局所的データが格納される局所的メモ
リ領域にアクセスするために利用できるアドレスであ
る。なお、各局所的データは、SPからの相対アドレス
によって特定可能となる。
のアドレスを格納するための専用レジスタに格納されて
いるアドレスを意味する。SPは、メモリ領域中の一部
であって関数内の局所的データが格納される局所的メモ
リ領域にアクセスするために利用できるアドレスであ
る。なお、各局所的データは、SPからの相対アドレス
によって特定可能となる。
【0037】const(8)等のように文字列(8)
の形式のものは8ビットの定数値であり、offset
(16)等のように文字列(16)の形式のものは16
ビットの定数値であり、addr(32)等のように文
字列(32)の形式のものは32ビットの定数値であ
り、LValID(6)等のように文字列(6)の形式
のものは6ビットのメモリIDである。
の形式のものは8ビットの定数値であり、offset
(16)等のように文字列(16)の形式のものは16
ビットの定数値であり、addr(32)等のように文
字列(32)の形式のものは32ビットの定数値であ
り、LValID(6)等のように文字列(6)の形式
のものは6ビットのメモリIDである。
【0038】const(f)等のように文字列(f)
の形式のものは単精度浮動小数の定数値である。inc
は1増分、inc4は4増分、decは1減算、dec
4は4減算、bandはビット積、borはビット和、
mulは乗算、shl2は4倍演算、movは転送、m
ov4は4バイトの転送、addは加算、subは減
算、cmpは比較、jsrやjmp等はジャンプ命令で
ある。
の形式のものは単精度浮動小数の定数値である。inc
は1増分、inc4は4増分、decは1減算、dec
4は4減算、bandはビット積、borはビット和、
mulは乗算、shl2は4倍演算、movは転送、m
ov4は4バイトの転送、addは加算、subは減
算、cmpは比較、jsrやjmp等はジャンプ命令で
ある。
【0039】addrはメモリ領域中の特定位置を指す
アドレス値を意味し、offsetは、関数内の局所的
データが格納された一部の局所的メモリ領域中の特定位
置を指すためのオフセットアドレスを意味する。また、
各命令マップに共通するf0の命令chg4は、4バイ
ト命令用の命令マップへの切替えのための命令マップ切
替命令であり、f1の命令chg1sは1バイト符号付
き命令用の命令マップへの命令マップ切替命令であり、
f5の命令chgfは、単精度浮動小数命令用の命令マ
ップへの命令マップ切替命令、f7の命令chgmmは
マルチメディア命令用の命令マップへの命令マップ切替
命令である。
アドレス値を意味し、offsetは、関数内の局所的
データが格納された一部の局所的メモリ領域中の特定位
置を指すためのオフセットアドレスを意味する。また、
各命令マップに共通するf0の命令chg4は、4バイ
ト命令用の命令マップへの切替えのための命令マップ切
替命令であり、f1の命令chg1sは1バイト符号付
き命令用の命令マップへの命令マップ切替命令であり、
f5の命令chgfは、単精度浮動小数命令用の命令マ
ップへの命令マップ切替命令、f7の命令chgmmは
マルチメディア命令用の命令マップへの命令マップ切替
命令である。
【0040】また、同様に、chg1uは1バイト符号
なし命令用、chg2sは2バイト符号付き命令用、c
hg2uは2バイト符号なし命令用、chgdは倍精度
浮動小数命令用の命令マップへの命令マップ切替命令で
ある。これらの命令マップ切替命令は、命令マップ選択
部116によって選択される命令マップを切替える意味
をもつ。
なし命令用、chg2sは2バイト符号付き命令用、c
hg2uは2バイト符号なし命令用、chgdは倍精度
浮動小数命令用の命令マップへの命令マップ切替命令で
ある。これらの命令マップ切替命令は、命令マップ選択
部116によって選択される命令マップを切替える意味
をもつ。
【0041】なお、命令マップ選択部116により初期
状態において選択されている命令マップは4バイト命令
用の命令マップである。ここで、初期状態とは、バイト
コードプログラムの実行前の状態をいう。以下、具体例
で説明する。4バイト命令用の命令マップを参照したな
らば、バイトコード00は、汎用仮想レジスタR0を1
増分する命令inc R0に対応するものであるが、マ
ルチメディア命令用の命令マップを参照したならばバイ
トコード00は、8バイトのマルチメディア仮想レジス
タM0の各2バイトのフィールドをそれぞれ1増分する
命令incm M0に対応するものとなる。このように
参照すべく選択した命令マップによって、同一のバイト
コードが異なった意味を持つことになる。
状態において選択されている命令マップは4バイト命令
用の命令マップである。ここで、初期状態とは、バイト
コードプログラムの実行前の状態をいう。以下、具体例
で説明する。4バイト命令用の命令マップを参照したな
らば、バイトコード00は、汎用仮想レジスタR0を1
増分する命令inc R0に対応するものであるが、マ
ルチメディア命令用の命令マップを参照したならばバイ
トコード00は、8バイトのマルチメディア仮想レジス
タM0の各2バイトのフィールドをそれぞれ1増分する
命令incm M0に対応するものとなる。このように
参照すべく選択した命令マップによって、同一のバイト
コードが異なった意味を持つことになる。
【0042】<動作>以下、上述構成を備える仮想マシ
ン100の動作について、説明する。図11は、仮想マ
シン100の動作を示すフローチャートである。命令解
読部110の動作は、同図のフローチャートに示すよう
に、バイトコードの読み込みステップS210と、選択
されている命令マップを参照することによる命令種別判
別ステップS220と、判別した命令種別が命令マップ
切替命令か判断する命令マップ切替命令判断ステップS
230と、命令マップ切替命令判断ステップS230に
より命令マップ切替命令と判断された場合に命令マップ
の選択を切り替えるステップS240と、命令マップ切
替命令判断ステップS230によって命令マップ切替命
令と判断されなかった場合において、命令種別を命令種
別格納部114に格納するステップS250と、命令種
別に応じた制御を行うステップS260とからなる。
ン100の動作について、説明する。図11は、仮想マ
シン100の動作を示すフローチャートである。命令解
読部110の動作は、同図のフローチャートに示すよう
に、バイトコードの読み込みステップS210と、選択
されている命令マップを参照することによる命令種別判
別ステップS220と、判別した命令種別が命令マップ
切替命令か判断する命令マップ切替命令判断ステップS
230と、命令マップ切替命令判断ステップS230に
より命令マップ切替命令と判断された場合に命令マップ
の選択を切り替えるステップS240と、命令マップ切
替命令判断ステップS230によって命令マップ切替命
令と判断されなかった場合において、命令種別を命令種
別格納部114に格納するステップS250と、命令種
別に応じた制御を行うステップS260とからなる。
【0043】ここで、命令種別に応じた制御を行うステ
ップS260は、例えばレジスタ指定ビットのある命令
については、どの汎用仮想レジスタを処理対象とするの
かを判別してレジスタを指定する識別子を処理対象格納
部115に格納する処理や、定数を読み込む必要のある
命令については、定数をプログラムメモリ131から読
み込んで処理対象格納部115に格納する処理等を行
う。
ップS260は、例えばレジスタ指定ビットのある命令
については、どの汎用仮想レジスタを処理対象とするの
かを判別してレジスタを指定する識別子を処理対象格納
部115に格納する処理や、定数を読み込む必要のある
命令については、定数をプログラムメモリ131から読
み込んで処理対象格納部115に格納する処理等を行
う。
【0044】なお、命令マップ切替命令については、ス
テップS250及びステップS260の処理は行われな
いため、命令種別格納部114及び処理対象格納部11
5に値を格納することもなく、命令マップ切替命令につ
いては命令実行部120では実行されない。また、命令
実行部120は、命令解読部110の動作終了後、命令
種別格納部114に格納された値である命令種別に応じ
て、処理対象格納部115に格納された値を処理対象と
して所定の処理を実行する。
テップS250及びステップS260の処理は行われな
いため、命令種別格納部114及び処理対象格納部11
5に値を格納することもなく、命令マップ切替命令につ
いては命令実行部120では実行されない。また、命令
実行部120は、命令解読部110の動作終了後、命令
種別格納部114に格納された値である命令種別に応じ
て、処理対象格納部115に格納された値を処理対象と
して所定の処理を実行する。
【0045】以下、具体的なプログラムを実行した場合
の例に基づいて、仮想マシン100の動作を順を追って
説明する。図12は、仮想マシン100に入力されるバ
イトコードプログラムを示す図である。図12に示すプ
ログラムは、プログラムメモリ131に格納されてい
る。このプログラムは、メモリ領域内の0番地から5バ
イトのデータを16進数での80番地へとコピーするプ
ログラムである。
の例に基づいて、仮想マシン100の動作を順を追って
説明する。図12は、仮想マシン100に入力されるバ
イトコードプログラムを示す図である。図12に示すプ
ログラムは、プログラムメモリ131に格納されてい
る。このプログラムは、メモリ領域内の0番地から5バ
イトのデータを16進数での80番地へとコピーするプ
ログラムである。
【0046】なお、プログラムメモリ131に格納され
ているバイトコードについて、読み易さを考慮し、ここ
では命令形式で表記してある。まず、命令解読部110
は、命令読込部112によりプログラムメモリ131に
格納されているバイトコードを1バイト読み込む(ステ
ップS210)。まず読み込むバイトコードは「30」
である。
ているバイトコードについて、読み易さを考慮し、ここ
では命令形式で表記してある。まず、命令解読部110
は、命令読込部112によりプログラムメモリ131に
格納されているバイトコードを1バイト読み込む(ステ
ップS210)。まず読み込むバイトコードは「30」
である。
【0047】命令判別部111は、命令読込部112か
らバイトコードを取得して、これを命令マップ選択部1
16を介して命令マップ記憶部113に格納されている
命令マップのうちの1つを参照して当該バイトコードが
いかなる命令であるか判別する(ステップS220)。
初期状態では、命令マップ選択部116により選択され
ている命令マップは4バイト命令用の命令マップである
ため、命令判別部111は、4バイト命令用の命令マッ
プに基づき当該バイトコード「30」が1バイト定数を
汎用仮想レジスタへ格納する命令mov const
(8),Rnであると判断し、命令マップ切替命令でな
いため(ステップS230)、命令種別格納部114に
1バイト定数を汎用仮想レジスタへ格納する命令を格納
し(ステップS250)、各命令対応の制御を行う(ス
テップS260)。
らバイトコードを取得して、これを命令マップ選択部1
16を介して命令マップ記憶部113に格納されている
命令マップのうちの1つを参照して当該バイトコードが
いかなる命令であるか判別する(ステップS220)。
初期状態では、命令マップ選択部116により選択され
ている命令マップは4バイト命令用の命令マップである
ため、命令判別部111は、4バイト命令用の命令マッ
プに基づき当該バイトコード「30」が1バイト定数を
汎用仮想レジスタへ格納する命令mov const
(8),Rnであると判断し、命令マップ切替命令でな
いため(ステップS230)、命令種別格納部114に
1バイト定数を汎用仮想レジスタへ格納する命令を格納
し(ステップS250)、各命令対応の制御を行う(ス
テップS260)。
【0048】各命令対応の制御として、命令判別部11
1は、命令読込部112により読み込まれたバイトコー
ド中のレジスタ指定ビットを参照し、当該ビットが仮想
レジスタR0を示していることを判別して処理対象格納
部115に仮想レジスタR0を識別するためのレジスタ
IDを格納し、さらに、プログラムメモリ131から1
バイトの定数「00」を読み込んで、処理対象格納部1
15に格納する。
1は、命令読込部112により読み込まれたバイトコー
ド中のレジスタ指定ビットを参照し、当該ビットが仮想
レジスタR0を示していることを判別して処理対象格納
部115に仮想レジスタR0を識別するためのレジスタ
IDを格納し、さらに、プログラムメモリ131から1
バイトの定数「00」を読み込んで、処理対象格納部1
15に格納する。
【0049】こうして命令解読部110にて1命令の解
読がなされると、その結果を受けて命令実行部120が
命令を実行する。即ち、命令制御部121は、命令種別
格納部114及び処理対象格納部115の内容に従っ
て、命令種別が「1バイト定数を汎用仮想レジスタへ格
納する命令」であり、処理対象が「仮想レジスタR0、
定数00」であることを判断して、仮想演算器122を
介して汎用仮想レジスタ124のうち仮想レジスタR0
に、「00」という定数値を格納する。
読がなされると、その結果を受けて命令実行部120が
命令を実行する。即ち、命令制御部121は、命令種別
格納部114及び処理対象格納部115の内容に従っ
て、命令種別が「1バイト定数を汎用仮想レジスタへ格
納する命令」であり、処理対象が「仮想レジスタR0、
定数00」であることを判断して、仮想演算器122を
介して汎用仮想レジスタ124のうち仮想レジスタR0
に、「00」という定数値を格納する。
【0050】具体的には、命令制御部121は、R0←
0を、マイクロプロセッサ140上で実行する。このよ
うにして仮想マシン100が、mov 0,R0と解釈
してバイトコード「30 00」を実行した後に、命令
解読部110は、命令読込部112により次の1バイト
を読み込む(ステップS210)。こうして読み込んだ
バイトコードは「31」である。
0を、マイクロプロセッサ140上で実行する。このよ
うにして仮想マシン100が、mov 0,R0と解釈
してバイトコード「30 00」を実行した後に、命令
解読部110は、命令読込部112により次の1バイト
を読み込む(ステップS210)。こうして読み込んだ
バイトコードは「31」である。
【0051】命令判別部111は、命令読込部112か
らバイトコード「31」を取得して、命令マップ選択部
116によって選択されている命令マップは、変更され
ていないため4バイト命令用の命令マップを参照して当
該バイトコードがいかなる命令であるか判別する(ステ
ップS220)。4バイト命令用の命令マップに基づく
と「31」も先のバイトコード「30」と同様に、1バ
イト定数を汎用仮想レジスタへ格納する命令mov c
onst(8),Rnであって、命令マップ切替命令で
ないため(ステップS230)、命令種別格納部114
に1バイト定数を汎用仮想レジスタへ格納する命令を格
納し(ステップS250)、各命令対応の制御を行う
(ステップS260)。
らバイトコード「31」を取得して、命令マップ選択部
116によって選択されている命令マップは、変更され
ていないため4バイト命令用の命令マップを参照して当
該バイトコードがいかなる命令であるか判別する(ステ
ップS220)。4バイト命令用の命令マップに基づく
と「31」も先のバイトコード「30」と同様に、1バ
イト定数を汎用仮想レジスタへ格納する命令mov c
onst(8),Rnであって、命令マップ切替命令で
ないため(ステップS230)、命令種別格納部114
に1バイト定数を汎用仮想レジスタへ格納する命令を格
納し(ステップS250)、各命令対応の制御を行う
(ステップS260)。
【0052】各命令対応の制御としては、バイトコード
「31」に対する制御は、上述のバイトコード「30」
対応の処理とほぼ同様であり、処理対象格納部115に
仮想レジスタR1を識別するためのレジスタIDを格納
し、プログラムメモリから1バイトの定数「80」を読
み込んで、処理対象格納部115に格納する。こうして
命令解読部110の処理がなされた後、命令実行部12
0は、R1←80を実行する。
「31」に対する制御は、上述のバイトコード「30」
対応の処理とほぼ同様であり、処理対象格納部115に
仮想レジスタR1を識別するためのレジスタIDを格納
し、プログラムメモリから1バイトの定数「80」を読
み込んで、処理対象格納部115に格納する。こうして
命令解読部110の処理がなされた後、命令実行部12
0は、R1←80を実行する。
【0053】このようにして仮想マシン100が、mo
v 80,R1と解釈してバイトコード「31 80」
を実行した後に、命令解読部110は、命令読込部11
2により次の1バイトである「52」を読み込み(ステ
ップS210)、これを4バイト命令用の命令マップに
基づいて判別し、汎用仮想レジスタの内容の示すメモリ
の内容を汎用仮想レジスタに格納する命令mov4
(Rn),Rmであると判断し(ステップS220)、
この命令に応じて上述したのと同様の処理をし(ステッ
プS250、S260)、命令実行部120は、R2←
[R0]を実行する。ここで、「[R0]」は、R0が
示すアドレスの内容を意味する。
v 80,R1と解釈してバイトコード「31 80」
を実行した後に、命令解読部110は、命令読込部11
2により次の1バイトである「52」を読み込み(ステ
ップS210)、これを4バイト命令用の命令マップに
基づいて判別し、汎用仮想レジスタの内容の示すメモリ
の内容を汎用仮想レジスタに格納する命令mov4
(Rn),Rmであると判断し(ステップS220)、
この命令に応じて上述したのと同様の処理をし(ステッ
プS250、S260)、命令実行部120は、R2←
[R0]を実行する。ここで、「[R0]」は、R0が
示すアドレスの内容を意味する。
【0054】このようにして仮想マシン100は、mo
v4 (R0),R2と解釈してバイトコード「52」
を実行する。これに続いて、仮想マシン100は、4バ
イト命令用の命令マップを参照してバイトコード「6
9」をmov4 Rn,(Rm)と判断して、mov4
R2,(R1)を実行し、バイトコード「04」をi
nc4 Rnと判断して、inc4 R0を実行し、バ
イトコード「05」をinc4 Rnと判断して、in
c4 R1を実行する。
v4 (R0),R2と解釈してバイトコード「52」
を実行する。これに続いて、仮想マシン100は、4バ
イト命令用の命令マップを参照してバイトコード「6
9」をmov4 Rn,(Rm)と判断して、mov4
R2,(R1)を実行し、バイトコード「04」をi
nc4 Rnと判断して、inc4 R0を実行し、バ
イトコード「05」をinc4 Rnと判断して、in
c4 R1を実行する。
【0055】この状態は、メモリ領域の0番地からの4
バイトの内容がメモリ領域の16進数での80番地から
4バイトの内容にコピーされており、仮想レジスタR0
の内容は4であり、仮想レジスタR1の内容は16進数
の84であるという状態である。次に、命令解読部11
0は、命令読込部112により次の1バイトである「f
1」を読み込む(ステップS210)。
バイトの内容がメモリ領域の16進数での80番地から
4バイトの内容にコピーされており、仮想レジスタR0
の内容は4であり、仮想レジスタR1の内容は16進数
の84であるという状態である。次に、命令解読部11
0は、命令読込部112により次の1バイトである「f
1」を読み込む(ステップS210)。
【0056】命令判別部111は、命令読込部112に
より読み込んだ「f1」を4バイト命令用の命令マップ
に基づいて判別し、1バイト符号付き命令用の命令マッ
プへの切り替えを指示する命令マップ切替命令であるこ
とを検知すると(ステップS220、S230)、命令
マップ選択部116に、1バイト符号付き命令用の命令
マップを選択するように指示をする。
より読み込んだ「f1」を4バイト命令用の命令マップ
に基づいて判別し、1バイト符号付き命令用の命令マッ
プへの切り替えを指示する命令マップ切替命令であるこ
とを検知すると(ステップS220、S230)、命令
マップ選択部116に、1バイト符号付き命令用の命令
マップを選択するように指示をする。
【0057】命令判別部111からの指示を受けると命
令マップ選択部116は、現在選択している命令マップ
を、1バイト符号付き命令用の命令マップとなるように
する(ステップS240)。これによって、命令判別部
111から命令マップ選択部116を介して、命令マッ
プ記憶部113に記憶する命令マップを参照する場合に
は、1バイト符号付き命令用の命令マップが参照される
ことになる。
令マップ選択部116は、現在選択している命令マップ
を、1バイト符号付き命令用の命令マップとなるように
する(ステップS240)。これによって、命令判別部
111から命令マップ選択部116を介して、命令マッ
プ記憶部113に記憶する命令マップを参照する場合に
は、1バイト符号付き命令用の命令マップが参照される
ことになる。
【0058】これに続いて命令解読部110は、命令読
込部112により次の1バイトである「52」を読み込
み(ステップS210)、これを命令マップ選択部11
6を介して命令マップ記憶部113に格納されている1
バイト符号付き命令用の命令マップに基づいて判別し、
汎用仮想レジスタの内容の示すメモリの内容を1バイト
分だけ汎用仮想レジスタに格納する命令mov1s
(Rn),Rmであると判断し(ステップS220)、
命令マップ切替命令でないため(ステップS230)、
命令種別格納部114に、汎用仮想レジスタの内容の示
すメモリの内容を1バイト分だけ汎用仮想レジスタに格
納する命令を格納し(ステップS250)、各命令対応
の制御を行う(ステップS260)。
込部112により次の1バイトである「52」を読み込
み(ステップS210)、これを命令マップ選択部11
6を介して命令マップ記憶部113に格納されている1
バイト符号付き命令用の命令マップに基づいて判別し、
汎用仮想レジスタの内容の示すメモリの内容を1バイト
分だけ汎用仮想レジスタに格納する命令mov1s
(Rn),Rmであると判断し(ステップS220)、
命令マップ切替命令でないため(ステップS230)、
命令種別格納部114に、汎用仮想レジスタの内容の示
すメモリの内容を1バイト分だけ汎用仮想レジスタに格
納する命令を格納し(ステップS250)、各命令対応
の制御を行う(ステップS260)。
【0059】各命令対応の制御として、命令判別部11
1は、命令読込部112により読み込まれたバイトコー
ド中のレジスタ指定ビットを参照し、当該ビットが仮想
レジスタR0と仮想レジスタR2とを示していることを
判別して処理対象格納部115に仮想レジスタR0を識
別するためのレジスタIDと仮想レジスタR2を識別す
るためのレジスタIDとを格納する。
1は、命令読込部112により読み込まれたバイトコー
ド中のレジスタ指定ビットを参照し、当該ビットが仮想
レジスタR0と仮想レジスタR2とを示していることを
判別して処理対象格納部115に仮想レジスタR0を識
別するためのレジスタIDと仮想レジスタR2を識別す
るためのレジスタIDとを格納する。
【0060】こうして命令解読部110にて1命令の解
読がなされると、その結果を受けて命令実行部120が
命令を実行する。即ち、命令制御部121は、命令種別
格納部114及び処理対象格納部115の内容に従っ
て、命令種別が「汎用仮想レジスタの内容の示すメモリ
の内容を1バイト分だけ汎用仮想レジスタに格納する命
令」であり、処理対象が「仮想レジスタR0、仮想レジ
スタR2」であることを判断して、メモリ制御部123
及び仮想演算器122を介して汎用仮想レジスタ124
のうち仮想レジスタR0の指し示すアドレスの内容を1
バイト分だけ汎用仮想レジスタ124のうち仮想レジス
タR2に格納する。
読がなされると、その結果を受けて命令実行部120が
命令を実行する。即ち、命令制御部121は、命令種別
格納部114及び処理対象格納部115の内容に従っ
て、命令種別が「汎用仮想レジスタの内容の示すメモリ
の内容を1バイト分だけ汎用仮想レジスタに格納する命
令」であり、処理対象が「仮想レジスタR0、仮想レジ
スタR2」であることを判断して、メモリ制御部123
及び仮想演算器122を介して汎用仮想レジスタ124
のうち仮想レジスタR0の指し示すアドレスの内容を1
バイト分だけ汎用仮想レジスタ124のうち仮想レジス
タR2に格納する。
【0061】具体的には、命令制御部121は、R2←
[R1].Bを、マイクロプロセッサ140上で実行す
る。ここで、「[R1].B」は、R1の示すアドレス
の1バイトの内容を意味する。このようにして仮想マシ
ン100が、mov1s (R0),R2と解釈してバ
イトコード「52」を実行した後に、命令解読部110
は、命令読込部112により次の1バイト「69」を読
み込む(ステップS210)。
[R1].Bを、マイクロプロセッサ140上で実行す
る。ここで、「[R1].B」は、R1の示すアドレス
の1バイトの内容を意味する。このようにして仮想マシ
ン100が、mov1s (R0),R2と解釈してバ
イトコード「52」を実行した後に、命令解読部110
は、命令読込部112により次の1バイト「69」を読
み込む(ステップS210)。
【0062】命令判別部111は、1バイト符号付き命
令用の命令マップを参照することにより、バイトコード
「69」をmov1s Rn,(Rm)と判断する。そ
の結果として命令制御部121によって、[R1].B
←R2がマイクロプロセッサ140上で実行され、mo
v1s R2,(R1)の動作がなされる。これによっ
て、メモリ領域中の4番地からの1バイトの内容が、メ
モリ領域中の16進数で84番地からの1バイトにコピ
ーされ、図12に示すプログラムの実行を終了する。
令用の命令マップを参照することにより、バイトコード
「69」をmov1s Rn,(Rm)と判断する。そ
の結果として命令制御部121によって、[R1].B
←R2がマイクロプロセッサ140上で実行され、mo
v1s R2,(R1)の動作がなされる。これによっ
て、メモリ領域中の4番地からの1バイトの内容が、メ
モリ領域中の16進数で84番地からの1バイトにコピ
ーされ、図12に示すプログラムの実行を終了する。
【0063】このように、仮想マシン100は、同一の
バイトコードを選択されている命令マップに応じて違う
意味に解釈して実行するという特徴を有し、このため図
12に示すプログラム中のバイトコード「52」は、バ
イトコード「f1」より前においては、4バイト命令用
の命令マップが選択されているためmov4 (R
0),R2と解釈され実行されるが、バイトコード「f
1」以後では、1バイト符号付き命令用の命令マップが
選択されているためmov1s (R0),R2と解釈
され実行される。同様に、バイトコード「69」は、バ
イトコード「f1」より前ではmov4 R2,(R
1)と解釈されるが、バイトコード「f1」より後で
は、mov1s R2,(R1)と解釈され実行され
る。 <実施の形態2>以下、本発明の実施の形態2における
プログラム変換装置について図を用いて説明する。
バイトコードを選択されている命令マップに応じて違う
意味に解釈して実行するという特徴を有し、このため図
12に示すプログラム中のバイトコード「52」は、バ
イトコード「f1」より前においては、4バイト命令用
の命令マップが選択されているためmov4 (R
0),R2と解釈され実行されるが、バイトコード「f
1」以後では、1バイト符号付き命令用の命令マップが
選択されているためmov1s (R0),R2と解釈
され実行される。同様に、バイトコード「69」は、バ
イトコード「f1」より前ではmov4 R2,(R
1)と解釈されるが、バイトコード「f1」より後で
は、mov1s R2,(R1)と解釈され実行され
る。 <実施の形態2>以下、本発明の実施の形態2における
プログラム変換装置について図を用いて説明する。
【0064】<構成>図13は、本発明の実施の形態2
におけるプログラム変換装置の機能ブロック図である。
プログラム変換装置は、コンパイラ470から出力され
たアセンブラプログラムを、変換し、アセンブラ480
に出力する装置、いわゆるアセンブラオプティマイザで
あり、アセンブラ最適化部410と、変換前記憶部42
0と、変換後記憶部430とからなる。
におけるプログラム変換装置の機能ブロック図である。
プログラム変換装置は、コンパイラ470から出力され
たアセンブラプログラムを、変換し、アセンブラ480
に出力する装置、いわゆるアセンブラオプティマイザで
あり、アセンブラ最適化部410と、変換前記憶部42
0と、変換後記憶部430とからなる。
【0065】ここで、コンパイラ470は、高級言語で
記述されたプログラムが入力されると、これを本発明に
係る仮想マシン(実施の形態1参照)に適合した命令列
からなるアセンブラプログラムに翻訳して出力する装置
であり、アセンブラ480は、アセンブラプログラムが
入力されると、これを本発明に係る仮想マシンに適合し
たバイトコードに変換する装置である。
記述されたプログラムが入力されると、これを本発明に
係る仮想マシン(実施の形態1参照)に適合した命令列
からなるアセンブラプログラムに翻訳して出力する装置
であり、アセンブラ480は、アセンブラプログラムが
入力されると、これを本発明に係る仮想マシンに適合し
たバイトコードに変換する装置である。
【0066】ここで、変換前記憶部420に格納された
アセンブラプログラムは、命令マップ切替命令を用いた
最適化はなされてはいない。この場合において、プログ
ラム変換装置は、最終的に得られるバイトコードプログ
ラムが小さいものとなるように、命令マップ切替命令を
使用して、変換前記憶部420に格納されたアセンブラ
プログラムを最適化し変換後記憶部430に出力するも
のである。
アセンブラプログラムは、命令マップ切替命令を用いた
最適化はなされてはいない。この場合において、プログ
ラム変換装置は、最終的に得られるバイトコードプログ
ラムが小さいものとなるように、命令マップ切替命令を
使用して、変換前記憶部420に格納されたアセンブラ
プログラムを最適化し変換後記憶部430に出力するも
のである。
【0067】変換前記憶部420及び変換後記憶部43
0は、一次的な記憶領域であり、それぞれ本装置の変換
対象となるアセンブラプログラム、及び本プログラム変
換装置によって変換された結果のアセンブラプログラム
を格納するためのものである。アセンブラ最適化部41
0は、命令対命令マップテーブル記憶部411と、命令
検査部412と、命令マップ別カウンタ413と、命令
マップ切替命令出力部414と、命令マップ切替命令記
憶部415と、命令コピー部416とを有する。
0は、一次的な記憶領域であり、それぞれ本装置の変換
対象となるアセンブラプログラム、及び本プログラム変
換装置によって変換された結果のアセンブラプログラム
を格納するためのものである。アセンブラ最適化部41
0は、命令対命令マップテーブル記憶部411と、命令
検査部412と、命令マップ別カウンタ413と、命令
マップ切替命令出力部414と、命令マップ切替命令記
憶部415と、命令コピー部416とを有する。
【0068】命令対命令マップテーブル記憶部411
は、命令種別に対応するバイトコードが命令語長が1バ
イトの命令として定義されている命令マップが、複数の
命令マップのうちいずれであるかを示す命令対命令マッ
プテーブルを記憶している。ここで、命令マップとは実
施の形態1における仮想マシンの命令マップのことをい
う(図3〜図10参照)。また、命令種別とは、例えば
inc R0のような命令記述そのものではなく、記述
自体から所定の要素を抽出した型であり、例えばinc
Rnである。ここで、命令記述とは、命令のことであ
るが、特に命令の記述面に着目した表現として使用して
いる。
は、命令種別に対応するバイトコードが命令語長が1バ
イトの命令として定義されている命令マップが、複数の
命令マップのうちいずれであるかを示す命令対命令マッ
プテーブルを記憶している。ここで、命令マップとは実
施の形態1における仮想マシンの命令マップのことをい
う(図3〜図10参照)。また、命令種別とは、例えば
inc R0のような命令記述そのものではなく、記述
自体から所定の要素を抽出した型であり、例えばinc
Rnである。ここで、命令記述とは、命令のことであ
るが、特に命令の記述面に着目した表現として使用して
いる。
【0069】図14は、命令対命令マップテーブルの内
容のイメージを示す図である。同図中、4、1s、1
u、2s、2u、f、d、mmの表記は、それぞれ、4
バイト命令用の命令マップ、1バイト符号付き命令用の
命令マップ、1バイト符号なし命令用の命令マップ、2
バイト符号付き命令用の命令マップ、2バイト符号なし
命令用の命令マップ、単精度浮動小数命令用の命令マッ
プ、倍精度浮動小数命令用の命令マップ、マルチメディ
ア命令用の命令マップを示す。
容のイメージを示す図である。同図中、4、1s、1
u、2s、2u、f、d、mmの表記は、それぞれ、4
バイト命令用の命令マップ、1バイト符号付き命令用の
命令マップ、1バイト符号なし命令用の命令マップ、2
バイト符号付き命令用の命令マップ、2バイト符号なし
命令用の命令マップ、単精度浮動小数命令用の命令マッ
プ、倍精度浮動小数命令用の命令マップ、マルチメディ
ア命令用の命令マップを示す。
【0070】この命令対命令マップテーブルは、仮想マ
シンがサポートしているすべての命令種別について、命
令種別に適する命令マップを示す情報を対応づけている
テーブルである。即ち、命令種別毎に、すべての命令マ
ップについて当該命令種別が1バイトの命令語長の命令
として定義されている命令マップには1、その他の命令
マップには0を対応づけたテーブルである。
シンがサポートしているすべての命令種別について、命
令種別に適する命令マップを示す情報を対応づけている
テーブルである。即ち、命令種別毎に、すべての命令マ
ップについて当該命令種別が1バイトの命令語長の命令
として定義されている命令マップには1、その他の命令
マップには0を対応づけたテーブルである。
【0071】例えば、inc Rnという命令種別は、
マルチメディア命令用の命令マップ以外の7つの命令マ
ップでは1バイトの命令語長の命令として定義されてい
るため、マルチメディア命令用の命令マップ以外の値を
1とし、マルチメディア命令用の命令マップの値を0と
している。また、mov4 (Rn),Rmという命令
種別は、4バイト命令用の命令マップにおいてのみ1バ
イトの命令語長の命令として定義されているので、4バ
イト命令用の命令マップの値を1とし、他の命令マップ
の値を0としている。
マルチメディア命令用の命令マップ以外の7つの命令マ
ップでは1バイトの命令語長の命令として定義されてい
るため、マルチメディア命令用の命令マップ以外の値を
1とし、マルチメディア命令用の命令マップの値を0と
している。また、mov4 (Rn),Rmという命令
種別は、4バイト命令用の命令マップにおいてのみ1バ
イトの命令語長の命令として定義されているので、4バ
イト命令用の命令マップの値を1とし、他の命令マップ
の値を0としている。
【0072】また、mov1s (Rn),Rmという
命令種別は、1バイト符号付き命令用の命令マップにお
いてのみ1バイトの命令語長の命令として定義されてい
るので、1バイト符号付き命令用の命令マップの値を1
とし、他の命令マップの値を0としている。なお、命令
種別に対して、1バイトの命令語長の命令として定義し
ている命令マップがない場合は、いずれの命令マップの
値も0となる。
命令種別は、1バイト符号付き命令用の命令マップにお
いてのみ1バイトの命令語長の命令として定義されてい
るので、1バイト符号付き命令用の命令マップの値を1
とし、他の命令マップの値を0としている。なお、命令
種別に対して、1バイトの命令語長の命令として定義し
ている命令マップがない場合は、いずれの命令マップの
値も0となる。
【0073】命令マップ別カウンタ413は、8つの命
令マップ毎に数値を記憶するものである。命令検査部4
12は、変換前記憶部420内の命令記述に着目し、そ
の命令記述自体から所定の要素を抽出して、どの命令種
別に該当するか判断した後、命令対命令マップテーブル
を参照し、その命令種別に応じた各命令マップの値を、
命令マップ別カウンタ413に加算する。
令マップ毎に数値を記憶するものである。命令検査部4
12は、変換前記憶部420内の命令記述に着目し、そ
の命令記述自体から所定の要素を抽出して、どの命令種
別に該当するか判断した後、命令対命令マップテーブル
を参照し、その命令種別に応じた各命令マップの値を、
命令マップ別カウンタ413に加算する。
【0074】命令マップ切替命令記憶部415は、8種
類の命令マップ切替命令の命令記述を記憶している。図
15は、命令マップ切替命令記憶部415の記憶してい
る命令マップ切替命令の命令記述を示す図である。同図
に示すchg4は4バイト命令用の命令マップへ切り替
える旨の命令記述であり、chg1sは1バイト符号付
き命令用、chg1uは1バイト符号なし命令用、ch
g2sは2バイト符号付き命令用、chg2uは2バイ
ト符号なし命令用、chgfは単精度浮動小数命令用、
chgdは倍精度浮動小数命令用、chgmmはマルチ
メディア命令用の命令マップへ切り替える旨の命令記述
である。
類の命令マップ切替命令の命令記述を記憶している。図
15は、命令マップ切替命令記憶部415の記憶してい
る命令マップ切替命令の命令記述を示す図である。同図
に示すchg4は4バイト命令用の命令マップへ切り替
える旨の命令記述であり、chg1sは1バイト符号付
き命令用、chg1uは1バイト符号なし命令用、ch
g2sは2バイト符号付き命令用、chg2uは2バイ
ト符号なし命令用、chgfは単精度浮動小数命令用、
chgdは倍精度浮動小数命令用、chgmmはマルチ
メディア命令用の命令マップへ切り替える旨の命令記述
である。
【0075】命令マップ切替命令出力部414は、命令
マップ別カウンタ413に格納されている各命令マップ
別のカウンタ値を比較して、最も大きい値に対応する命
令マップへ切り替える旨の命令マップ切替命令である命
令記述を変換後記憶部430に書き込む機能を有する。
命令コピー部416は、変換前記憶部420に格納され
ている命令記述を変換後記憶部430にコピーするもの
である。
マップ別カウンタ413に格納されている各命令マップ
別のカウンタ値を比較して、最も大きい値に対応する命
令マップへ切り替える旨の命令マップ切替命令である命
令記述を変換後記憶部430に書き込む機能を有する。
命令コピー部416は、変換前記憶部420に格納され
ている命令記述を変換後記憶部430にコピーするもの
である。
【0076】<動作>上記の機能構成を備える実施の形
態2におけるプログラム変換装置の動作の概要につい
て、図13中に示すプログラムを例にして説明する。変
換前記憶部420に格納されているプログラムは、構造
上のまとまりである複数の関数からなるものであり、同
図中のBEGIN_FUNCからEND_FUNCまで
が1つの関数を示す。ここで、BEGIN_FUNC及
びEND_FUNCは、仮想マシンの命令セットでサポ
ートされている命令ではなく、アセンブラに対して関数
の存在を示すための擬似的な命令である。
態2におけるプログラム変換装置の動作の概要につい
て、図13中に示すプログラムを例にして説明する。変
換前記憶部420に格納されているプログラムは、構造
上のまとまりである複数の関数からなるものであり、同
図中のBEGIN_FUNCからEND_FUNCまで
が1つの関数を示す。ここで、BEGIN_FUNC及
びEND_FUNCは、仮想マシンの命令セットでサポ
ートされている命令ではなく、アセンブラに対して関数
の存在を示すための擬似的な命令である。
【0077】この場合に、アセンブラ最適化部410
は、BEGIN_FUNCからEND_FUNCまでの
すべての命令記述について、バイトコードの縮小化のた
めに適した命令マップはいずれであるかを検査し、検査
終了後に、総合的に最も適した命令マップを判断して、
当該命令マップへ切り替える旨の命令マップ切替命令で
ある命令記述を変換後記憶部430に書き込む。
は、BEGIN_FUNCからEND_FUNCまでの
すべての命令記述について、バイトコードの縮小化のた
めに適した命令マップはいずれであるかを検査し、検査
終了後に、総合的に最も適した命令マップを判断して、
当該命令マップへ切り替える旨の命令マップ切替命令で
ある命令記述を変換後記憶部430に書き込む。
【0078】また、アセンブラ最適化部410は、変換
後記憶部430中に命令マップ切替命令である命令記述
を書き込んだ位置より前には、BEGIN_FUNCと
いう記述を書き込み、また、命令マップ切替命令である
命令記述を書き込んだ位置より後には、BEGIN_F
UNCの次の命令記述からEND_FUNCまでの命令
記述を書き込む。
後記憶部430中に命令マップ切替命令である命令記述
を書き込んだ位置より前には、BEGIN_FUNCと
いう記述を書き込み、また、命令マップ切替命令である
命令記述を書き込んだ位置より後には、BEGIN_F
UNCの次の命令記述からEND_FUNCまでの命令
記述を書き込む。
【0079】ここでは、mov1s (R0),R1は
1バイト符号付き命令用の命令マップを用いるのが適し
ており、図示はしていないが他の命令を検査して総合的
に判断した結果も1バイト符合付き命令用の命令マップ
を用いるのが最適であったとする。この結果として、図
13中の変換後記憶部430に示すようにBIGIN_
FUNCの次にchg1sという1バイト符号付きマッ
プへ切り替える旨の命令マップ切替命令である命令記述
が挿入される。
1バイト符号付き命令用の命令マップを用いるのが適し
ており、図示はしていないが他の命令を検査して総合的
に判断した結果も1バイト符合付き命令用の命令マップ
を用いるのが最適であったとする。この結果として、図
13中の変換後記憶部430に示すようにBIGIN_
FUNCの次にchg1sという1バイト符号付きマッ
プへ切り替える旨の命令マップ切替命令である命令記述
が挿入される。
【0080】以下、アセンブラ最適化部の動作について
図16のフローチャートに基づいて説明する。図16
は、アセンブラ最適化部410の動作を示すフローチャ
ートである。同図は、アセンブラ最適化部410が変換
前記憶部420に格納されたプログラム中のBEGIN
_FUNCを検出した後、BEGIN_FUNCからE
ND_FUNCに至るまでの命令記述についての処理部
分のみを示している。
図16のフローチャートに基づいて説明する。図16
は、アセンブラ最適化部410の動作を示すフローチャ
ートである。同図は、アセンブラ最適化部410が変換
前記憶部420に格納されたプログラム中のBEGIN
_FUNCを検出した後、BEGIN_FUNCからE
ND_FUNCに至るまでの命令記述についての処理部
分のみを示している。
【0081】従って、変換前記憶部420に格納された
プログラムが10個の関数から構成されていれば、同図
のフローチャートに示す動作は、10回行われることに
なる。同図に示すように、アセンブラ最適化部410の
動作は、BEGIN_FUNCを変換前記憶部420か
ら変換後記憶部430にコピーするステップS510
と、命令マップ別カウンタ413のすべての命令マップ
についての値を0クリアするステップS520と、関数
内の最初の命令記述に着目するステップS530と、命
令対命令マップテーブルを参照して、着目した命令記述
の命令種別を判断し、この命令種別に対応する各命令マ
ップについての値を命令マップ別カウンタが保持する値
に加算するステップS540と、関数内のすべての命令
記述につき順次着目してステップS540の動作を行う
ためのステップS550及びS560と、関数内のすべ
ての命令記述に対応して加算された命令マップ別のカウ
ンタ値を比較し、最も大きな値の命令マップへ切り替え
る旨の命令マップ切替命令である命令記述を変換後記憶
部430に書き込むステップS570と、関数内のすべ
ての命令記述を変換後記憶部430にコピーするステッ
プS580と、END_FUNCを変換後記憶部430
にコピーするステップS590とからなる。
プログラムが10個の関数から構成されていれば、同図
のフローチャートに示す動作は、10回行われることに
なる。同図に示すように、アセンブラ最適化部410の
動作は、BEGIN_FUNCを変換前記憶部420か
ら変換後記憶部430にコピーするステップS510
と、命令マップ別カウンタ413のすべての命令マップ
についての値を0クリアするステップS520と、関数
内の最初の命令記述に着目するステップS530と、命
令対命令マップテーブルを参照して、着目した命令記述
の命令種別を判断し、この命令種別に対応する各命令マ
ップについての値を命令マップ別カウンタが保持する値
に加算するステップS540と、関数内のすべての命令
記述につき順次着目してステップS540の動作を行う
ためのステップS550及びS560と、関数内のすべ
ての命令記述に対応して加算された命令マップ別のカウ
ンタ値を比較し、最も大きな値の命令マップへ切り替え
る旨の命令マップ切替命令である命令記述を変換後記憶
部430に書き込むステップS570と、関数内のすべ
ての命令記述を変換後記憶部430にコピーするステッ
プS580と、END_FUNCを変換後記憶部430
にコピーするステップS590とからなる。
【0082】図17は、変換前記憶部420に格納され
るアセンブラプログラムの1つの関数の例を示す図であ
る。同図に示す関数は、メモリ領域中の0番地から4バ
イト分の内容を1増加してするプログラムである。以
下、同図に示す具体例に即してアセンブラ最適化部41
0の動作を説明する。
るアセンブラプログラムの1つの関数の例を示す図であ
る。同図に示す関数は、メモリ領域中の0番地から4バ
イト分の内容を1増加してするプログラムである。以
下、同図に示す具体例に即してアセンブラ最適化部41
0の動作を説明する。
【0083】まず、アセンブラ最適化部410は命令コ
ピー部416を介して変換前記憶部420からBEGI
N_FUNCを変換後記憶部430にコピーし(ステッ
プS510)、命令マップ別カウンタ413内の各命令
マップについての値を0にする(ステップS520)。
次に、命令検査部412は、変換前記憶部420内の
BEGIN_FUNCの次の命令記述であるmov
0,R0に着目し(ステップS530)、命令種別がm
ov const(8),Rnであることを判断し、命
令対命令マップテーブル記憶部411に記憶している命
令対命令マップテーブルを参照し、当該命令種別に対応
する命令マップそれぞれの値を命令マップ別カウンタ4
13に加算する(ステップS540)。この結果、命令
マップ別カウンタ413内の4バイト命令用、1バイト
符号付き命令用、1バイト符号なし命令用、2バイト符
号付き命令用、2バイト符号なし命令用のそれぞれの命
令マップの値がそれぞれ1となるが、他の命令マップの
値は0のままである(図14参照)。
ピー部416を介して変換前記憶部420からBEGI
N_FUNCを変換後記憶部430にコピーし(ステッ
プS510)、命令マップ別カウンタ413内の各命令
マップについての値を0にする(ステップS520)。
次に、命令検査部412は、変換前記憶部420内の
BEGIN_FUNCの次の命令記述であるmov
0,R0に着目し(ステップS530)、命令種別がm
ov const(8),Rnであることを判断し、命
令対命令マップテーブル記憶部411に記憶している命
令対命令マップテーブルを参照し、当該命令種別に対応
する命令マップそれぞれの値を命令マップ別カウンタ4
13に加算する(ステップS540)。この結果、命令
マップ別カウンタ413内の4バイト命令用、1バイト
符号付き命令用、1バイト符号なし命令用、2バイト符
号付き命令用、2バイト符号なし命令用のそれぞれの命
令マップの値がそれぞれ1となるが、他の命令マップの
値は0のままである(図14参照)。
【0084】mov 0,R0の検査の後、命令検査部
412は、まだ関数内に次の命令記述があるため、次の
命令記述であるmov4 (R0),R1に着目する
(ステップS550、S560)。命令検査部412
は、mov4 (R0),R1という命令記述の命令種
別はmov4 (Rn),Rmであると判断し、命令対
命令マップテーブルを参照し、当該命令に対応する命令
マップそれぞれの値を命令マップ別カウンタ413に加
算する(ステップS540)。この結果、命令マップ別
カウンタ413内の4バイト命令用の命令マップの値の
みが1増加する(図14参照)。
412は、まだ関数内に次の命令記述があるため、次の
命令記述であるmov4 (R0),R1に着目する
(ステップS550、S560)。命令検査部412
は、mov4 (R0),R1という命令記述の命令種
別はmov4 (Rn),Rmであると判断し、命令対
命令マップテーブルを参照し、当該命令に対応する命令
マップそれぞれの値を命令マップ別カウンタ413に加
算する(ステップS540)。この結果、命令マップ別
カウンタ413内の4バイト命令用の命令マップの値の
みが1増加する(図14参照)。
【0085】命令検査部412は、続いて次の命令記述
であるinc R1に着目し(ステップS550、S5
60)、命令種別がinc Rnであると判断し、命令
対命令マップテーブルを参照して命令マップ別カウンタ
413に値の加算を行う(ステップS540)。この結
果、命令マップ別カウンタ413内のマルチメディア命
令用の命令マップ以外のすべての命令マップの値が1増
加する。
であるinc R1に着目し(ステップS550、S5
60)、命令種別がinc Rnであると判断し、命令
対命令マップテーブルを参照して命令マップ別カウンタ
413に値の加算を行う(ステップS540)。この結
果、命令マップ別カウンタ413内のマルチメディア命
令用の命令マップ以外のすべての命令マップの値が1増
加する。
【0086】命令検査部412は、続いて次ぎの命令記
述であるmov4 R1,(R0)に着目し(ステップ
S550、S560)、命令種別がmov4 Rn,
(Rm)であると判断し、命令対命令マップテーブルを
参照して命令マップ別カウンタ413に値の加算を行う
(ステップS540)。この結果、命令マップ別カウン
タ413内の4バイト命令用の命令マップの値のみが1
増加する。
述であるmov4 R1,(R0)に着目し(ステップ
S550、S560)、命令種別がmov4 Rn,
(Rm)であると判断し、命令対命令マップテーブルを
参照して命令マップ別カウンタ413に値の加算を行う
(ステップS540)。この結果、命令マップ別カウン
タ413内の4バイト命令用の命令マップの値のみが1
増加する。
【0087】mov4 R1,(R0)が関数内の最後
の命令記述なので(ステップS550)、命令マップ切
替命令出力部414が動作を開始し、命令マップ別カウ
ンタ413内のそれぞれの命令マップについての値を比
較すると、4バイト命令用の命令マップの値が4であ
り、最も大きいものであるため、命令マップ切替命令記
憶部415に記憶しているchg4という命令記述を変
換後記憶部430に書き込む(ステップS570)。こ
の変換後記憶部430への書き込みは、前回の書込みの
位置の続きに書き込む。即ち、BEGIN_FUNCに
続く部分に書き込むことになる。
の命令記述なので(ステップS550)、命令マップ切
替命令出力部414が動作を開始し、命令マップ別カウ
ンタ413内のそれぞれの命令マップについての値を比
較すると、4バイト命令用の命令マップの値が4であ
り、最も大きいものであるため、命令マップ切替命令記
憶部415に記憶しているchg4という命令記述を変
換後記憶部430に書き込む(ステップS570)。こ
の変換後記憶部430への書き込みは、前回の書込みの
位置の続きに書き込む。即ち、BEGIN_FUNCに
続く部分に書き込むことになる。
【0088】命令マップ切替命令出力部がchg4を変
換後記憶部430へ書き込んだ後、命令コピー部416
は、関数内のすべての命令記述を変換後記憶部430へ
コピーし(ステップS580)、同様にEND_FUN
Cもコピーする(ステップS590)。このようなアセ
ンブラ最適化部410の動作によって、変換後記憶部4
30には、図18に示す1つの関数を含むアセンブラプ
ログラムが格納される。
換後記憶部430へ書き込んだ後、命令コピー部416
は、関数内のすべての命令記述を変換後記憶部430へ
コピーし(ステップS580)、同様にEND_FUN
Cもコピーする(ステップS590)。このようなアセ
ンブラ最適化部410の動作によって、変換後記憶部4
30には、図18に示す1つの関数を含むアセンブラプ
ログラムが格納される。
【0089】図18は、変換後記憶部430に格納され
るアセンブラプログラムの1つの関数の例を示す図であ
る。同図に示すように、変換後記憶部430に格納され
た関数は、図17に示した関数に、命令マップ切替命令
であるchg4という命令記述が挿入されている。以
下、本実施の形態におけるプログラム変換装置の出力を
入力とするアセンブラ480の動作概要について説明す
る。
るアセンブラプログラムの1つの関数の例を示す図であ
る。同図に示すように、変換後記憶部430に格納され
た関数は、図17に示した関数に、命令マップ切替命令
であるchg4という命令記述が挿入されている。以
下、本実施の形態におけるプログラム変換装置の出力を
入力とするアセンブラ480の動作概要について説明す
る。
【0090】アセンブラ480は、アセンブラプログラ
ム中の命令記述を、仮想マシンが解読可能なバイトコー
ドに変換するにあたり、命令マップを特定のものに切り
替える旨の命令マップ切替命令である命令記述を検出し
た場合には、それ以後の命令記述をバイトコードに変換
する際に、当該命令マップ切替命令が切り替える命令マ
ップに従ったバイトコードに変換する。
ム中の命令記述を、仮想マシンが解読可能なバイトコー
ドに変換するにあたり、命令マップを特定のものに切り
替える旨の命令マップ切替命令である命令記述を検出し
た場合には、それ以後の命令記述をバイトコードに変換
する際に、当該命令マップ切替命令が切り替える命令マ
ップに従ったバイトコードに変換する。
【0091】図19は、プログラム変換装置による変換
前のアセンブラプログラムとこれに対応するバイトコー
ドを示した図である。同図は、図17に示したアセンブ
ラプログラムを、仮にすべての命令マップに共通する拡
張命令であるバイトコードで表した例であり、バイトコ
ードの合計サイズは9バイトである。
前のアセンブラプログラムとこれに対応するバイトコー
ドを示した図である。同図は、図17に示したアセンブ
ラプログラムを、仮にすべての命令マップに共通する拡
張命令であるバイトコードで表した例であり、バイトコ
ードの合計サイズは9バイトである。
【0092】図20は、プログラム変換装置による変換
後のアセンブラプログラムとこれに対応するバイトコー
ドを示した図である。同図は、図18に示したアセンブ
ラプログラムをアセンブラ480がバイトコードに変換
した場合の例であり、4バイト命令用の命令マップへの
命令マップ切替命令である命令記述chg4を検出した
アセンブラ480が、4バイト命令用の命令マップに基
づいてそれ以後の命令記述をバイトコードに変換した結
果、バイトコードの合計サイズは6バイトと、小さくな
っている。
後のアセンブラプログラムとこれに対応するバイトコー
ドを示した図である。同図は、図18に示したアセンブ
ラプログラムをアセンブラ480がバイトコードに変換
した場合の例であり、4バイト命令用の命令マップへの
命令マップ切替命令である命令記述chg4を検出した
アセンブラ480が、4バイト命令用の命令マップに基
づいてそれ以後の命令記述をバイトコードに変換した結
果、バイトコードの合計サイズは6バイトと、小さくな
っている。
【0093】即ち、プログラム変換装置は、結果的に仮
想マシンで実行するためのバイトコードの合計サイズを
小さくする。ここでは、4バイト命令用の命令マップに
おいて1バイトの命令語長の命令として定義されている
命令記述のみを含むアセンブラプログラムの例について
示したが(図19、図20参照)、処理対象のデータ長
等が多様であるアセンブラプログラムについては、命令
マップ切替命令で切り替えられる命令マップにおいて1
バイトの命令語長の命令として定義されていない命令記
述を含むことになり、当該命令記述は命令語長が2バイ
トの拡張命令であるバイトコードに変換される。 <その他>以上、本発明に係る仮想マシン及びプログラ
ム変換装置について、実施形態に基づいて説明したが、
本発明はこれら実施形態に限られないことは勿論であ
る。即ち、 (1)実施の形態1では、仮想マシンの命令セットの一
部につき、図3から図10に命令マップとして示した
が、これらの命令マップの命令配置や個々の命令の機能
等について限定されることはない。
想マシンで実行するためのバイトコードの合計サイズを
小さくする。ここでは、4バイト命令用の命令マップに
おいて1バイトの命令語長の命令として定義されている
命令記述のみを含むアセンブラプログラムの例について
示したが(図19、図20参照)、処理対象のデータ長
等が多様であるアセンブラプログラムについては、命令
マップ切替命令で切り替えられる命令マップにおいて1
バイトの命令語長の命令として定義されていない命令記
述を含むことになり、当該命令記述は命令語長が2バイ
トの拡張命令であるバイトコードに変換される。 <その他>以上、本発明に係る仮想マシン及びプログラ
ム変換装置について、実施形態に基づいて説明したが、
本発明はこれら実施形態に限られないことは勿論であ
る。即ち、 (1)実施の形態1では、仮想マシンの命令セットの一
部につき、図3から図10に命令マップとして示した
が、これらの命令マップの命令配置や個々の命令の機能
等について限定されることはない。
【0094】但し、実施の形態1のように4バイト命令
用の命令マップと、1バイト符号付き命令用の命令マッ
プと、1バイト符号なし命令用の命令マップと、2バイ
ト符号付き命令用の命令マップと、2バイト符号なし命
令用の命令マップと、単精度浮動小数命令用の命令マッ
プと、倍精度浮動小数命令用の命令マップと、マルチメ
ディア命令用の命令マップとが、命令の扱うデータ形式
はそれぞれ異なっていても、命令の動作の種類として
は、ほぼ同等なものを1バイトの命令語長の命令として
定義しているならば、即ち、データ形式に応じて命令マ
ップを別のものにしているならば、以下に示す特有の効
果を生じる。
用の命令マップと、1バイト符号付き命令用の命令マッ
プと、1バイト符号なし命令用の命令マップと、2バイ
ト符号付き命令用の命令マップと、2バイト符号なし命
令用の命令マップと、単精度浮動小数命令用の命令マッ
プと、倍精度浮動小数命令用の命令マップと、マルチメ
ディア命令用の命令マップとが、命令の扱うデータ形式
はそれぞれ異なっていても、命令の動作の種類として
は、ほぼ同等なものを1バイトの命令語長の命令として
定義しているならば、即ち、データ形式に応じて命令マ
ップを別のものにしているならば、以下に示す特有の効
果を生じる。
【0095】一般的に、関数等のプログラム中の局所的
部分においては、同種のデータ形式のデータを処理対象
とする命令がある程度まとまって配置されるものであ
り、例えば1バイト符号付きデータを処理する命令とマ
ルチメディア命令とが1命令毎に交互に入り交じったよ
うなプログラムは例外的であるため、データ形式に応じ
て命令マップを別のものにしている仮想マシンに対応す
るプログラムの関数内においては、最適な1つの命令マ
ップを選択するために命令マップ切替命令を1つ配置す
ることにより、1バイトの命令語長のバイトコードで表
せる命令が多くなる。
部分においては、同種のデータ形式のデータを処理対象
とする命令がある程度まとまって配置されるものであ
り、例えば1バイト符号付きデータを処理する命令とマ
ルチメディア命令とが1命令毎に交互に入り交じったよ
うなプログラムは例外的であるため、データ形式に応じ
て命令マップを別のものにしている仮想マシンに対応す
るプログラムの関数内においては、最適な1つの命令マ
ップを選択するために命令マップ切替命令を1つ配置す
ることにより、1バイトの命令語長のバイトコードで表
せる命令が多くなる。
【0096】また、各命令マップにおいて、同じバイト
コードに対する命令が、扱うデータ形式は異なるが類似
した動作をする命令となるように対応づけておけば(図
3〜図10参照)、その仮想マシンに対するプログラム
においては、ある種の演算を実現するためのバイトコー
ド列そのものを処理対象のデータ形式のみが異なる複数
の処理について共用でき、プログラムの構成の仕方によ
っては総合的にバイトコードサイズを短縮化できる可能
性を有するという特有の効果を生じる。
コードに対する命令が、扱うデータ形式は異なるが類似
した動作をする命令となるように対応づけておけば(図
3〜図10参照)、その仮想マシンに対するプログラム
においては、ある種の演算を実現するためのバイトコー
ド列そのものを処理対象のデータ形式のみが異なる複数
の処理について共用でき、プログラムの構成の仕方によ
っては総合的にバイトコードサイズを短縮化できる可能
性を有するという特有の効果を生じる。
【0097】また、いずれの命令マップも命令語長2バ
イトの拡張命令については、同一の命令配置を持ち、か
つ仮想マシンでサポートするすべての命令を含むように
することによって、どの命令マップが選択されていても
使用できる命令が制限されないという特有の効果を生じ
る。 (2)実施の形態1では、仮想マシンが8種類の命令マ
ップを備えることを示したが、これに限定されることは
なく、仮想マシンは2種類以上の命令マップを備えるも
のであればよい。 (3)実施の形態1における、命令マップ選択部116
は命令マップ記憶部113に含まれるすべての命令マッ
プのいずれかを選択するものであるが、どのような方式
でこの選択を実現してもよい。例えば、命令マップ選択
部116が選択した1つの命令マップを命令マップ記憶
部113からコピーして記憶することにより命令判別部
111には、このコピーした命令マップを参照させるよ
うにしてもよい。 (4)実施の形態1では、各命令マップは拡張命令をも
含んでいるが、拡張命令専用の命令マップを設けてもよ
い。この拡張命令専用の命令マップは、バイトコードが
拡張命令である場合に命令判別部111から直接参照さ
れる。なお、命令判別部111によるバイトコードが拡
張命令であるか否かの判断は、バイトコードの1バイト
目について命令マップ選択部116に選択されている命
令マップを参照することによりなされる。 (5)実施の形態1では、初期状態では仮想マシンの命
令マップ選択部116により選択されている命令マップ
は4バイト命令用の命令マップとしたが、これに限定さ
れることはなく、他の命令マップとしてもよい。また、
初期状態に選択される命令マップを仮想マシンへの外部
からの指示によって変更することができるようにしても
よいし、仮想マシン自体が外部の情報等を参照して判断
して初期状態に選択される命令マップを変更するように
してもよい。 (6)実施の形態2では、アセンブラ最適化部410
は、関数単位で、図16のフローチャートのステップS
520からS580までの動作を行うこととし、この結
果、関数内に1つの命令マップ切替命令を挿入すること
としたが、これに限定されることはなく、アセンブラプ
ログラム全体を1つの単位として、この単位に対しステ
ップS520からS580までの動作を行うこととして
もよい。また、プログラムの論理構造を解析してプログ
ラム全体を複数の部分に分割し、この各部分を1つの単
位としてもよい。
イトの拡張命令については、同一の命令配置を持ち、か
つ仮想マシンでサポートするすべての命令を含むように
することによって、どの命令マップが選択されていても
使用できる命令が制限されないという特有の効果を生じ
る。 (2)実施の形態1では、仮想マシンが8種類の命令マ
ップを備えることを示したが、これに限定されることは
なく、仮想マシンは2種類以上の命令マップを備えるも
のであればよい。 (3)実施の形態1における、命令マップ選択部116
は命令マップ記憶部113に含まれるすべての命令マッ
プのいずれかを選択するものであるが、どのような方式
でこの選択を実現してもよい。例えば、命令マップ選択
部116が選択した1つの命令マップを命令マップ記憶
部113からコピーして記憶することにより命令判別部
111には、このコピーした命令マップを参照させるよ
うにしてもよい。 (4)実施の形態1では、各命令マップは拡張命令をも
含んでいるが、拡張命令専用の命令マップを設けてもよ
い。この拡張命令専用の命令マップは、バイトコードが
拡張命令である場合に命令判別部111から直接参照さ
れる。なお、命令判別部111によるバイトコードが拡
張命令であるか否かの判断は、バイトコードの1バイト
目について命令マップ選択部116に選択されている命
令マップを参照することによりなされる。 (5)実施の形態1では、初期状態では仮想マシンの命
令マップ選択部116により選択されている命令マップ
は4バイト命令用の命令マップとしたが、これに限定さ
れることはなく、他の命令マップとしてもよい。また、
初期状態に選択される命令マップを仮想マシンへの外部
からの指示によって変更することができるようにしても
よいし、仮想マシン自体が外部の情報等を参照して判断
して初期状態に選択される命令マップを変更するように
してもよい。 (6)実施の形態2では、アセンブラ最適化部410
は、関数単位で、図16のフローチャートのステップS
520からS580までの動作を行うこととし、この結
果、関数内に1つの命令マップ切替命令を挿入すること
としたが、これに限定されることはなく、アセンブラプ
ログラム全体を1つの単位として、この単位に対しステ
ップS520からS580までの動作を行うこととして
もよい。また、プログラムの論理構造を解析してプログ
ラム全体を複数の部分に分割し、この各部分を1つの単
位としてもよい。
【0098】なお、上述のようにプログラムを複数の部
分に分割し、各部分を1つの単位とした場合において、
これらの各部分で連続して実行されることが明らかなも
のであり、かつ、同一の命令マップを選択すべき場合に
は、後続する部分に係る単位については、命令マップ切
替命令を挿入しないことにしてもよい。この場合は、ア
センブラ最適化部410に、連続して実行される単位を
識別する機能及び挿入した命令マップ切替命令を記憶し
て次の単位において当該記憶した命令マップ切替命令の
種別を判断して命令マップ切替命令を出力するか否かを
判断する機能を追加すればよい。 (7)実施の形態2では、命令検査部412は、命令対
命令マップテーブル記憶部411に記憶されている命令
対命令マップテーブルを参照することによって、変換前
記憶部420に格納されている命令記述が、どの命令マ
ップに適合するかを判断することとしたが、これに限定
されることはなく、例えば、各命令マップ別の記憶領域
に、当該命令マップでのみ1バイトの命令語長の命令と
して定義されている命令記述を記憶しておき、これを検
索することにより、命令検査部412は、変換前記憶部
420に格納されている命令記述が1バイトの命令語長
の命令として定義されている命令マップ、即ち当該命令
記述に適合する命令マップを判断することとしてもよ
い。 (8)実施の形態1における仮想マシンの処理手順(図
11のフローチャートの手順等)又は実施の形態2にお
けるプログラム変換装置の処理手順(図16のフローチ
ャートの手順等)を機械語プログラムにより実現し、こ
れを記録媒体に記録して流通・販売の対象にしても良
い。このような記録媒体には、ICカード、光ディス
ク、フレキシブルディスク、ROM等があるが、これら
に記録された機械語プログラムは汎用のハードウェアに
インストールされることにより利用に供される。ここで
いう汎用ハードウェアは、一般のパーソナルコンピュー
タ、あるいはセットトップボックス、PDA、デジタル
TV等のプログラム実行能力を有する家電機器等であ
り、インストールした上記機械語プログラムを逐次実行
して、実施の形態1に示した仮想マシン又は実施の形態
2に示したプログラム変換装置の機能を実現する。
分に分割し、各部分を1つの単位とした場合において、
これらの各部分で連続して実行されることが明らかなも
のであり、かつ、同一の命令マップを選択すべき場合に
は、後続する部分に係る単位については、命令マップ切
替命令を挿入しないことにしてもよい。この場合は、ア
センブラ最適化部410に、連続して実行される単位を
識別する機能及び挿入した命令マップ切替命令を記憶し
て次の単位において当該記憶した命令マップ切替命令の
種別を判断して命令マップ切替命令を出力するか否かを
判断する機能を追加すればよい。 (7)実施の形態2では、命令検査部412は、命令対
命令マップテーブル記憶部411に記憶されている命令
対命令マップテーブルを参照することによって、変換前
記憶部420に格納されている命令記述が、どの命令マ
ップに適合するかを判断することとしたが、これに限定
されることはなく、例えば、各命令マップ別の記憶領域
に、当該命令マップでのみ1バイトの命令語長の命令と
して定義されている命令記述を記憶しておき、これを検
索することにより、命令検査部412は、変換前記憶部
420に格納されている命令記述が1バイトの命令語長
の命令として定義されている命令マップ、即ち当該命令
記述に適合する命令マップを判断することとしてもよ
い。 (8)実施の形態1における仮想マシンの処理手順(図
11のフローチャートの手順等)又は実施の形態2にお
けるプログラム変換装置の処理手順(図16のフローチ
ャートの手順等)を機械語プログラムにより実現し、こ
れを記録媒体に記録して流通・販売の対象にしても良
い。このような記録媒体には、ICカード、光ディス
ク、フレキシブルディスク、ROM等があるが、これら
に記録された機械語プログラムは汎用のハードウェアに
インストールされることにより利用に供される。ここで
いう汎用ハードウェアは、一般のパーソナルコンピュー
タ、あるいはセットトップボックス、PDA、デジタル
TV等のプログラム実行能力を有する家電機器等であ
り、インストールした上記機械語プログラムを逐次実行
して、実施の形態1に示した仮想マシン又は実施の形態
2に示したプログラム変換装置の機能を実現する。
【0099】
【発明の効果】以上の説明から明らかなように、本発明
に係る仮想マシンは、仮想マシンコードからなるプログ
ラムを格納する記憶装置にアクセス可能なマイクロプロ
セッサ配下で、仮想マシンコードを逐次解読して実行す
る仮想マシンであって、前記記憶装置を、仮想マシンコ
ードの複数の値それぞれと命令種別とを対応付けたテー
ブルである命令マップを複数記憶する命令マップ記憶手
段として機能させ、前記複数の命令マップのうち少なく
とも2つは、少なくとも1つの1バイトの仮想マシンコ
ードの値に対して相異なる命令種別を対応付けており、
前記マイクロプロセッサを、前記命令マップ記憶手段に
記憶している複数の命令マップのうち1つを選択する命
令マップ選択手段と、前記記憶装置から仮想マシンコー
ドを読み込む命令読込手段と、前記命令マップ選択手段
により選択している命令マップに基づき、前記命令読込
手段により読み込んだ仮想マシンコードを解読して当該
仮想マシンコードに対応する命令種別で示される動作を
実行する実行制御手段として機能させることを特徴とす
る。
に係る仮想マシンは、仮想マシンコードからなるプログ
ラムを格納する記憶装置にアクセス可能なマイクロプロ
セッサ配下で、仮想マシンコードを逐次解読して実行す
る仮想マシンであって、前記記憶装置を、仮想マシンコ
ードの複数の値それぞれと命令種別とを対応付けたテー
ブルである命令マップを複数記憶する命令マップ記憶手
段として機能させ、前記複数の命令マップのうち少なく
とも2つは、少なくとも1つの1バイトの仮想マシンコ
ードの値に対して相異なる命令種別を対応付けており、
前記マイクロプロセッサを、前記命令マップ記憶手段に
記憶している複数の命令マップのうち1つを選択する命
令マップ選択手段と、前記記憶装置から仮想マシンコー
ドを読み込む命令読込手段と、前記命令マップ選択手段
により選択している命令マップに基づき、前記命令読込
手段により読み込んだ仮想マシンコードを解読して当該
仮想マシンコードに対応する命令種別で示される動作を
実行する実行制御手段として機能させることを特徴とす
る。
【0100】これにより、複数の命令マップの選択が可
能なため、本仮想マシンは多種類の命令を命令語長1バ
イトの命令としてサポートすることができる。従って、
それぞれの命令マップで定義されている種々の命令を使
用する様々なバイトコードプログラムを本仮想マシン上
で実行することができる。ここで、複数の前記命令マッ
プのそれぞれには、前記命令マップ選択手段が選択する
命令マップを所定の命令マップに切り替える旨の少なく
とも1つの命令マップ切替命令が含まれており、前記命
令マップ実行制御手段は、前記仮想マシンコードが命令
マップ切替命令であると解読したときには、当該命令マ
ップ切替命令に基づいて前記命令マップ選択手段が選択
する命令マップを切り替えることとすることもできる。
能なため、本仮想マシンは多種類の命令を命令語長1バ
イトの命令としてサポートすることができる。従って、
それぞれの命令マップで定義されている種々の命令を使
用する様々なバイトコードプログラムを本仮想マシン上
で実行することができる。ここで、複数の前記命令マッ
プのそれぞれには、前記命令マップ選択手段が選択する
命令マップを所定の命令マップに切り替える旨の少なく
とも1つの命令マップ切替命令が含まれており、前記命
令マップ実行制御手段は、前記仮想マシンコードが命令
マップ切替命令であると解読したときには、当該命令マ
ップ切替命令に基づいて前記命令マップ選択手段が選択
する命令マップを切り替えることとすることもできる。
【0101】これにより、本仮想マシンを対象とするバ
イトコードプログラムは、バイトコード中に命令マップ
切替命令を含むことによって、仮想マシンのすべての命
令マップでサポートされている命令を利用することがで
きる。また、複数の前記命令マップのそれぞれには、す
べての命令マップにおける1バイトの仮想マシンコード
の値に対応するすべての命令種別それぞれと同一動作を
実行する旨の2バイトの仮想マシンコードの値に対する
命令種別が含まれていることとすることもできる。
イトコードプログラムは、バイトコード中に命令マップ
切替命令を含むことによって、仮想マシンのすべての命
令マップでサポートされている命令を利用することがで
きる。また、複数の前記命令マップのそれぞれには、す
べての命令マップにおける1バイトの仮想マシンコード
の値に対応するすべての命令種別それぞれと同一動作を
実行する旨の2バイトの仮想マシンコードの値に対する
命令種別が含まれていることとすることもできる。
【0102】これにより、いずれの命令マップでも命令
語長2バイトの命令としてすべての命令がサポートされ
ており、どの命令マップを前提としてもバイトコードプ
ログラムは実行可能となるため、バイトコードプログラ
ムの作成段階において、命令マップ切替命令をバイトコ
ードプログラム中の任意の位置に挿入すること可能とな
る。
語長2バイトの命令としてすべての命令がサポートされ
ており、どの命令マップを前提としてもバイトコードプ
ログラムは実行可能となるため、バイトコードプログラ
ムの作成段階において、命令マップ切替命令をバイトコ
ードプログラム中の任意の位置に挿入すること可能とな
る。
【0103】従って、それぞれの命令マップにおいて命
令語長1バイトの命令として別の命令がサポートされて
いるような場合においては、バイトコードプログラム中
への命令マップ切替命令を挿入する位置や挿入の数を調
整することによって、なるべく命令語長1バイトの命令
が利用できるように命令マップを選択すれば、多種類の
命令を用いているバイトコードプログラムのサイズの短
縮化を図ることができる。
令語長1バイトの命令として別の命令がサポートされて
いるような場合においては、バイトコードプログラム中
への命令マップ切替命令を挿入する位置や挿入の数を調
整することによって、なるべく命令語長1バイトの命令
が利用できるように命令マップを選択すれば、多種類の
命令を用いているバイトコードプログラムのサイズの短
縮化を図ることができる。
【0104】また、複数の前記命令マップのそれぞれに
は、1バイトの仮想マシンコードの値に対応するものと
して、それぞれ別のデータ形式のデータを転送するデー
タ転送命令が複数含まれていることとすることもでき
る。これにより、それぞれの命令マップに別の種類のデ
ータ形式のデータを転送するための命令を分散している
ため、各命令マップは、1種類のデータ形式のデータを
処理するために必要な多くの命令を1つの命令マップに
含む構成とすることができ、このため、バイトコードプ
ログラムやその一部分であって一種類のデータ形式のデ
ータを処理する部分については、短いコードサイズとす
ることができる可能性が高まる。
は、1バイトの仮想マシンコードの値に対応するものと
して、それぞれ別のデータ形式のデータを転送するデー
タ転送命令が複数含まれていることとすることもでき
る。これにより、それぞれの命令マップに別の種類のデ
ータ形式のデータを転送するための命令を分散している
ため、各命令マップは、1種類のデータ形式のデータを
処理するために必要な多くの命令を1つの命令マップに
含む構成とすることができ、このため、バイトコードプ
ログラムやその一部分であって一種類のデータ形式のデ
ータを処理する部分については、短いコードサイズとす
ることができる可能性が高まる。
【0105】このことは、プログラム作成上、同種のデ
ータ形式のデータを転送するための命令列を比較的近接
した位置にまとめて配置すれば、このまとめて配置した
位置の前に、当該データ形式のデータの転送命令を命令
語長1バイトの命令として定義している命令マップへの
命令マップ切替命令を1つ配置するだけで、前記のまと
めて配置した部分については、比較的短いバイトコード
とすることができることを意味し、一般的に、プログラ
ムは、1つの関数内等の局所的部分においては1種類の
データ形式のデータのみを処理するような構造を採るこ
とが多いので、本発明は比較的多くの場合において有効
に働く。
ータ形式のデータを転送するための命令列を比較的近接
した位置にまとめて配置すれば、このまとめて配置した
位置の前に、当該データ形式のデータの転送命令を命令
語長1バイトの命令として定義している命令マップへの
命令マップ切替命令を1つ配置するだけで、前記のまと
めて配置した部分については、比較的短いバイトコード
とすることができることを意味し、一般的に、プログラ
ムは、1つの関数内等の局所的部分においては1種類の
データ形式のデータのみを処理するような構造を採るこ
とが多いので、本発明は比較的多くの場合において有効
に働く。
【0106】また、前記仮想マシンはさらに、整数演算
やアドレス演算を行なうための汎用仮想レジスタと、浮
動小数演算を行なうための汎用浮動小数仮想レジスタと
を備え、前記のデータ形式は、4バイト整数型、1バイ
ト符号付き整数型、1バイト符号なし整数型、2バイト
符号付き整数型、2バイト符号なし整数型、単精度浮動
小数型、倍精度浮動小数型のいずれかであることとする
こともできる。
やアドレス演算を行なうための汎用仮想レジスタと、浮
動小数演算を行なうための汎用浮動小数仮想レジスタと
を備え、前記のデータ形式は、4バイト整数型、1バイ
ト符号付き整数型、1バイト符号なし整数型、2バイト
符号付き整数型、2バイト符号なし整数型、単精度浮動
小数型、倍精度浮動小数型のいずれかであることとする
こともできる。
【0107】これにより、例えば4バイト整数型データ
や1バイト符号付き整数型データ等のような複数のデー
タ形式のデータを処理対象とするバイトコードプログラ
ムも、命令マップの切り替えを利用することにより、短
いコードサイズのものとすることができる。また、本仮
想マシンが様々なデータ形式のデータを扱う命令をサポ
ートすることとなるため、バイトコードプログラムでは
必要なデータのサイズに適した命令を用いることがで
き、このことは、例えば、1バイトのデータや2バイト
のデータ等、必要最小限のサイズのデータを処理対象と
できることにつながるため、データ格納に必要なメモリ
量を小さいものとすることができる。
や1バイト符号付き整数型データ等のような複数のデー
タ形式のデータを処理対象とするバイトコードプログラ
ムも、命令マップの切り替えを利用することにより、短
いコードサイズのものとすることができる。また、本仮
想マシンが様々なデータ形式のデータを扱う命令をサポ
ートすることとなるため、バイトコードプログラムでは
必要なデータのサイズに適した命令を用いることがで
き、このことは、例えば、1バイトのデータや2バイト
のデータ等、必要最小限のサイズのデータを処理対象と
できることにつながるため、データ格納に必要なメモリ
量を小さいものとすることができる。
【0108】また、前記仮想マシンはさらに、複数のデ
ータを格納するためのマルチメディア仮想レジスタを備
え、前記命令マップの1つには、汎用マルチメディア仮
想レジスタを対象とする演算を実行する旨のマルチメデ
ィア命令が複数含まれていることとすることもできる。
これにより、本仮想マシンは、マルチメディア命令を用
いたバイトコードプログラムを実行することができ、ま
た、当該バイトコードプログラムは短いものとすること
ができる。
ータを格納するためのマルチメディア仮想レジスタを備
え、前記命令マップの1つには、汎用マルチメディア仮
想レジスタを対象とする演算を実行する旨のマルチメデ
ィア命令が複数含まれていることとすることもできる。
これにより、本仮想マシンは、マルチメディア命令を用
いたバイトコードプログラムを実行することができ、ま
た、当該バイトコードプログラムは短いものとすること
ができる。
【0109】ここで、前記の相異なる命令種別は、処理
対象とするデータのデータ形式が異なることとすること
もできる。これにより、本仮想マシンを対象とするバイ
トコードプログラムにおける様々な形式のデータを処理
対象とする命令列について同一コードを共用することが
可能となり、結果的にバイトコードプログラムのサイズ
の短縮化が図れる。
対象とするデータのデータ形式が異なることとすること
もできる。これにより、本仮想マシンを対象とするバイ
トコードプログラムにおける様々な形式のデータを処理
対象とする命令列について同一コードを共用することが
可能となり、結果的にバイトコードプログラムのサイズ
の短縮化が図れる。
【0110】また、前記命令マップ切替命令は、複数の
前記命令マップのいずれにおいても1バイトの仮想マシ
ンコードに対応する命令種別の1つであることとするこ
ともできる。これにより、命令マップ切替命令自体のコ
ードサイズによるバイトコードプログラムサイズの増大
を押さえることができるため、命令マップ切替命令をバ
イトコードプログラム中に必要に応じて十分に配置する
ことができ、バイトコードプログラム全体のサイズの短
縮が可能となる。
前記命令マップのいずれにおいても1バイトの仮想マシ
ンコードに対応する命令種別の1つであることとするこ
ともできる。これにより、命令マップ切替命令自体のコ
ードサイズによるバイトコードプログラムサイズの増大
を押さえることができるため、命令マップ切替命令をバ
イトコードプログラム中に必要に応じて十分に配置する
ことができ、バイトコードプログラム全体のサイズの短
縮が可能となる。
【0111】また、本発明に係るプログラム変換装置
は、上述の仮想マシンを対象とするアセンブラソースプ
ログラム中の命令記述を検査しその結果に応じて前記ア
センブラソースプログラムに所定の命令記述を加えるプ
ログラム変換装置であって、前記アセンブラソースプロ
グラムを格納する記憶手段と、前記の複数の命令マップ
のうち、前記アセンブラソースプログラム中の命令記述
が示す動作を実現するための命令が命令語長1バイトの
命令として含まれている1つの命令マップを特定する命
令マップ特定手段と、前記命令マップ特定手段によって
特定された命令マップへ切り替える旨の命令マップ切替
命令記述を、前記アセンブラソースプログラム中の前記
命令記述より先に実行される部分に挿入する命令マップ
切替命令記述挿入手段とを備えることを特徴とする。
は、上述の仮想マシンを対象とするアセンブラソースプ
ログラム中の命令記述を検査しその結果に応じて前記ア
センブラソースプログラムに所定の命令記述を加えるプ
ログラム変換装置であって、前記アセンブラソースプロ
グラムを格納する記憶手段と、前記の複数の命令マップ
のうち、前記アセンブラソースプログラム中の命令記述
が示す動作を実現するための命令が命令語長1バイトの
命令として含まれている1つの命令マップを特定する命
令マップ特定手段と、前記命令マップ特定手段によって
特定された命令マップへ切り替える旨の命令マップ切替
命令記述を、前記アセンブラソースプログラム中の前記
命令記述より先に実行される部分に挿入する命令マップ
切替命令記述挿入手段とを備えることを特徴とする。
【0112】これにより、本プログラム変換装置は、ア
センブラソースプログラム中のある命令記述に対して、
当該命令記述をバイトコードに翻訳する段階において短
いバイトコードにすることができるように命令マップ切
替命令の命令記述を挿入するため、結果的にバイトコー
ドプログラムのサイズを短縮し得る。即ち、本プログラ
ム変換装置の出力を受けて、アセンブラソースプログラ
ムを仮想マシンで実行可能なバイトコードプログラムに
翻訳するアセンブラは、アセンブラソースプログラム中
に挿入された命令マップ切替命令の命令記述を参照する
ことにより、どの命令マップに基づいて各命令記述をバ
イトコードに翻訳するかを決定することができ、決定し
た命令マップに基づき最小のバイトコードに翻訳できる
ので、結果的に、バイトコードプログラムのサイズを短
縮することができる。
センブラソースプログラム中のある命令記述に対して、
当該命令記述をバイトコードに翻訳する段階において短
いバイトコードにすることができるように命令マップ切
替命令の命令記述を挿入するため、結果的にバイトコー
ドプログラムのサイズを短縮し得る。即ち、本プログラ
ム変換装置の出力を受けて、アセンブラソースプログラ
ムを仮想マシンで実行可能なバイトコードプログラムに
翻訳するアセンブラは、アセンブラソースプログラム中
に挿入された命令マップ切替命令の命令記述を参照する
ことにより、どの命令マップに基づいて各命令記述をバ
イトコードに翻訳するかを決定することができ、決定し
た命令マップに基づき最小のバイトコードに翻訳できる
ので、結果的に、バイトコードプログラムのサイズを短
縮することができる。
【0113】ここで、前記プログラム変換装置は、前記
命令マップ特定手段及び前記命令マップ切替命令記述挿
入手段に代えて、前記の複数の命令マップのうち、前記
アセンブラソースプログラム中の連続した複数の命令記
述について、それぞれの命令記述が示す動作を実現する
ための命令が命令語長1バイトの命令として含まれてい
る割合が最も高い1つの命令マップを特定する第2命令
マップ特定手段と、前記第2命令マップ特定手段によっ
て特定された命令マップへ切り替える旨の命令マップ切
替命令記述を、前記アセンブラソースプログラム中の前
記の連続した複数の命令記述より先に実行される部分に
挿入する第2命令マップ切替命令記述挿入手段とを備え
ることとすることもできる。
命令マップ特定手段及び前記命令マップ切替命令記述挿
入手段に代えて、前記の複数の命令マップのうち、前記
アセンブラソースプログラム中の連続した複数の命令記
述について、それぞれの命令記述が示す動作を実現する
ための命令が命令語長1バイトの命令として含まれてい
る割合が最も高い1つの命令マップを特定する第2命令
マップ特定手段と、前記第2命令マップ特定手段によっ
て特定された命令マップへ切り替える旨の命令マップ切
替命令記述を、前記アセンブラソースプログラム中の前
記の連続した複数の命令記述より先に実行される部分に
挿入する第2命令マップ切替命令記述挿入手段とを備え
ることとすることもできる。
【0114】さらに、前記第2命令マップ特定手段は、
前記複数の命令マップそれぞれについてのカウント値を
記憶するためのカウント記憶部と、前記の連続した複数
の命令記述のうち検査対象とする1つの命令記述を順次
選択する命令記述選択部と、前記命令記述選択部により
選択された1つの命令記述につき、当該命令記述の示す
動作を実現するための命令が命令語長1バイトの命令と
して含まれている命令マップを特定して当該命令マップ
についての前記カウント値を1増加する命令マップカウ
ント増加部と、前記命令記述選択部が前記の連続した複
数の命令記述のすべてについて選択を完了したときに各
命令マップについての前記カウント値を比較して、カウ
ント値が最大である1つの命令マップを特定する多使用
命令マップ特定部とを有することとすることもできる。
前記複数の命令マップそれぞれについてのカウント値を
記憶するためのカウント記憶部と、前記の連続した複数
の命令記述のうち検査対象とする1つの命令記述を順次
選択する命令記述選択部と、前記命令記述選択部により
選択された1つの命令記述につき、当該命令記述の示す
動作を実現するための命令が命令語長1バイトの命令と
して含まれている命令マップを特定して当該命令マップ
についての前記カウント値を1増加する命令マップカウ
ント増加部と、前記命令記述選択部が前記の連続した複
数の命令記述のすべてについて選択を完了したときに各
命令マップについての前記カウント値を比較して、カウ
ント値が最大である1つの命令マップを特定する多使用
命令マップ特定部とを有することとすることもできる。
【0115】これにより、アセンブラプログラム中のあ
るまとまった単位について最適な命令マップを選択する
ことができるため、結果的に、バイトコードプログラム
のサイズを短縮することができる。このように、本発明
に係る仮想マシン及びプログラム変換装置は、マイクロ
プロセッサのアーキテクチャの相違を問わずプログラム
流通を可能にする技術として有用であり、特に多様な命
令を必要とする家電製品用のプログラムの配送に関する
技術としてその実用的効果は多大である。
るまとまった単位について最適な命令マップを選択する
ことができるため、結果的に、バイトコードプログラム
のサイズを短縮することができる。このように、本発明
に係る仮想マシン及びプログラム変換装置は、マイクロ
プロセッサのアーキテクチャの相違を問わずプログラム
流通を可能にする技術として有用であり、特に多様な命
令を必要とする家電製品用のプログラムの配送に関する
技術としてその実用的効果は多大である。
【図1】本発明の実施の形態1における仮想マシンの位
置づけに関する概念図である。
置づけに関する概念図である。
【図2】本発明の実施の形態1における仮想マシンの機
能ブロック図である。
能ブロック図である。
【図3】4バイト命令用の命令マップの内容のイメージ
を示す概念図であり、16進数で1の位が0〜7の命令
を示している。
を示す概念図であり、16進数で1の位が0〜7の命令
を示している。
【図4】4バイト命令用の命令マップの内容のイメージ
を示す概念図であり、16進数で1の位が8〜fの命令
を示している。
を示す概念図であり、16進数で1の位が8〜fの命令
を示している。
【図5】1バイト符号付き命令用の命令マップの内容の
イメージを示す概念図であり、16進数で1の位が0〜
7の命令を示している。
イメージを示す概念図であり、16進数で1の位が0〜
7の命令を示している。
【図6】1バイト符号付き命令用の命令マップの内容の
イメージを示す概念図であり、16進数で1の位が8〜
fの命令を示している。
イメージを示す概念図であり、16進数で1の位が8〜
fの命令を示している。
【図7】単精度浮動小数命令用の命令マップの内容のイ
メージを示す概念図であり、16進数で1の位が0〜7
の命令を示している。
メージを示す概念図であり、16進数で1の位が0〜7
の命令を示している。
【図8】単精度浮動小数命令用の命令マップの内容のイ
メージを示す概念図であり、16進数で1の位が8〜f
の命令を示している。
メージを示す概念図であり、16進数で1の位が8〜f
の命令を示している。
【図9】マルチメディア命令用の命令マップの内容のイ
メージを示す概念図であり、16進数で1の位が0〜7
の命令を示している。
メージを示す概念図であり、16進数で1の位が0〜7
の命令を示している。
【図10】マルチメディア命令用の命令マップの内容の
イメージを示す概念図であり、16進数で1の位が8〜
fの命令を示している。
イメージを示す概念図であり、16進数で1の位が8〜
fの命令を示している。
【図11】仮想マシン100の動作を示すフローチャー
トである。
トである。
【図12】仮想マシン100に入力されるバイトコード
プログラムを示す図である。
プログラムを示す図である。
【図13】本発明の実施の形態2におけるプログラム変
換装置の機能ブロック図である。
換装置の機能ブロック図である。
【図14】命令対命令マップテーブルの内容のイメージ
を示す図である。
を示す図である。
【図15】命令マップ切替命令記憶部415の記憶して
いる命令マップ切替命令の命令記述を示す図である。
いる命令マップ切替命令の命令記述を示す図である。
【図16】アセンブラ最適化部410の動作を示すフロ
ーチャートである。
ーチャートである。
【図17】変換前記憶部420に格納されるアセンブラ
プログラムの1つの関数の例を示す図である。
プログラムの1つの関数の例を示す図である。
【図18】変換後記憶部430に格納されるアセンブラ
プログラムの1つの関数の例を示す図である。
プログラムの1つの関数の例を示す図である。
【図19】プログラム変換装置による変換前のアセンブ
ラプログラムとこれに対応するバイトコードを示した図
である。
ラプログラムとこれに対応するバイトコードを示した図
である。
【図20】プログラム変換装置による変換後のアセンブ
ラプログラムとこれに対応するバイトコードを示した図
である。
ラプログラムとこれに対応するバイトコードを示した図
である。
100 仮想マシン 110 命令マップ記憶部 110 命令解読部 111 命令判別部 112 命令読込部 113 命令マップ記憶部 114 命令種別格納部 115 処理対象格納部 116 命令マップ選択部 120 命令実行部 121 命令制御部 122 仮想演算器 123 メモリ制御部 124 汎用仮想レジスタ 130 バイトコードプログラム 131 プログラムメモリ 132 データメモリ 140 マイクロプロセッサ 141 OS 410 アセンブラ最適化部 411 命令対命令マップテーブル記憶部 412 命令検査部 413 命令マップ別カウンタ 414 命令マップ切替命令出力部 415 命令マップ切替命令記憶部 416 命令コピー部 420 変換前記憶部 430 変換後記憶部
Claims (13)
- 【請求項1】 仮想マシンコードからなるプログラムを
格納する記憶装置にアクセス可能なマイクロプロセッサ
配下で、仮想マシンコードを逐次解読して実行する仮想
マシンであって、 前記記憶装置を、仮想マシンコードの複数の値それぞれ
と命令種別とを対応付けたテーブルである命令マップを
複数記憶する命令マップ記憶手段として機能させ、 前記複数の命令マップのうち少なくとも2つは、少なく
とも1つの1バイトの仮想マシンコードの値に対して相
異なる命令種別を対応付けており、 前記マイクロプロセッサを、 前記命令マップ記憶手段に記憶している複数の命令マッ
プのうち1つを選択する命令マップ選択手段と、 前記記憶装置から仮想マシンコードを読み込む命令読込
手段と、 前記命令マップ選択手段により選択している命令マップ
に基づき、前記命令読込手段により読み込んだ仮想マシ
ンコードを解読して当該仮想マシンコードに対応する命
令種別で示される動作を実行する実行制御手段として機
能させることを特徴とする仮想マシン。 - 【請求項2】 複数の前記命令マップのそれぞれには、
前記命令マップ選択手段が選択する命令マップを所定の
命令マップに切り替える旨の少なくとも1つの命令マッ
プ切替命令が含まれており、 前記命令マップ実行制御手段は、前記仮想マシンコード
が命令マップ切替命令であると解読したときには、当該
命令マップ切替命令に基づいて前記命令マップ選択手段
が選択する命令マップを切り替えることを特徴とする請
求項1記載の仮想マシン。 - 【請求項3】 複数の前記命令マップのそれぞれには、
すべての命令マップにおける1バイトの仮想マシンコー
ドの値に対応するすべての命令種別それぞれと同一動作
を実行する旨の2バイトの仮想マシンコードの値に対す
る命令種別が含まれていることを特徴とする請求項1又
は2記載の仮想マシン。 - 【請求項4】 複数の前記命令マップのそれぞれには、
1バイトの仮想マシンコードの値に対応するものとし
て、それぞれ別のデータ形式のデータを転送するデータ
転送命令が複数含まれていることを特徴とする請求項1
〜3のいずれか1項に記載の仮想マシン。 - 【請求項5】 前記仮想マシンはさらに、 整数演算やアドレス演算を行なうための汎用仮想レジス
タと、 浮動小数演算を行なうための汎用浮動小数仮想レジスタ
とを備え、 前記のデータ形式は、4バイト整数型、1バイト符号付
き整数型、1バイト符号なし整数型、2バイト符号付き
整数型、2バイト符号なし整数型、単精度浮動小数型、
倍精度浮動小数型のいずれかであることを特徴とする請
求項4記載の仮想マシン。 - 【請求項6】 前記仮想マシンはさらに、複数のデータ
を格納するためのマルチメディア仮想レジスタを備え、 前記命令マップの1つには、汎用マルチメディア仮想レ
ジスタを対象とする演算を実行する旨のマルチメディア
命令が複数含まれていることを特徴とする請求項1〜5
のいずれか1項に記載の仮想マシン。 - 【請求項7】 前記の相異なる命令種別は、処理対象と
するデータのデータ形式が異なることを特徴とする請求
項1〜6のいずれか1項に記載の仮想マシン。 - 【請求項8】 前記命令マップ切替命令は、複数の前記
命令マップのいずれにおいても1バイトの仮想マシンコ
ードに対応する命令種別の1つであることを特徴とする
請求項2〜7のいずれか1項に記載の仮想マシン。 - 【請求項9】 請求項2〜8のいずれか1項に記載の仮
想マシンを対象とするアセンブラソースプログラム中の
命令記述を検査しその結果に応じて前記アセンブラソー
スプログラムに所定の命令記述を加えるプログラム変換
装置であって、 前記アセンブラソースプログラムを格納する記憶手段
と、 前記の複数の命令マップのうち、前記アセンブラソース
プログラム中の命令記述が示す動作を実現するための命
令が命令語長1バイトの命令として含まれている1つの
命令マップを特定する命令マップ特定手段と、 前記命令マップ特定手段によって特定された命令マップ
へ切り替える旨の命令マップ切替命令記述を、前記アセ
ンブラソースプログラム中の前記命令記述より先に実行
される部分に挿入する命令マップ切替命令記述挿入手段
とを備えることを特徴とするプログラム変換装置。 - 【請求項10】 前記命令マップ特定手段及び前記命令
マップ切替命令記述挿入手段に代えて、 前記の複数の命令マップのうち、前記アセンブラソース
プログラム中の連続した複数の命令記述について、それ
ぞれの命令記述が示す動作を実現するための命令が命令
語長1バイトの命令として含まれている割合が最も高い
1つの命令マップを特定する第2命令マップ特定手段
と、 前記第2命令マップ特定手段によって特定された命令マ
ップへ切り替える旨の命令マップ切替命令記述を、前記
アセンブラソースプログラム中の前記の連続した複数の
命令記述より先に実行される部分に挿入する第2命令マ
ップ切替命令記述挿入手段とを備えることを特徴とする
請求項9記載のプログラム変換装置。 - 【請求項11】 前記第2命令マップ特定手段は、 前記複数の命令マップそれぞれについてのカウント値を
記憶するためのカウント記憶部と、 前記の連続した複数の命令記述のうち検査対象とする1
つの命令記述を順次選択する命令記述選択部と、 前記命令記述選択部により選択された1つの命令記述に
つき、当該命令記述の示す動作を実現するための命令が
命令語長1バイトの命令として含まれている命令マップ
を特定して当該命令マップについての前記カウント値を
1増加する命令マップカウント増加部と、 前記命令記述選択部が前記の連続した複数の命令記述の
すべてについて選択を完了したときに各命令マップにつ
いての前記カウント値を比較して、カウント値が最大で
ある1つの命令マップを特定する多使用命令マップ特定
部とを有することを特徴とする請求項10記載のプログ
ラム変換装置。 - 【請求項12】 仮想マシンコードを逐次解読して実行
する仮想マシン的処理を、コンピュータに実行させるた
めのプログラムを記録した記録媒体であって、 前記仮想マシン的処理は、 仮想マシンコードの複数の値それぞれと命令種別とを対
応付けたテーブルである命令マップを前記コンピュータ
内のメモリに複数格納する命令マップ記憶ステップと、 前記複数の命令マップのうち1つを選択する命令マップ
選択ステップと、 仮想マシンコードを読み込む命令読込ステップと、 前記命令マップ選択ステップにより選択されている命令
マップに基づき、前記命令読込ステップにより読み込ま
れた仮想マシンコードを解読して当該仮想マシンコード
に対応する命令種別の示す動作を実行する実行制御ステ
ップとを含み、 前記複数の命令マップのうち少なくとも2つは、少なく
とも1つの1バイトの仮想マシンコードの値に対して相
異なる命令種別を対応付けていることを特徴とする記録
媒体。 - 【請求項13】 コンピュータに、請求項2〜8のいず
れか1項に記載の仮想マシンを対象とするアセンブラソ
ースプログラム中の命令記述を検査しその結果に応じて
前記アセンブラソースプログラムに所定の命令記述を加
える処理を実行させるためのプログラム変換処理プログ
ラムを記録した記録媒体であって、 前記プログラム変換処理プログラムは、 前記コンピュータ内のメモリに前記アセンブラソースプ
ログラムを格納するプログラム記憶ステップと、 前記コンピュータ内のメモリに複数の前記命令マップの
いずれかへ切り替える旨の複数の命令マップ切替命令記
述を格納する命令マップ切替命令記述記憶ステップと、 前記の複数の命令マップのうち前記アセンブラソースプ
ログラム中の命令記述が示す動作を実現するための命令
が命令語長1バイトの命令として含まれている1つの命
令マップを特定する命令マップ特定ステップと、 前記複数の命令マップ切替命令記述のうち、前記命令マ
ップ特定手段によって特定された命令マップへ切り替え
る旨の命令マップ切替命令記述を、前記アセンブラソー
スプログラム中の前記命令記述より先に実行される部分
に挿入する命令マップ切替命令記述挿入ステップとを含
むことを特徴とする記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10019242A JPH11212804A (ja) | 1998-01-30 | 1998-01-30 | 仮想マシン及びプログラム変換装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10019242A JPH11212804A (ja) | 1998-01-30 | 1998-01-30 | 仮想マシン及びプログラム変換装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH11212804A true JPH11212804A (ja) | 1999-08-06 |
Family
ID=11993946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10019242A Pending JPH11212804A (ja) | 1998-01-30 | 1998-01-30 | 仮想マシン及びプログラム変換装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH11212804A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011518447A (ja) * | 2007-12-13 | 2011-06-23 | イセラ・インコーポレーテッド | 無線アクセス技術 |
EP2562639A1 (en) | 2011-08-22 | 2013-02-27 | Fujitsu Semiconductor Limited | Processor using interrupt signal to define instruction decoding |
-
1998
- 1998-01-30 JP JP10019242A patent/JPH11212804A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011518447A (ja) * | 2007-12-13 | 2011-06-23 | イセラ・インコーポレーテッド | 無線アクセス技術 |
EP2562639A1 (en) | 2011-08-22 | 2013-02-27 | Fujitsu Semiconductor Limited | Processor using interrupt signal to define instruction decoding |
US9411594B2 (en) | 2011-08-22 | 2016-08-09 | Cypress Semiconductor Corporation | Clock data recovery circuit and clock data recovery method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6351806B1 (en) | Risc processor using register codes for expanded instruction set | |
US7979676B2 (en) | Method for instructing a data processor to process data | |
US6976245B2 (en) | Processor for executing instructions in units that are unrelated to the units in which instructions are read, and a compiler, an optimization apparatus, an assembler, a linker, a debugger and a disassembler for such processor | |
RU2137184C1 (ru) | Отображение с помощью мультинаборов команд | |
KR100760371B1 (ko) | 프로세싱 시스템 | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
US7200843B2 (en) | Retrieval of symbol attributes | |
US7447871B2 (en) | Data access program instruction encoding | |
JP2000132403A (ja) | プログラム変換装置 | |
CN104049945A (zh) | 用于融合指令以在多个测试源上提供或(or)测试和与(and)测试功能的方法和装置 | |
JPH04229326A (ja) | スカラ命令の並列実行を得る方法およびシステム | |
CN104050077A (zh) | 利用多个测试源来提供或(or)测试和与(and)测试功能的可融合指令和逻辑 | |
CN102007469A (zh) | 用以加速空终止字符串操作的方法 | |
CN112631657B (zh) | 用于字符串处理的字节比较方法以及指令处理装置 | |
JP2003044273A (ja) | データ処理装置及びデータ処理方法 | |
JPH1049369A (ja) | データ処理装置 | |
JP2006527435A (ja) | 複数の命令セットを有するデータ処理装置内における命令エンコード | |
US7003651B2 (en) | Program counter (PC) relative addressing mode with fast displacement | |
JP3750821B2 (ja) | 圧縮された命令フォーマットを処理するvliwプロセッサ | |
JPH11212804A (ja) | 仮想マシン及びプログラム変換装置 | |
US6427200B1 (en) | Multiple changeable addressing mapping circuit | |
US8453133B2 (en) | Optimization of N-base typed arithmetic instructions via rework | |
US20040162965A1 (en) | Information processing unit | |
JP2000112754A (ja) | データ処理装置 | |
US7155709B2 (en) | Displaying user readable information during linking |