問題タブ [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 に答える
120 参照

java - Java 8: バイトコードの検証時に String[] と int[] を Object[] にマージする

JVM バージョン 8 の仕様のセクション 4.10.2.2 ( https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html ) のバイトコードの検証方法を読んでいます。この場合、スタックに、あるソースから来る場合は int[] を持つスロットが含まれ、別のソースから来る場合は String[] を持つスロットが含まれるとき、制御フローで何が起こりますか。

以下を読みましたが、JVM バージョン 7 のドキュメントにはありませんでした。

対応する値が両方とも配列参照型である場合、それらの次元が調べられます。配列型の次元が同じ場合、マージされた値は、両方の配列型の最初の共通スーパータイプである配列型のインスタンスへの参照です。(配列型のいずれかまたは両方にプリミティブ要素型がある場合、代わりに Object が要素型として使用されます。)

...

int[] と String[] もマージできます。最初の共通スーパータイプを計算するときに、int の代わりに Object が使用されるため、結果は Object[] になります。

これは、int[] を Object[] にキャストできることを意味するため、私には意味がありません。しかし、プリミティブ型の Java 配列は Object[] にキャストできません。

誰かがこの背後にある理論的根拠を説明できますか?

0 投票する
0 に答える
150 参照

algorithm - Jasmin の肉屋アルゴリズム

エラーが発生し続け、これを永遠に印刷しようとしているようです。Jasmin に関する情報を探しましたが、私が知る限り、実際には多くの情報はありません。私のコードの助けをいただければ幸いです。ブッチャーズ アルゴリズムを使用して、次の 10 年間のイースターをコマンド ラインで Jasmin と一緒に印刷することになっています。私の問題のほとんどは、以下の今月の印刷と私のコードにあります.....

だから私はそれがここにあることを理解しました