【问题标题】:Putting array as an arg to the function in the java bytecode将数组作为 arg 放入 java 字节码中的函数
【发布时间】:2020-04-12 12:21:38
【问题描述】:

我正在尝试使用 Jasmin 字节码将数组传递给函数。它会生成一个正确的类,但在我尝试运行它时会出错:

java.lang.VerifyError: (class: test4, method: main signature: ([Ljava/lang/String;)V) Register 1 contains wrong type

这可能是什么问题? 提前感谢您的帮助!

我的字节码:

.class public input_code
.super java/lang/Object

.method private static func([Ljava/lang/String;)V
.limit stack 99
.limit locals 99

return
.end method

.method public static main([Ljava/lang/String;)V
.limit stack 99
.limit locals 99

ldc 10
anewarray java/lang/String
astore 1
aload 1
ldc 9
ldc "t"
aastore
iload 1
invokestatic input_code/func([Ljava/lang/String;)V
return
.end method

java类:

public class input_code {
    private static void func(String[] var0) {
    }

    public static void main(String[] var0) {
        String[] var1 = new String[10];
        var1[9] = "t";
        func(var1);
    }
}

【问题讨论】:

    标签: java arrays function bytecode jasmin


    【解决方案1】:

    我在这里不好。我的代码生成器有一个错误(在 visitExpIdentifier 中)

    ldc "t"
    aastore
    iload 1 << should be aload
    

    【讨论】:

      猜你喜欢
      • 2010-12-15
      • 2018-12-11
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多