Jasmin中的汇编语言 - 获取语法错误

时间:2017-03-08 07:43:30

标签: java java-bytecode-asm jasmin

在putty中我试图创建一个Jasmin程序,当它作为Java程序组装和运行时,将输出整数“431”。当我尝试组装程序时,控制台说第11行有一个语法错误。我无法弄清楚它是什么。这是我的代码:

.class public Lab3_JasminExample
.super java/lang/Object

.method public <init>()V
        aload_0
        invokespecial java/lang/Object/<init>()V
        return
.end method

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

        getstatic  java/lang/System/out Ljava/io/PrintStream;

        sipush 431

        invokevirtual java/io/PrintStream/println(I)V
        return
.end method

第11行将是“.limit stack 10”,我看不出我写这个怎么回事。我做错了什么?

1 个答案:

答案 0 :(得分:3)

错误可能会在某一行上报告,但会被之前(或之后的!)行触发,因此请始终查看有问题的行。

My Jasmin(版本2.4)正确报告第10行的错误

a.j:10: Warning - Syntax error.
.method public static main ([Ljava.lang.String;)V
                                                  ^

这实在是一个愚蠢的错误:方法名称(main)与其描述符(([Ljava.lang.String;)V)之间存在空格

第10行应为.method public static main([Ljava.lang.String;)V