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

java - ASM パラメータの番号付け

ダミークラスがあるとしましょう

asmifier はrunメソッドに対して以下を作成します。

そして、私はこのビットを取得しません:

私の見方では、 には 3 つの引数しかありませんrun

では、なぜではなくfを使用してロードされるようになったのでしょうか。32

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

java - Java 1.0.2 のインターフェース Member に ACC_ABSTRACT が設定されていないのはなぜですか?

いくつかの実験を行うために単純な Java バイトコード パーサーを作成しましたが、最近、予期しない場所で失敗しました。java/lang/reflect/Member.javaJava 1.1.8.16 から読み取っているときrt.jarに、私のパーサーは次のように開始されるため、おかしくなりました (フラグMemberが欠落していることに注意してください)。ACC_ABSTRACT

Java 1.2.2.17 のバージョンではこれが修正され、フラグが0x0601( ACC_ABSTRACT | ACC_INTERFACE | ACC_PUBLIC) に設定されています。

私が見つけた最も初期の JVM 仕様 (1.0.2 とされている) には、次のように書かれています (§4.1、p. 86、強調を追加)。

インターフェイスは暗黙のうちに抽象的です (§2.13.1)。そのACC_ABSTRACTフラグを設定する必要があります。インターフェイスを final にすることはできません。もしそうなら、その実装は決して完了できません (§2.13.1) ので、そのフラグをACC_FINAL設定することはできませんでした。

JVM 仕様のバージョン 9 には、次のような言葉があります

ACC_INTERFACEフラグが設定されている場合は、ACC_ABSTRACTフラグも設定する必要がありACC_FINALACC_SUPERACC_ENUM、およびACC_MODULEフラグ セットを設定してはなりません。

Oracle/Sun JVM は、「そうでなければならない」というこの要件を強制しますか? もしそうなら、いつからですか?そうでない場合、なぜ JVM 仕様はわざわざそれが必要であるかのように振る舞うのでしょうか?