Dalsi uzasny clanek od nejakeho uzasneho teoretika, ktery si mysli, ze Lisp je nejak jako interpretovany.
This is SBCL 1.0.45.0.debian, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>. SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (defun fact (x) (if (< x 0) 1 (* x (1- x)))) FACT
* (disassemble #'fact) ; disassembly for FACT
; 02D79579: 488B55F8 MOV RDX, [RBP-8] ; no-arg-parsing entry point
; 7D: 31FF XOR EDI, EDI
; 7F: 488D0C250E040020 LEA RCX, [#x2000040E] ; GENERIC-<
; 87: FFD1 CALL RCX
; 89: 7C34 JL L1
; 8B: 488B55F8 MOV RDX, [RBP-8]
; 8F: BF08000000 MOV EDI, 8
; 94: 4C8D1C2556020020 LEA R11, [#x20000256] ; GENERIC--
; 9C: 41FFD3 CALL R11
; 9F: 480F42E3 CMOVB RSP, RBX
; A3: 488BFA MOV RDI, RDX
; A6: 488B55F8 MOV RDX, [RBP-8]
; AA: 4C8D1C25CD020020 LEA R11, [#x200002CD] ; GENERIC-*
; B2: 41FFD3 CALL R11
; B5: 480F42E3 CMOVB RSP, RBX
; B9: L0: 488BE5 MOV RSP, RBP
; BC: F8 CLC
; BD: 5D POP RBP
; BE: C3 RET
; BF: L1: BA08000000 MOV EDX, 8
; C4: EBF3 JMP L0
; C6: CC0A BREAK 10 ; error trap
; C8: 02 BYTE #X02
; C9: 18 BYTE #X18 ; INVALID-ARG-COUNT-ERROR
; CA: 54 BYTE #X54 ; RCX
NIL A ten virtualni stroj co to interpretuje ma cirou nahodou 16 registru pojmenovanych RAX, RBX, RCX... a instrukci LEA. |