JVM/CLRはどのようにJITコンパイルされたネイティブコードを実行しますか?それはいくつかのコードを挿入するか、実行可能なメモリにコードをコピーすることによってですか?動的コード実行を可能にするシステムコールとは何ですか?JVM/CLRによるネイティブコード実行
答えて
私はJavaのしくみについては特に分かりませんが、一般的には、 "トラップ"オペコードをインタプリタの命令ストリームに挿入します。この目的のために特別に作られたような2つのオペコードin the JVM specがあります。
あなたは確かに知りたい場合は、ソースよりも良い答えはありません:http://download.java.net/jdk6/source/
共通言語ランタイムがコードをエントリがJITにネイティブコードまたはネイティブスタブを指しているとの種類ごとにmethodtable管理しており、次に作成したネイティブコードへのポインタでmethodtableをフィックスアップします。
MSDNは
This blog entry by Dave Notario MethodDescセクションの深さexplanationでより多くを持っているが、CLRのJITコンパイラがどのように機能するかを説明します。
CACAO VM(調査JITのみのJVM)で私たちがどのようにそれを行うのか説明できます。まず、あるヒープ割り当てメモリブロックにメソッドのマシンコードが生成されます。コンパイル後、最終的なコード長は既知であり、mmap
とPROT_EXEC
フラグ(関連するCACAOコードhere)を使用して実行可能なメモリのチャンクが割り当てられます。次に、マシンコードがmmapped領域にコピーされます。その後、多くのアーキテクチャでは、マシン固有のキャッシュフラッシュメカニズムが必要になります。たとえば、PowerPC 64用のcache-flushing functionを見てください。特に、i386とx86_64では何もしません。このステップの後、プロセッサは新たに生成されたコードを実行する準備が整う。代わりに、すでに割り当てられたメモリページはmprotect
で実行可能とマークすることができます。 mmap
/mprotect
はUnixの機能です。
- 1. corodovaでネイティブコードを実行するには
- 2. Firefoxの拡張機能:ネイティブコードの実行?
- 3. JNIネイティブコードをルートとして実行
- 4. ネイティブコードxamarin.iosを実行しているときにSIGABRTを取得
- 5. JNIネイティブコードを実行するときのJRE SIGSEGV
- 6. ネイティブコード<Keypoint>ネイティブコード
- 7. JDKのネイティブコードによるTomcatのクラッシュ:ZIP_GetEntry2
- 8. Android:MediaRecorder @ネイティブコード
- 9. WP7ネイティブコード?
- 10. はネイティブコード
- 11. iOSネイティブコード
- 12. Safariネイティブコード
- 13. LLVMネイティブコード生成
- 14. ネイティブコードTypescriptコンパイラ
- 15. Android C++ネイティブコード
- 16. ネイティブコードのAndroidインテントサービス
- 17. ネイティブコードのAndroidバインダー
- 18. Androidのネイティブコード
- 19. AssetManagerとネイティブコード
- 20. は、ネイティブコードはシリウス
- 21. 反応ネイティブコードでプッシュ通知を実装する方法
- 22. JavaScriptネイティブコードを読み取る
- 23. ネイティブコードをサポートするクロスプラットフォームモバイルフレームワーク
- 24. アプリケーションがネイティブコードでクラッシュする
- 25. HelloJniのネイティブコードをデバッグする
- 26. エアアプリケーションのネイティブコードにアクセスする方法は?
- 27. ByteCodeをネイティブコードに変換する方法
- 28. ネイティブコードからAsyncStorageにアクセスする
- 29. ネイティブコードの可視性に反応する
- 30. mac mono fiddlerネイティブコードを実行しているときにSIGSEGVを取得しました
DEPとデータと実行可能コードの明確な分離を考慮すると、その実行可能メモリに書き込むことができず、データメモリをジャンプ/実行することはできないため、CLR/JIT 。 – Abel
@Abel [this](http://blogs.msdn.com/b/vcblog/archive/2009/05/21/dynamicbase-and-nxcompat.aspx)の記事が興味深いかもしれません。 – ghord