問題タブ [bytecode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
10 に答える
2089 参照

unmanaged - マネージド/バイト コードとアンマネージド/ネイティブ コードの違いは何ですか?

「私たちプログラマー」が非プログラマーや管理タイプにとって単純だと考えるかもしれないいくつかのことを説明するのが難しい場合があります。

そう...

マネージ コード (または Java バイト コード) とアンマネージ/ネイティブ コードの違いを非プログラマーにどのように説明しますか?

0 投票する
6 に答える
17418 参照

python - グローバル インタープリター ロックの理由

Python の Global Interpreter Lock の正確な機能は何ですか? バイトコードにコンパイルされる他の言語は、同様のメカニズムを採用していますか?

0 投票する
7 に答える
6297 参照

java - Java バイトコードの生成に使用できるライブラリ/プログラムはどれですか?

BCELについては知っていますが、このプロジェクトは 2 年間リリースされていなかったため、死んでいるようです。そして、Java の世界は続きます。たとえば、JDK 1.6 には新しい class-file-format があります。

では、JVM のバイトコードを作成するためにどのライブラリを使用できるでしょうか。ライブラリがなくても、バイトコード アセンブラなど、生成されたコードを詳細に操作できれば、プログラムでも問題ありません。

どのソフトウェアをお勧めできますか? 使い方も簡単?良い例/チュートリアルはありますか?

編集:すべての質問に対して:はい、javacは問題ありません。ただし、実行時にいくつかのクラスを生成する場合は、バイトコードへの直接パスの方がクリーンです。

0 投票する
9 に答える
10646 参照

java - Java バイトコード仕様

JVM バイトコード命令セットを学習するのに最適な場所はありますか。おそらく仕様といくつかのチュートリアル?

おもちゃの言語と JVM バイトコードを生成するコンパイラを設計したいのでお願いします。

あなたの知識とおそらくグーグルに感謝します。

0 投票する
5 に答える
44275 参照

java - Java の仮想マシンと CLR

MSIL と Java バイトコードの違いと呼ばれる質問への一種のフォローアップとして? 、Java 仮想マシンの動作と。ネットフレームワーク共通言語ランタイム (CLR) は動作しますか?

また、。ネットフレームワークCLRは「仮想マシン」ですか、それとも仮想マシンの属性を持っていませんか?

0 投票する
4 に答える
9166 参照

java - C ソースから Java バイトコードへ?

C ソース コードを高パフォーマンスの Java バイトコードにコンパイルする方法を探しています。NestedVMの使用に成功しましたが、現在取り組んでいるプロジェクトではパフォーマンスへの影響は許容できません。また、この問題を狙ったさまざまなオープン ソース プロジェクトや、いくつかの商用製品も見てきました。 このSOの質問は、Java以外のソースをJavaソースに変換する一般的な問題を扱っていますが、CからJavaバイトコードに移行したいだけです。

C ソース コードを高パフォーマンスの純粋な Java バイトコードにコンパイルする最良の方法は何ですか?

0 投票する
3 に答える
936 参照

actionscript-3 - AVM2 への言語の追加

AVM2 で実行する言語を作成することに興味があり、どこから始めればよいかアドバイスを求めています。これは決して簡単な作業ではないことは承知していますが、試してみたいと思います。少なくとも、途中で言語の実装についてもっと学びたいと思います。

私は ANTLR をいじり、言語開発のための構文の問題を調べてきました。私が探しているのは、進むべき道についてのアドバイス、または有用な参考文献/本です。

たとえば、非常に単純な AVM2 バイトコードを (スクリプト/手動で) 生成し、それを VM 上で実行したいと考えています。

ありがとう

0 投票する
7 に答える
1766 参照

java - ハッキングを防ぐためにメモリ内からバイトコードを取得する

バイトコードを取得してハッシュを作成し、誰かがメモリ内またはファイルでバイトコードを操作したかどうかを確認するにはどうすればよいですか?

編集: バイナリに署名すると、コードが変更されたり実行されたりするのを防ぐことができますか? ユーザーが私のソフトウェアを実行していることを確認できないようにしたいのと同じくらい。また、プログラム (サーバー) がハッキングされたクライアントによって使用されないように保護したいと考えています。

誰かが私のクライアントを改ざんしたかどうかをサーバー側から検出するにはどうすればよいですか?

0 投票する
4 に答える
362 参照

c++ - MSVC++ でバイトコードを調べる際の問題

私は職場で無料の Digital Mars Compiler をいじり回しており (いたずらなことはわかっています)、コンパイルされた関数を検査し、学習目的でバイト コードを調べるためのコードを作成しました。その機能。ただし、MSVC++ で同じメソッドを再作成することは惨めに失敗し、得られた結果は非常に混乱しています。私はこのような機能を持っています:

その後、私は次のことを行います。

この場合、C++ static_cast を動作させることができないようです (コンパイラ エラーがスローされます)。したがって、C スタイルのキャストですが、それは重要なことではありません。また、参照 &test を使用してみました。しかし、それは何の助けにもなりません。

ここで、testCode が指すメモリの内容を調べると、有効なコードのようにも見えず、そこにデバッグ ブレークポイントが残っているため、混乱します...次のようになります (ターゲットは IA です) -32):

