ABCLでDISASSEMBLEする - lisp-cookbook-ja/common-lisp GitHub Wiki
ABCLでDISASSEMBLEする
ABCLは disassemble に外部コマンドのjadを利用しますのでjadを導入すれば結果が表示されます。
(disassemble (compile nil (lambda (x y) (+ x y))))
;>> ; The class file version is 49.0 (only 45.3, 46.0 and 47.0 are supported)
;>> ; // Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
;>> ; // Jad home page: http://www.geocities.com/kpdus/jad.html
;>> ; // Decompiler options: packimports(3) annotate
;>> ;
;>> ; import org.armedbear.lisp.*;
;>> ;
;>> ; public final class abcl_af0d0b20_2c9a_411b_bb3d_931658d78a2c extends CompiledPrimitive
;>> ; {
;>> ;
;>> ; public final LispObject execute(LispObject lispobject, LispObject lispobject1)
;>> ; {
;>> ; return lispobject.add(lispobject1);
;>> ; // 0 0:aload_1
;>> ; // 1 1:aload_2
;>> ; // 2 2:invokevirtual #24 <Method LispObject LispObject.add(LispObject)>
;>> ; // 3 5:areturn
;>> ; }
;>> ;
;>> ; public abcl_af0d0b20_2c9a_411b_bb3d_931658d78a2c()
;>> ; {
;>> ; super(Lisp.NIL, Lisp.readObjectFromString("(X Y)"));
;>> ; // 0 0:aload_0
;>> ; // 1 1:getstatic #6 <Field org.armedbear.lisp.Symbol Lisp.NIL>
;>> ; // 2 4:ldc1 #8 <String "(X Y)">
;>> ; // 3 6:invokestatic #12 <Method LispObject Lisp.readObjectFromString(String)>
;>> ; // 4 9:invokespecial #18 <Method void CompiledPrimitive(LispObject, LispObject)>
;>> ; // 5 12:return
;>> ; }
;>> ; }
;=> NIL