2

如何2==2在不使用 new 的情况下计算 asm 字节码中的表达式JumpInsNode(Opcodes.IF_ICMPEQ)

我也想将结果存储在一个变量中。ex print (2==2) 结果必须是 1

提前致谢。

4

2 回答 2

1

您可以将两个操作数都压入堆栈并应用ixor指令;如果结果为零,则操作数相等。

bipush 2
bipush 2
ixor   // stack holds 0 if operands are equal, nonzero if not equal

您不想使用分支指令的任何特殊原因?

于 2013-06-10T13:03:14.913 回答
0

没有任何用于获取布尔值的内置指令。当您在 Java 中获取比较的值时,编译器将生成一个 if 语句并在一个分支上分配 0,在另一个分支上分配 1。

boolean b = (2 == 2)

相当于

boolean b;
if (2 == 2) { b = true; } else {b = false;}
于 2013-06-10T14:36:06.493 回答