解释java字节码

逆向工程 拆卸 爪哇 字节码
2021-06-18 22:50:46

我看到需要与var进行比较的java字节码,如果它们相等则返回true,否则.....

if(var1==var2)
   return true;
else
{ ...}

关于字节码

aload 1
aload 2
if_acmpne 6
iconst 1
ireturn

我理解iconst1 和ireturn 返回true。并了解 aload1 和 aload2 将 2 var 加载到堆栈。

但如何if_acmpne 6运作?什么是6?感谢

1个回答

if_acmpne指令从堆栈中弹出两个对象并比较它们。如果它们不相等,则它跳转到提供的偏移量,在这种情况下,它是方法代码开头的 6 个字节。

一般来说,您可以通过在此处阅读 JVM 规范来了解所有字节码指令:https : //docs.oracle.com/javase/specs/