0xe9、0xbc、0x18、0x00、0x00、0xcc...

これは明らかに間違っています。0xe9 は相対ジャンプ命令であり、0xbc バイト先を見ると次のようになります。

0xcc、0xcc、0xcc...

つまり、割り当てられていないメモリまたは未使用のメモリに対して予想されるように、メモリはデバッグ ブレークポイント オペコードに初期化されます。

42 を返す関数に期待するのは次のようなものです。

0x8b、0x2a、0x00、0x00、0x00、0xc3

または少なくともいくつかの種類の mov の後に ret (0xc2、0xc3、0xca または 0xcb) が続き、少し下に

MSVC++ は、セキュリティ上の理由からこの種のことを行うのを防ぐための措置を講じていますか、それとも私は愚かなことをしていて、それに気づいていませんか? この方法は、DMC をコンパイラとして使用するとうまくいくようです...

また、逆方向 (バイトの実行) に問題がありますが、根本的な原因は同じであると思われます。

ヘルプやヒントをいただければ幸いです。

0 投票する
10 に答える
8262 参照

python - コメントアウトせずにPythonロギング呼び出しを削除するにはどうすればよいですか?

今日、私は1年ほど前に書いたPythonプロジェクトについて考えていました。そこでは、loggingかなり広範囲に使用していました。hotshotオーバーヘッド(これが私の最大のボトルネックの1つであることを示しています)のために、内部ループのようなシナリオ(90%のコード)で多くのロギング呼び出しをコメントアウトする必要があったことを覚えています。

いつもコメントしたりコメントを外したりせずに、Pythonアプリケーションのロギング呼び出しをプログラムで取り除くための標準的な方法があるのではないかと思います。検査/再コンパイルまたはバイトコード操作を使用してこのようなことを行い、ボトルネックを引き起こしているコードオブジェクトのみをターゲットにすることができると思います。このようにして、コンパイル後のステップとしてマニピュレータを追加し、次のように一元化された構成ファイルを使用できます。

もちろん、ボトルネックであることが示されているコードオブジェクトに対してのみ、控えめに、おそらく関数ごとの粒度で使用することをお勧めしますlogging。誰かがこのようなことを知っていますか?

注:動的型付けと遅延バインディングのために、これをパフォーマンスの高い方法で実行するのがより困難になることがいくつかあります。たとえば、という名前のメソッドの呼び出しは、debugでラップする必要がある場合がありif not isinstance(log, Logger)ます。いずれにせよ、紳士協定または実行時チェックのいずれかによって、細部のすべてを克服できると思います。:-)