Javaファイルからバイトコードを生成するこのプログラムがあります。そして、この単純な test() メソッドの場合
public void test()
{
boolean a = false;
if (a || true)
{
boolean b = false;
}
}
、次のバイトコードを生成します
public void test()
Code:
7: iconst_0
8: istore_1
9: iload_1
10: ifne 13
13: iconst_0
14: istore_2
15: return
クラスを実行するとOperand stack underrun in test()
、生成されたバイトコードが(私にとって)見栄えが良いため、理由がわかりませんでした。
誰かがこれをデバッグするのを手伝ってくれますか?
(スタックをトレースするために私がしたことは次のとおりです
public void test()
Code:
7: iconst_0
(1 on the stack)
8: istore_1
(0 on the stack)
9: iload_1
(1 on the stack)
10: ifne 13
(0 on the stack)
13: iconst_0
(1 on the stack)
14: istore_2
(0 on the stack)
15: return
そうそう、スタックは私には問題ないようです!)
編集:これは、によって生成されたバイトコードですjavac
public void test();
Code:
0: iconst_0
1: istore_1
2: iload_1
3: ifne 6
6: iconst_0
7: istore_2
8: return