如何2==2
在不使用 new 的情况下计算 asm 字节码中的表达式JumpInsNode(Opcodes.IF_ICMPEQ)
?
我也想将结果存储在一个变量中。ex print (2==2) 结果必须是 1
提前致谢。
如何2==2
在不使用 new 的情况下计算 asm 字节码中的表达式JumpInsNode(Opcodes.IF_ICMPEQ)
?
我也想将结果存储在一个变量中。ex print (2==2) 结果必须是 1
提前致谢。
您可以将两个操作数都压入堆栈并应用ixor
指令;如果结果为零,则操作数相等。
bipush 2
bipush 2
ixor // stack holds 0 if operands are equal, nonzero if not equal
您不想使用分支指令的任何特殊原因?
没有任何用于获取布尔值的内置指令。当您在 Java 中获取比较的值时,编译器将生成一个 if 语句并在一个分支上分配 0,在另一个分支上分配 1。
boolean b = (2 == 2)
相当于
boolean b;
if (2 == 2) { b = true; } else {b = false;}