3

javapこれは、コンパイルされたクラスを表示するように彼に依頼したときに表示された、生成されたコードです(メソッドを選択しました)。

int multiply(int, int);
  flags:
  Code:
    stack=2, locals=3, args_size=3
       0: iload_1
       1: iload_2
       2: imul
       3: ireturn
    LineNumberTable:
      line 2: 0
    LocalVariableTable:
      Start  Length  Slot  Name   Signature
             0       4     0  this   LMyClass;
             0       4     1     a   I
             0       4     2     b   I

groovyConsole(同じ方法)で表示されたコードは次のとおりです

public multiply(II)I
   L0
    LINENUMBER 4 L0
    ILOAD 1
    ILOAD 2
    IMUL
    IRETURN
   L1
    LDC 0
    IRETURN
    LOCALVARIABLE this LMyClass; L0 L1 0
    LOCALVARIABLE a I L0 L1 1
    LOCALVARIABLE b I L0 L1 2
    MAXSTACK = 2
    MAXLOCALS = 3

しかし、より多くのバイトコードはrawどれですか? 私が理解している限り、javapいくつかのスタイルを追加したので、2番目の例はより本物になるはずbytecodeです. 私は正しいですか?

4

2 に答える 2

2

これらのどちらもより生ではありません。まったく同じ情報を提示するには、2 つの異なる方法しかありません。

于 2016-03-22T10:06:25.580 に答える