fork download
  1. (declaim (optimize speed))
  2.  
  3. (loop :for op :in '(+ * =)
  4. :for fn := (compile nil `(lambda (x y)
  5. (declare (fixnum x y))
  6. (,op x y)))
  7. :do (describe fn)
  8. (disassemble fn))
Success #stdin #stdout #stderr 0.04s 37368KB
stdin
Standard input is empty
stdout
#<FUNCTION (LAMBDA (X Y) :IN "/home/4LzrkN/prog.fasl") {52BBAEEB}>
  [compiled function]


Lambda-list: (X Y)
Derived type: (FUNCTION (FIXNUM FIXNUM)
               (VALUES
                (INTEGER -9223372036854775808 9223372036854775806)
                &OPTIONAL))
Documentation:
  T
Source form:
  (LAMBDA #1=(X Y) (DECLARE (FIXNUM X Y)) (+ . #1#))
; disassembly for (LAMBDA (X Y) :IN "/home/4LzrkN/prog.fasl")
; Size: 26 bytes. Origin: #x52BBAF35
; 35:       4801FA           ADD RDX, RDI                     ; no-arg-parsing entry point
; 38:       48D1E2           SHL RDX, 1
; 3B:       710A             JNO L0
; 3D:       48D1DA           RCR RDX, 1
; 40:       FF142510011052   CALL QWORD PTR [#x52100110]      ; ALLOC-SIGNED-BIGNUM-IN-RDX
; 47: L0:   488BE5           MOV RSP, RBP
; 4A:       F8               CLC
; 4B:       5D               POP RBP
; 4C:       C3               RET
; 4D:       CC0F             BREAK 15                         ; Invalid argument count trap
#<FUNCTION (LAMBDA (X Y) :IN "/home/4LzrkN/prog.fasl") {52BBAE5B}>
  [compiled function]


Lambda-list: (X Y)
Derived type: (FUNCTION (FIXNUM FIXNUM)
               (VALUES
                (INTEGER -21267647932558653961849226946058125312
                 21267647932558653966460912964485513216)
                &OPTIONAL))
Documentation:
  T
Source form:
  (LAMBDA #1=(X Y) (DECLARE (FIXNUM X Y)) (* . #1#))
; disassembly for (LAMBDA (X Y) :IN "/home/4LzrkN/prog.fasl")
; Size: 15 bytes. Origin: #x52BBAE9D
; 9D:       FF1425C0001052   CALL QWORD PTR [#x521000C0]      ; no-arg-parsing entry point
                                                              ; GENERIC-*
; A4:       488BE5           MOV RSP, RBP
; A7:       F8               CLC
; A8:       5D               POP RBP
; A9:       C3               RET
; AA:       CC0F             BREAK 15                         ; Invalid argument count trap
#<FUNCTION (LAMBDA (X Y) :IN "/home/4LzrkN/prog.fasl") {52B346BB}>
  [compiled function]


Lambda-list: (X Y)
Derived type: (FUNCTION (FIXNUM FIXNUM) (VALUES BOOLEAN &OPTIONAL))
Documentation:
  T
Source form:
  (LAMBDA #1=(X Y) (DECLARE (FIXNUM X Y)) (= . #1#))
; disassembly for (LAMBDA (X Y) :IN "/home/4LzrkN/prog.fasl")
; Size: 26 bytes. Origin: #x52B346FD
; 6FD:       4839D7           CMP RDI, RDX                    ; no-arg-parsing entry point
; 700:       BA17001050       MOV EDX, #x50100017             ; NIL
; 705:       41BB4F001050     MOV R11D, #x5010004F            ; T
; 70B:       490F44D3         CMOVEQ RDX, R11
; 70F:       488BE5           MOV RSP, RBP
; 712:       F8               CLC
; 713:       5D               POP RBP
; 714:       C3               RET
; 715:       CC0F             BREAK 15                        ; Invalid argument count trap
stderr
; in: LAMBDA (X Y)
;     (LAMBDA (X Y) (DECLARE (FIXNUM X Y)) (+ X Y))
; 
; note: doing signed word to integer coercion (cost 20) to "<return value>"
; in: LAMBDA (X Y)
;     (* X Y)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The result is a (VALUES
;                        (INTEGER -21267647932558653961849226946058125312
;                         21267647932558653966460912964485513216)
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline (signed-byte 64) arithmetic (cost 5) because:
;       The result is a (VALUES
;                        (INTEGER -21267647932558653961849226946058125312
;                         21267647932558653966460912964485513216)
;                        &OPTIONAL), not a (VALUES (SIGNED-BYTE 64) &REST T).
;       etc.
; 
; compilation unit finished
;   printed 2 notes