生成および実行時に実行されるコードは、アプリケーション内で、非常によく理解問題です。
ウェブを「ジャストインタイムコンパイラ」や「JITコンパイル」、「ダイナミックコード生成」、特に以下を組み合わせて検索することで、コードの生成、実行中の情報の多くを見つけることができます。 Javaのようなプログラミング言語名。
動的なコード生成は、過去15年間のホットな研究課題の一つです。
(Java仮想マシンまたはJVMと呼ばれる)は、Javaランタイムシステムはdramaticly改善(すなわち> 10倍の高速化)のパフォーマンスを得るために(ホットスポットと呼ばれる)動的コンパイル技術を使用しています。
マイクロソフトは、C#などの.NET言語用のジャストインタイムコンパイルを使用しますが、おそらく多くの詳細な情報を見つけることが難しくなります。
Ian PiumartaはSmalltalkのは、現代のウィンドウシステムとオブジェクト指向プログラミング言語のいくつかのタイプのための出発点である(アラン・ケイ、スモールトークの「父と協力し、Viewpoints Research Instituteでいくつかの非常に印象的な動的コンパイル技術(例えばコーラ)を開発してきました)。この技術の一部は、Google Summer of Codeプロジェクトでカイロレンダリングエンジン(Webブラウザなどで使用される)のスピードアップに使用されました。
イアンPiumartaの作品は最も柔軟、かつコンパクトで、それゆえ開始するには良い場所かもしれません。イアンは信じられないほど賢いので、もしあなたがそれを使いたいのであれば、本当に懸命に考えるように準備しておいてください。かもしれない
他の技術:
は、いくつかのJITのアセンブラ、(私はそれらを使用したことがない)正確に何が必要かもしれ生成されがあります一見の価値がある:
、LLVMのJITとGNU libjitは、おそらく最高の自分の通常の 'ホスト' 環境外での使用のために文書化されています。 LLVMはAppleの技術サポートです。 LLVMは、他のシステムを構築するために使用できるようにライブラリのセットから組み立てられるように設計されています。しかし、それは非常に洗練された、高性能のソリューションを目指しているので、かなり急な学習曲線がありそうです。 GNU libjitは小さく見え、そのために理解しやすくなります。私はちょうどインテルのORPを発見したばかりです。
HTH
inlinceアセンブリは、バイナリにコンパイルされるインラインアセンブリとして(かなり可能私の知る限りではない)あなたの期待に比べてオーバーヘッドを有していません。 –
すべての命令は、実行時に「バイナリ形式」で表示されます。あなたが達成しようとしていることを説明できますか? – Caleb
スタックを破壊する。 –