問題タブ [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 投票する
7 に答える
21029 参照

assembly - アセンブリコードとバイトコードの違いは何ですか?

ソース コード、バイトコード、アセンブリ コード、マシン コード、コンパイラ、リンカ、インタプリタ、アセンブラ、その他すべての意味のさまざまな違いを探している間、私はバイトコードとアセンブリ コードの違いについてのみ混乱しました。

特に、CIL を説明するこのウィキペディアの記事の紹介は、両方の用語 (アセンブリ コードとバイトコード) を同じ意味で使用しているように思われるため、私を混乱させました。

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

java - JVM 用の .class ファイルの生成

私は、後でJVMでコンパイルできるJava ".class"ファイルを外出先で生成する必要があるプロジェクトに取り組んでいます。スタックベースの中間プログラミング言語でもある MSIL (Microsoft IL) を学習して使用した後、次のような問題に直面しています。

  1. IL(C#またはVB用)と比較して、「.class」ファイルのJavaバイトコードには構造化された方法で情報が含まれており、ファイルを理解できる限り、プログラムデータとは別にメタデータが含まれています。本当ですか? ? すべてのクラス ファイルのテンプレート フォームで同じものを生成できますか??
  2. クラスファイルをバイナリで生成することは必須ですか??

「 Joshua Engel による Java™ 仮想マシンのプログラミング 」を参照しましたが、JVm 命令セットについては既に学習しているため、私の目的には役立っていません。

誰でもこれで私を助けてもらえますか?? すべてのヘルプは高く評価されます。単一の 1 をまだ見つけることができなかったので、単純なクラス ファイルを生成する例は非常に役立ちます。

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

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

.classファイルをファイルに変換することは可能.javaですか?

これはどのように行うことができますか?

このオプションから抽出されたコードの正確さはどうですか?

0 投票する
2 に答える
1164 参照

java - ASM ビジターを使用してスタックを検査する方法は?

Java バイト コード エンジニアリング ライブラリASMを使用して静的解析を実行しようとしています。フィールドに割り当てられている変数を検査したい状況があります。

私はメソッドMethodVisitorを実装していvisitFieldInsn()ます。私は特にputfieldコマンドを探しています。それは問題ありません。問題は、 に遭遇したときにputfield、フィールドに割り当てられる変数にアクセスできるようにしたいということです。具体的には、変数のに関する情報にアクセスしたいと考えています。

現時点では、スタックの一番上にあるものを確認するだけで十分ですが、より一般的な方法で検査する方法があれば、さらに優れています。

ASM を使用してスタック上の変数を検査する方法はありますか?

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

java - 実行時に指定された.classファイルをSystemClassLoaderにロードさせることは可能ですか?

割り当て用の静的分析ツールを作成しています。これは、ASMライブラリを使用してJavaバイトコードを分析します。私たちが使用するASMの部分の1つは、クラスがClassLoaderからロードされることを要求します(または少なくとも要求するように見えます)。

ツールがクラスパスに.classファイルを必要とせずに.classファイルを分析できることを望んでいました。実行時に指定されたディレクトリから.classesをすでにロードし、InputStreamを使用してそれらを読み込みます。ほとんどの場合、これはASMで許容されます。SimpleVerifierただし、クラスをロードしようとするクラスなどがあります。

このシナリオでは、を呼び出すとロードされるように、ロードする.classファイルを登録することは可能Class.forName()ですか?または、これを可能にするためにClassLoaderを拡張する簡単な方法はありますか?


編集:に関する情報URLClassLoaderは役に立ちました。残念ながら、Thread.currentThread().setContextClassLoader()そのインスタンスを使用することは、このシナリオでは機能しませんでした。私が呼び出しているライブラリコードは、を使用したインスタンスの初期化時に取得するローダーを使用しますgetClass().getClassLoader()

URLClassLoaderを設定した時点では、クラスは初期化されていないため、contextClassLoaderはそのクラスをロードしないと思います。

応答を正しく理解しましたか?URLClassLoaderを使用してサードパーティのクラスをロードすることは可能でしょうか?

0 投票する
2 に答える
773 参照

java - Eclipse の CompilationUnit からバイトコードを生成する

私はEclipse プラグイン プロジェクトに取り組んでいません。ただし、org.eclipse.jdt.core.dom.CompilationUnit のインスタンスを生成する外部ライブラリを使用します。そこから Java バイトコードを生成する方法はありますか?

いくつかの検索により、CompilationUnit は通常、Eclipse プロジェクトのカスタム ビルダーを登録してから Eclipse に呼び出させることによって構築されることが明らかになりました...しかし、それをスタンドアロン アプリケーションに活用する方法が見つかりませんでした。

0 投票する
2 に答える
307 参照

python - Pythonは-Oフラグなしでどのような最適化を行いますか?

私はいつもPythonインタープリターが-Oフラグなしで最適化を行わないと思っていましたが、以下は少し奇妙です:

インタプリタが2つの文字列定数のモジュロでフォールディングを行っているように見えます。ただし、変数を追加すると、最適化されていない結果が得られます。

Pythonは-Oフラグなしでどのような最適化を行いますか?そして、それらを無効にする方法はありますか?最適化されていないPythonバイトコードがどのように表示されるかを確認したいと思います。実稼働タイプの環境でこれを行う予定はありません。

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

java - JAR で欠落しているメソッド (バイナリ互換性) を静的に識別する方法

2 つの JAR 間のバイナリ互換性を確認したい。

この回答の提案に従って、 jboss tattletaleを使用しましたが、見つからないクラスしか見つかりません。

不足しているメソッドがあるかどうかを確認するにはどうすればよいですか? それはまったく可能ですか?

例えば

"Depends - on" クラスFoo は Bar に依存します (他の多くの中産階級の労働者と同様)

「コンパイル時」クラス

ここで、古いBar jar がコンパイルされたタイム バーを誤って置き換えていると想像してください。

「ランタイム」クラス

不足しているメソッドを実行して取得せずに特定する方法はありNoSuchMethodErrorますか?


免責事項:これは、私自身の関連する質問の大幅な言い換えであり、削除できません。言い換えると、現在の 2 つの回答がトピックとはまったく関係のないものになるため、新しい質問をすることにしました。

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

python - Pythonソースコードを保護する方法は?

元の.pyファイルの代わりにPythonスクリプトのバイトコードバージョン(.pycファイル)のみを配布することは可能ですか?私のアプリはPythonインタープリターを埋め込み、PyImport_Importを呼び出してスクリプトをロードします。.pycファイルを探してインポートするように指示するにはどうすればよいですか?

0 投票する
1 に答える
3038 参照

python - Python バイトコードを元のコードに再アセンブルしますか?

これはばかげた質問かもしれませんが、たとえば..

..または.pycファイル - これを有効な Python ソース コードに再アセンブルすることは可能ですか? つまりどこreassemble(dis(myfunc)) == "def reassembled_function(x):\n print x ** 2"

特に実用的な理由ではありませんが、これが可能かどうか、または試みられたかどうかに興味があります..

関連している