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