asm字节码中的字符串相等性

时间:2013-06-12 14:52:15

标签: java assembly compiler-construction jvm bytecode

我试图在字节码中执行此操作:

if("asd"=="asd"){}

但我收到以下错误:

Exception in thread "main" java.lang.VerifyError: (class: Main, method: main signature: ([LJava/lang/String:)V) Expecting to find integer on stack
    at java.lang.Class.getDeclareMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.class.getMethod0(Unknown Source)
    at java.lang.class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

IF_ICMPEQ是整数比较(这是ICMP的含义)您想要将引用与IF_ACMPEQ进行比较

顺便说一下,你不需要存储然后加载值,你可以只使用堆栈上的值。