問題タブ [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.
java - ASMJavaライブラリを使用した開梱
一部のリフレクションを置き換えるためにASMJavaライブラリを使用しています。このメソッドの本体を生成します:
この生成されたメソッドを使用すると、リフレクションを使用せずに実行時にオブジェクトにフィールドを設定できます。それは素晴らしい働きをします。ただし、プリミティブフィールドでは失敗することがわかりました。これが私のsetメソッドの関連部分です:
このコードは、selectのケースラベルを生成しています。オブジェクトには最適ですが、プリミティブの場合、次のエラーが発生します。
スタック上でフロートを見つけることを期待しています
わかりました、それは理にかなっています、私は自分で開箱をする必要があります。私は以下を実装しました:
トレースして、適切なフィールドの「case Type.FLOAT」に間違いなく入りますが、次のエラーが発生します。
スタック上でオブジェクト/配列を見つけることを期待しています
これは私が立ち往生しているところです。私の人生では、開開が機能しない理由を理解できません。「ALOAD、3」は、setメソッドの3番目のパラメーターをスタックに配置します。これはFloatである必要があります。何か案は?
asm-commonsライブラリには、unboxメソッドを持つGeneratorAdapterクラスがあることがわかりました。ただし、これほど単純なもののために、さらに別のJARを含めたくはありません。GeneratorAdapterソースを調べたところ、非常によく似た処理を行っています。GeneratorAdapterを使用するようにコードを変更して、機能するかどうかを確認しようとしましたが、変換が簡単ではありませんでした。
c++ - CPythonはバイトコードインタープリターですか?
CPythonのコンテキストでは、「バイトコードインタープリター」の概念は実際にはわかりません。誰かが全体像に光を当てることができますか?
CPythonがpycファイル(バイトコードファイル)をコンパイルして実行することを意味しますか?では、pyファイルをpycファイルにコンパイルするのは何ですか?また、JythonはCPythonとどのように異なりますか(異なる言語で実装されている場合を除く)。
また、PythonがC++の解釈であることもどこかで読みました。これは正しいです?そして、それはどういう意味ですか?
私はまだPythonに慣れていないので、ばかげた質問をしても許してください...どうもありがとうございました!
java - バイトコードからクラス名を解決
クラスのソースコードから形成されたバイトコードからクラス名を掘り出すことは可能ですか?
状況は次のとおりです。クラスのバイトコードをどこかからリモートで取得します。それがどこから来たかは問題ではありません。そのクラスをクラスローダーで効果的にロードするには、クラス名も必要です...そうですか?
java - Java バージョン間の後方非互換性の具体例はありますか?
Java バージョン X を対象とする Java ソース コード/Java クラス ファイルがバージョン Y (Y > X) でコンパイル/実行されないという Java リリース間の非互換性はありますか?
「Java リリース」とは、次のようなバージョンを意味します。
- JDK 1.0 (1996 年 1 月)
- JDK 1.1 (1997 年 2 月)
- J2SE 1.2 (1998 年 12 月)
- J2SE 1.3 (2000 年 5 月)
- J2SE 1.4 (2002 年 2 月)
- J2SE 5.0 (2004 年 9 月)
- Java SE 6 (2006 年 12 月)
ハウスルール:
- 可能な場合は、参照とコード例を含めてください。
- 回答は非常に具体的/具体的にするようにしてください。
- @Deprecated としてマークされているクラスは、後方非互換性としてカウントされません。
java - コンパイラの最適化:Javaバイトコード
私は現在、翻訳でJavaバイトコードを対象としたおもちゃのコンパイラを書いています。
.classファイルを書き込む前に、発行されたバイトコードで実行できるさまざまな単純なのぞき穴最適化のカタログ、おそらく要約があるかどうかを知りたいです。私は実際にこの機能を備えたいくつかのライブラリを知っていますが、それを自分で実装したいと思います。
java - Java 用の興味深い無料のオープンソースの動的分析ツールは何ですか?
大学の課題で使用およびレポートする興味深い動的アナライザーを探しています。ツールは次のとおりです。
- オープンソース (彼らから学べるように)
- 無料(結果を共有できるようにしたいので、スピーチとビールの両方のように、それぞれタイトフィストです)
- Java 向け (ソースまたはバイトコード)
これには、パフォーマンス プロファイラーが含まれますが、これに限定されません。コードカバレッジ、マルチスレッドの正確性など、動的である限り、あらゆる種類の分析を実行できます。
生成された結果は何らかの形で役立つはずですが、工業的な強度である必要はありません。
同様の質問:
では、Java 用の興味深い無料のオープンソース動的分析ツールにはどのようなものがあるでしょうか?
python - Python の基本的な最適化モードの用途は何ですか? (python -O)
-O
Python には、インタープリターを実行できるフラグがあります。このオプションは「最適化された」バイトコード (.pyo ファイルに書き込まれる) を生成し、2 回指定すると、docstring を破棄します。Python の man ページから:
-O 基本的な最適化をオンにします。これにより、コンパイル済み (バイトコード) ファイルのファイル名拡張子が .pyc から .pyo に変更されます。2 回指定すると、docstring が破棄されます。
このオプションの 2 つの主要な機能は次のとおりです。
すべての assert ステートメントを取り除きます。これは、破損したプログラム状態に対する防御と速度を交換します。しかし、違いを生むために大量の assert ステートメントが必要ではないでしょうか? これが価値のある(そして正気の)コードはありますか?
すべての docstring を取り除きます。メモリ使用量が非常に重要で、これが成功するアプリケーションはどれですか? すべてを C で書かれたモジュールに入れてみませんか?
このオプションの用途は何ですか? それは現実世界の価値を持っていますか?
java - プログラムで現在のクラスのJavaバイトコードバージョンを決定する方法は?
デプロイメント プラットフォームが Java 5 で、Java 6 の Eclipse で開発が行われている状況があり、特定のプロジェクトで作業を開始するときに新しいワークスペースを作成する手順を確立しました。したがって、必要な手順の 1 つはコンパイラ レベルを Java 5 に設定することですが、これは忘れがちです。
開発プラットフォームを実行するテスト マシンがあり、ビルドしたコードを実行して PC 上で初期テストを行うことができますが、コンパイラ レベルを切り替えるのを忘れると、プログラムを実行できません。顧客に提供するものを作成するためのビルド サーバーがありますが、これはうまく機能しますが、これはビルド サーバーが不要な開発用であり、不要な待機が追加されます。
問題は 、現在のクラスのバイト コード バージョンをプログラムで判別できるので、ローカル PC でのテスト中にコードが警告を出力できるかどうかです。
編集:要件は現在のクラスに対するものであることに注意してください。これはクラスローダから利用できますか? それとも、現在のクラスのクラス ファイルを見つけて調査する必要がありますか?
java - ILLLegal Byte codeとは?
Java Security を読んでいるときに、以下の文に出くわしましたが、インターネット上で満足のいく説明を得ることができませんでした。誰か説明してくれませんか
- バイトコードを含むクラスのロードを防ぎます
- 不正なパッケージでのロードを防止
java - Javaバイトコードのローカル変数
私はJavaバイトコードを学ぼうとしていますが、これに遭遇しました。次の-g
オプションを使用して、この非常に単純なコードをコンパイルしました。
メインコードは次のようになりました:
さらに、mainの最大ローカル変数は4であり、LocalVariableTableには3つのエントリ(args、a、b)しかありません。コンパイラが4つのローカル変数を予約したのに、明らかに3つしかlocalvariable[2]
なく、使用されていない理由を知りたいです。足りないものはありますか?ありがとうございました