gpt4 book ai didi

if语句的Java字节码指令

转载 作者:行者123 更新时间:2023-11-30 06:41:41 24 4
gpt4 key购买 nike

我有以下 Java 类:

public class ArtClassInt {
public boolean foo(int x) {
if(x == 3956681)
return true;
else
return false;
}

public boolean boo(int x) {
if(x <= 952140568)
return true;
else
return false;
}

public boolean boo1(int x, int y) {
if(x <= y)
return true;
else
return false;
}

public boolean zoo(int x) {
if(x+1 < 1267)
return true;
else
return false;
}
}

当我编译它并得到它的字节码时,我得到了以下与源代码中的if语句相对应的语句:

ArtClassInt.boo1(II)Z: I4 Branch 3 IF_ICMPGT L17 - true
ArtClassInt.boo1(II)Z: I4 Branch 3 IF_ICMPGT L17 - false
ArtClassInt.boo(I)Z: I4 Branch 2 IF_ICMPGT L10 - true
ArtClassInt.boo(I)Z: I4 Branch 2 IF_ICMPGT L10 - false
ArtClassInt.foo(I)Z: I4 Branch 1 IF_ICMPNE L3 - true
ArtClassInt.foo(I)Z: I4 Branch 1 IF_ICMPNE L3 - false
ArtClassInt.zoo(I)Z: I6 Branch 4 IF_ICMPGE L24 - true
ArtClassInt.zoo(I)Z: I6 Branch 4 IF_ICMPGE L24 - false

我对助记符(即 IF_ICMPGEIF_ICMPNE 等)完全感到困惑。通过查看源代码,我希望:

  • foo 方法中的 if 语句应该是 if_icmpeq 而不是IF_ICMPNE
  • booboo1 方法中的 if 语句应该是 if_icmple 而不是 IF_ICMPGT
  • zoo 方法中的那个应该是if_icmplt 不是 IF_ICMPGE

有人可以解释一下这背后的原因吗?

最佳答案

测试的条件是反转的,因为如果条件为真,它会跳转(到 else block ),否则它会继续执行下一条指令。

关于if语句的Java字节码指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54809839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com