Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CL-USER> (defun add-and-two (x y) (+ x y 2))
- ADD-AND-TWO
- CL-USER> (disassemble 'add-and-two)
- ; disassembly for ADD-AND-TWO
- ; Size: 55 bytes. Origin: #x10090B21F4
- ; 1F4: 498B4C2460 MOV RCX, [R12+96] ; thread.binding-stack-pointer
- ; no-arg-parsing entry point
- ; 1F9: 48894DF8 MOV [RBP-8], RCX
- ; 1FD: 84042500000F20 TEST AL, [#x200F0000] ; safepoint
- ; 204: 488B55F0 MOV RDX, [RBP-16]
- ; 208: 488B7DE8 MOV RDI, [RBP-24]
- ; 20C: 41BBC0010020 MOV R11D, 536871360 ; GENERIC-+
- ; 212: 41FFD3 CALL R11
- ; 215: BF04000000 MOV EDI, 4
- ; 21A: 41BBC0010020 MOV R11D, 536871360 ; GENERIC-+
- ; 220: 41FFD3 CALL R11
- ; 223: 488BE5 MOV RSP, RBP
- ; 226: F8 CLC
- ; 227: 5D POP RBP
- ; 228: C3 RET
- ; 229: CC10 BREAK 16 ; Invalid argument count trap
- NIL
- CL-USER> (defun add-and-two (x y)
- (declare (optimize (speed 3) (safety 0)))
- (declare (fixnum x y))
- (the fixnum (+ x y 2)))
- WARNING: redefining COMMON-LISP-USER::ADD-AND-TWO in DEFUN
- ADD-AND-TWO
- CL-USER> (disassemble 'add-and-two)
- ; disassembly for ADD-AND-TWO
- ; Size: 26 bytes. Origin: #x1009C30B6F
- ; 6F: 84042500000F20 TEST AL, [#x200F0000] ; safepoint
- ; no-arg-parsing entry point
- ; 76: 4801F9 ADD RCX, RDI
- ; 79: 4883C102 ADD RCX, 2
- ; 7D: 48D1E1 SHL RCX, 1
- ; 80: 488BD1 MOV RDX, RCX
- ; 83: 488BE5 MOV RSP, RBP
- ; 86: F8 CLC
- ; 87: 5D POP RBP
- ; 88: C3 RET
- NIL
Advertisement
Add Comment
Please, Sign In to add comment