JP2013061810A - 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム - Google Patents
情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム Download PDFInfo
- Publication number
- JP2013061810A JP2013061810A JP2011199986A JP2011199986A JP2013061810A JP 2013061810 A JP2013061810 A JP 2013061810A JP 2011199986 A JP2011199986 A JP 2011199986A JP 2011199986 A JP2011199986 A JP 2011199986A JP 2013061810 A JP2013061810 A JP 2013061810A
- Authority
- JP
- Japan
- Prior art keywords
- intermediate code
- instruction
- compilation
- unit
- execution
- 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
Images
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】CPU100は、実行ルートに沿って中間コード命令を順次読込み、コンパイル結果格納部15に読み込んだ中間コード命令のコンパイル結果があるか否かを判定し、コンパイル結果が無ければ中間コード命令の解釈を行ない、コンパイル結果があればコンパイル結果を指定するバイトコード解釈部17と、バイトコード解釈部17から中間コード命令の解釈結果を受けた場合、中間コード命令を実行し、コンパイル結果の指定を受けた場合、指定されたネイティブコードを実行するプログラム実行部18とを備える。CPU200は、バイトコード解釈部17により解釈された中間コード命令をコンパイルしてネイティブコードを生成しコンパイル結果格納部15に格納するコンパイル実行部19を備える。
【選択図】図1
Description
エントリーポイントがエントリーポイントテーブル315に登録されていなければ、バイトコード解釈部17は、エントリーポイントテーブル315の最初のエントリーとしてエントリーポイント322にメソッドの開始アドレスを登録する。そして、バイトコード解釈部17は、コンパイルの実行をコンパイル実行部19に指示する。その後、バイトコード解釈部17は、そのメソッドの解釈を進める。そして、バイトコード解釈部17は、解釈結果をプログラム実行部18へ出力する。
これに対して、エントリーポイントテーブル315に既に登録されている場合、コンパイル状態フラグ323を確認し、そのエントリーがコンパイル済みであるか否かを判定する。コンパイル済みであれば、バイトコード解釈部17は、エントリー生成アドレス325を確認し、エントリー生成アドレス325に記載されたアドレスにあるコンパイル済みの実行コードを実行する。その後、バイトコード解釈部17は、実行コードのリーブポイントに指定されたJavaバイトコードの戻り先アドレスから解釈を開始する。ここでリーブポイントは、分岐かreturn命令のいずれかにあたる。例えば、(0xB1)return命令や、(0xB6)invokevirtualなどの呼出し命令や、(0xA7)goto命令などの処理の流れが変わる命令コードが出現する位置を、リーブポイントとすればよい。その他にも、Java仮想マシン仕様(http://java.sun.com/docs/books/jvms/second_edition/html/Mnemonics.doc.html)に規定されている命令コードのうち、ifeq,ifnull,iflt,ifle,ifne,ifnonnull,ifgt,ifge,if_icmpeq,if_icmpne,if_icmplt,if_icmpgt,if_icmple,if_icmpge,if_acmpeq,if_acmpne,goto,goto_w,jsr,jsr_w,ret,lookupswitch,tableswitch,invokevirtual,invokespecial,invokestatic,invokeinterface,return,ireturn,lreturn,freturn,dreturn,areturnなどの命令コードをリーブポイントの対象としてもよい。例えば、リーブポイントで指定されている戻り先アドレスは、分岐における呼出し先のメソッドか、メソッドの終了位置である。戻り先アドレスが呼出し先のメソッドの場合、バイトコード解釈部17は、上述したメソッドの開始を見つけた場合の処理を開始する。戻り先アドレスがメソッドの終了位置の場合、バイトコード解釈部17は、そこからJavaバイトコードの解釈を進め次のメソッドを見つけると、上述したメソッドの開始を見つけた場合の処理を開始する。
以下では、図11を用いて、本実施例に係る情報処理装置のハードウェア構成について説明する。図11は、実施例に係る情報処理装置のハードウェア構成図である。
11 Javaワーク領域部
12 ランタイムライブラリ記憶部
13 コンパイルワーク領域部
14 Javaバイトコード命令記憶部
15 コンパイル結果格納部
16 関数アドレステーブル格納部
17 バイトコード解釈部
18 プログラム実行部
19 コンパイル実行部
100、200 CPU
Claims (5)
- 少なくとも2つのCPU及び中間コード命令のコンパイル結果を記憶する記憶部を有する情報処理装置であって、
一方のCPUは、
中間コード命令で記述された所定のプログラムから、各前記中間コード命令の実行していく順番である実行ルートに沿って前記中間コード命令を順次読込み、前記記憶部に読み込んだ前記中間コード命令のコンパイル結果があるか否かを判定し、該中間コード命令のコンパイル結果が無ければ前記中間コード命令の解釈を行ない、該中間コード命令のコンパイル結果があれば該コンパイル結果を指定する中間コード解釈部と、
前記中間コード解釈部から前記中間コード命令の解釈結果を受けた場合、解釈結果に基づき該中間コード命令を実行し、前記中間コード解釈部からコンパイル結果の指定を受けた場合、指定されたコンパイル結果であるネイティブコードを実行することで前記プログラムを実行するプログラム実行部とを備え、
他方のCPUは、
前記中間コード解釈部により解釈された前記中間コード命令をコンパイルしてネイティブコードを生成し、生成したネイティブコードを前記記憶部に格納するコンパイル実行部を備えた
ことを特徴とする情報処理装置。 - 前記中間コード解釈部は、解釈を行う対象とする、前記プログラムの一部である一まとまりの作業手順を表す中間コード命令群を指定し、さらに、指定した前記中間コード命令群の中の分岐毎に前記メソッドを分割した分割メソッドの中から、解釈を行う対象とする前記分割命令群を特定し、
前記コンパイル実行部は、前記中間コード解釈部により指定された前記中間コード命令群の中で特定された前記分割命令群をコンパイルする
ことを特徴とする請求項1に記載の情報処理装置。 - 前記中間コード解釈部は、前記中間コード命令群の解釈を開始する毎に、前記コンパイル実行部に対して、解釈を開始した中間コード命令群のコンパイルを指示し、解釈を開始した中間コード命令群の中の分岐を検出すると、前記コンパイル実行部による解釈を開始した中間コード命令群のコンパイルが開始されているか否かを検出し、コンパイルが開始されていなければ、その検出した分岐においてメソッドの分割を行い解釈を行う対象とする前記分割命令群を特定し、
前記コンパイル実行部は、前記中間コード解釈部から複数の前記中間コード命令群のコンパイルの指示を順次受け付け、指示を受けた順に前記中間コード命令群のコンパイルを開始し、コンパイルを開始した中間コード命令群に前記分割命令群が指定されていれば該分割命令群をコンパイルし、コンパイルを開始した中間コード命令群に前記分割命令群が指定されていなければコンパイルを開始した中間コード命令群を1つの前記分割命令群としてコンパイルする
ことを特徴とする請求項2に記載の情報処理装置。 - 2つのCPUを備えた情報処理装置の制御方法であって、
一方のCPUにより、中間コード命令で記述された所定のプログラムから、各前記中間コード命令の実行していく順番である実行ルートに沿って前記中間コード命令を順次読込み、中間コード命令のコンパイル結果を記憶する記憶部に読み込んだ前記中間コード命令のコンパイル結果があるか否かを判定し、
該中間コード命令のコンパイル結果が無ければ、前記一方のCPUにより、前記中間コード命令の解釈を行ない、解釈結果に基づき該中間コード命令を実行するとともに、他方のCPUにより、解釈した前記中間コード命令をコンパイルしてネイティブコードを生成し、生成したネイティブコードを記憶部に格納し
該中間コード命令のコンパイル結果があれば、前記一方のCPUにより該コンパイル結果を指定し、指定したコンパイル結果であるネイティブコードを実行する
処理をコンピュータに実行させることを特徴とする情報処理装置制御方法。 - 2つのCPUを備えたコンピュータに処理を行わせる中間コード命令実行プログラムであって、
一方のCPUに対して、中間コード命令で記述された所定のプログラムから、各前記中間コード命令の実行していく順番である実行ルートに沿って前記中間コード命令を順次読込ませ、中間コード命令のコンパイル結果を記憶する記憶部に読み込んだ前記中間コード命令のコンパイル結果があるか否かを判定させ、
該中間コード命令のコンパイル結果が無ければ、前記一方のCPUに対して、前記中間コード命令の解釈を行わせ、解釈結果に基づき該中間コード命令を実行させるとともに、他方のCPUに対して、解釈した前記中間コード命令をコンパイルさせてネイティブコードを生成させ、生成したネイティブコードを記憶部に格納させ
該中間コード命令のコンパイル結果があれば、前記一方のCPUに対して、該コンパイル結果を指定させ、指定したコンパイル結果であるネイティブコードを実行させる
処理をコンピュータに実行させることを特徴とする中間コード命令実行プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011199986A JP2013061810A (ja) | 2011-09-13 | 2011-09-13 | 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム |
US13/591,770 US8762973B2 (en) | 2011-09-13 | 2012-08-22 | Information processing apparatus, method of controlling information processing apparatus, and program for executing intermediate code instructions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011199986A JP2013061810A (ja) | 2011-09-13 | 2011-09-13 | 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013061810A true JP2013061810A (ja) | 2013-04-04 |
Family
ID=47831036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011199986A Pending JP2013061810A (ja) | 2011-09-13 | 2011-09-13 | 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8762973B2 (ja) |
JP (1) | JP2013061810A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013061810A (ja) * | 2011-09-13 | 2013-04-04 | Fujitsu Ltd | 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム |
US20220342655A1 (en) * | 2021-04-22 | 2022-10-27 | STMicroelectronics (Grand Ouest) SAS | Microcontroller, computer program product, and method for adding an additional function to a computer program |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06202877A (ja) * | 1992-12-28 | 1994-07-22 | Fujitsu Ltd | エミュレーション装置 |
JPH11237989A (ja) * | 1997-10-06 | 1999-08-31 | Sun Microsyst Inc | 休止中にバイトコード最適化を実行する方法及び装置 |
JP2000215181A (ja) * | 1999-01-21 | 2000-08-04 | Fujitsu Ltd | ネットワ―クコンピュ―タシステム及び代理コンパイルサ―バ装置 |
JP2000267862A (ja) * | 1999-03-09 | 2000-09-29 | Hewlett Packard Co <Hp> | 資源の消費を最小限にするハイブリッド式ジャストインタイム・コンパイラ |
JP2001195264A (ja) * | 2000-01-07 | 2001-07-19 | Toshiba Corp | コンパイル方法および計算機システム |
JP2003140909A (ja) * | 2001-11-07 | 2003-05-16 | Fujitsu Ltd | Jitコンパイラを備えた仮想計算機 |
JP2004110824A (ja) * | 2002-09-17 | 2004-04-08 | Internatl Business Mach Corp <Ibm> | マルチプロセッシング環境における透過動的最適化のための方法およびシステム |
JP2004355277A (ja) * | 2003-05-28 | 2004-12-16 | Matsushita Electric Ind Co Ltd | プログラム実行制御装置、プログラム実行制御方法 |
US20070283336A1 (en) * | 2006-06-01 | 2007-12-06 | Michael Karl Gschwind | System and method for just-in-time compilation in a heterogeneous processing environment |
JP2010140233A (ja) * | 2008-12-11 | 2010-06-24 | Nec Computertechno Ltd | エミュレーションシステム及びエミュレーション方法 |
JP2010271810A (ja) * | 2009-05-20 | 2010-12-02 | Panasonic Corp | 情報処理装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5946487A (en) * | 1996-06-10 | 1999-08-31 | Lsi Logic Corporation | Object-oriented multi-media architecture |
US6081665A (en) * | 1997-12-19 | 2000-06-27 | Newmonics Inc. | Method for efficient soft real-time execution of portable byte code computer programs |
US6760907B2 (en) * | 1998-06-30 | 2004-07-06 | Sun Microsystems, Inc. | Code generation for a bytecode compiler |
US20020147969A1 (en) * | 1998-10-21 | 2002-10-10 | Richard A. Lethin | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
US6530075B1 (en) * | 1998-12-03 | 2003-03-04 | International Business Machines Corporation | JIT/compiler Java language extensions to enable field performance and serviceability |
US7725885B1 (en) * | 2000-05-09 | 2010-05-25 | Hewlett-Packard Development Company, L.P. | Method and apparatus for trace based adaptive run time compiler |
US20040083467A1 (en) * | 2002-10-29 | 2004-04-29 | Sharp Laboratories Of America, Inc. | System and method for executing intermediate code |
JP2005108126A (ja) | 2003-10-01 | 2005-04-21 | Aplix Corp | 中間コード実行システム、中間コード実行システム搭載機器 |
US7707547B2 (en) * | 2005-03-11 | 2010-04-27 | Aptana, Inc. | System and method for creating target byte code |
US7844958B2 (en) * | 2005-03-11 | 2010-11-30 | Aptana, Inc. | System and method for creating target byte code |
US20070271553A1 (en) * | 2006-05-22 | 2007-11-22 | Micro Focus (Us), Inc. | Method and system for translating assembler code to a target language |
US8359496B1 (en) * | 2010-08-31 | 2013-01-22 | Google Inc. | Fault-resistant just-in-time compiler |
JP2013061810A (ja) * | 2011-09-13 | 2013-04-04 | Fujitsu Ltd | 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム |
-
2011
- 2011-09-13 JP JP2011199986A patent/JP2013061810A/ja active Pending
-
2012
- 2012-08-22 US US13/591,770 patent/US8762973B2/en not_active Expired - Fee Related
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06202877A (ja) * | 1992-12-28 | 1994-07-22 | Fujitsu Ltd | エミュレーション装置 |
JPH11237989A (ja) * | 1997-10-06 | 1999-08-31 | Sun Microsyst Inc | 休止中にバイトコード最適化を実行する方法及び装置 |
JP2000215181A (ja) * | 1999-01-21 | 2000-08-04 | Fujitsu Ltd | ネットワ―クコンピュ―タシステム及び代理コンパイルサ―バ装置 |
JP2000267862A (ja) * | 1999-03-09 | 2000-09-29 | Hewlett Packard Co <Hp> | 資源の消費を最小限にするハイブリッド式ジャストインタイム・コンパイラ |
JP2001195264A (ja) * | 2000-01-07 | 2001-07-19 | Toshiba Corp | コンパイル方法および計算機システム |
JP2003140909A (ja) * | 2001-11-07 | 2003-05-16 | Fujitsu Ltd | Jitコンパイラを備えた仮想計算機 |
JP2004110824A (ja) * | 2002-09-17 | 2004-04-08 | Internatl Business Mach Corp <Ibm> | マルチプロセッシング環境における透過動的最適化のための方法およびシステム |
JP2004355277A (ja) * | 2003-05-28 | 2004-12-16 | Matsushita Electric Ind Co Ltd | プログラム実行制御装置、プログラム実行制御方法 |
US20070283336A1 (en) * | 2006-06-01 | 2007-12-06 | Michael Karl Gschwind | System and method for just-in-time compilation in a heterogeneous processing environment |
JP2010140233A (ja) * | 2008-12-11 | 2010-06-24 | Nec Computertechno Ltd | エミュレーションシステム及びエミュレーション方法 |
JP2010271810A (ja) * | 2009-05-20 | 2010-12-02 | Panasonic Corp | 情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
US20130067442A1 (en) | 2013-03-14 |
US8762973B2 (en) | 2014-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5681473B2 (ja) | プログラムの最適化装置、最適化方法および最適化プログラム | |
JP6329274B2 (ja) | コンパイラ最適化のためのメモリ参照メタデータ | |
US6634023B1 (en) | Compile method, exception handling method and computer | |
EP2251781B1 (en) | Booting an operating system of a system using a read ahead technique | |
JP6458959B2 (ja) | 協調設計されたプロセッサ用動的言語アクセラレータ | |
JP5583514B2 (ja) | バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム | |
JP2010532530A (ja) | メモリトランザクションのグループ化 | |
KR20120083803A (ko) | 가상머신을 위한 추가코드 생성장치 및 방법 | |
US7739674B2 (en) | Method and apparatus for selectively optimizing interpreted language code | |
JPH1078873A (ja) | エミュレーション・システムで非同期信号を処理する方法 | |
EP2080115B1 (en) | Automatic native generation | |
JP2007206933A (ja) | 情報処理装置、情報処理装置におけるブートローダ生成方法およびプログラム転送方法 | |
JP4420055B2 (ja) | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 | |
JP2013061810A (ja) | 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム | |
TWI743698B (zh) | 解譯執行位元組碼指令流的方法及裝置 | |
JP2014191663A (ja) | 演算処理装置、情報処理装置、および演算処理装置の制御方法 | |
US20060149943A1 (en) | System and method for simulating hardware interrupts | |
KR100498486B1 (ko) | 쓰레드 바이너리 컴파일러에 의하여 프로그램에서 여러개의 쓰레드를 다이내믹하게 추출하는 컴퓨터 시스템 및그 동시 다중 쓰레딩 방법 | |
Chen et al. | Design and implementation of high-level compute on Android systems | |
JP2006350489A (ja) | プログラム制御方法 | |
JP2010140233A (ja) | エミュレーションシステム及びエミュレーション方法 | |
JP2009211540A (ja) | コンピュータ使用可能コードを実行する装置及び方法 | |
JP4778359B2 (ja) | エミュレーション方法及びコンピュータシステム | |
US20220027155A1 (en) | Non-transitory computer-readable recording medium, assembly instruction conversion method and information processing apparatus | |
JP5679263B2 (ja) | 情報処理装置及びマイクロ命令処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140508 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141211 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150120 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150320 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150901 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20151030 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20160329 |