Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CL-USER> (defun fizzbuzz ()
- (flet ((multiple-of-p (number factor)
- (zerop (mod number factor))))
- (loop for i from 1 to 100
- do (print (cond ((multiple-of-p i 15) "fizzbuzz")
- ((multiple-of-p i 5) "buzz")
- ((multiple-of-p i 3) "fizz")
- (t i))))))
- FIZZBUZZ
- CL-USER> (disassemble 'fizzbuzz)
- ; disassembly for FIZZBUZZ
- ; Size: 355 bytes. Origin: #x1006F6D3CF (segment 1 of 2)
- ; 3CF: 498B4C2460 MOV RCX, [R12+96] ; thread.binding-stack-pointer
- ; no-arg-parsing entry point
- ; 3D4: 48894DF8 MOV [RBP-8], RCX
- ; 3D8: 84042500000F20 TEST AL, [#x200F0000] ; safepoint
- ; 3DF: BF02000000 MOV EDI, 2
- ; 3E4: EB6E JMP L2
- ; 3E6: 660F1F840000000000 NOP
- ; 3EF: 90 NOP
- ; 3F0: L0: 488BF7 MOV RSI, RDI
- ; 3F3: 488BCD MOV RCX, RBP
- ; 3F6: 48897DE8 MOV [RBP-24], RDI
- ; 3FA: 488D4424F0 LEA RAX, [RSP-16]
- ; 3FF: 4883EC28 SUB RSP, 40
- ; 403: BB1E000000 MOV EBX, 30
- ; 408: 488908 MOV [RAX], RCX
- ; 40B: 488BE8 MOV RBP, RAX
- ; 40E: E8D9000000 CALL L5
- ; 413: 488B7DE8 MOV RDI, [RBP-24]
- ; 417: 4881F917001020 CMP RCX, 537919511
- ; 41E: 744F JEQ L3
- ; 420: 488B1539FFFFFF MOV RDX, [RIP-199] ; "fizzbuzz"
- ; 427: L1: 488D5C24F0 LEA RBX, [RSP-16]
- ; 42C: 4883EC18 SUB RSP, 24
- ; 430: 48897DE8 MOV [RBP-24], RDI
- ; 434: 488B052DFFFFFF MOV RAX, [RIP-211] ; #<FDEFINITION for PRINT>
- ; 43B: B902000000 MOV ECX, 2
- ; 440: 48892B MOV [RBX], RBP
- ; 443: 488BEB MOV RBP, RBX
- ; 446: FF5009 CALL QWORD PTR [RAX+9]
- ; 449: 488B7DE8 MOV RDI, [RBP-24]
- ; 44D: 488D4F02 LEA RCX, [RDI+2]
- ; 451: 488BF9 MOV RDI, RCX
- ; 454: L2: 84042500000F20 TEST AL, [#x200F0000] ; safepoint
- ; 45B: 4881FFC8000000 CMP RDI, 200
- ; 462: 7E8C JLE L0
- ; 464: BA17001020 MOV EDX, 537919511
- ; 469: 488BE5 MOV RSP, RBP
- ; 46C: F8 CLC
- ; 46D: 5D POP RBP
- ; 46E: C3 RET
- ; 46F: L3: 488BF7 MOV RSI, RDI
- ; 472: 488BCD MOV RCX, RBP
- ; 475: 48897DE8 MOV [RBP-24], RDI
- ; 479: 488D4424F0 LEA RAX, [RSP-16]
- ; 47E: 4883EC28 SUB RSP, 40
- ; 482: BB0A000000 MOV EBX, 10
- ; 487: 488908 MOV [RAX], RCX
- ; 48A: 488BE8 MOV RBP, RAX
- ; 48D: E85A000000 CALL L5
- ; 492: 488B7DE8 MOV RDI, [RBP-24]
- ; 496: 4881F917001020 CMP RCX, 537919511
- ; 49D: 7541 JNE L4
- ; 49F: 488BF7 MOV RSI, RDI
- ; 4A2: 488BCD MOV RCX, RBP
- ; 4A5: 48897DE8 MOV [RBP-24], RDI
- ; 4A9: 488D4424F0 LEA RAX, [RSP-16]
- ; 4AE: 4883EC28 SUB RSP, 40
- ; 4B2: BB06000000 MOV EBX, 6
- ; 4B7: 488908 MOV [RAX], RCX
- ; 4BA: 488BE8 MOV RBP, RAX
- ; 4BD: E82A000000 CALL L5
- ; 4C2: 488B7DE8 MOV RDI, [RBP-24]
- ; 4C6: 488BDF MOV RBX, RDI
- ; 4C9: 488B15A0FEFFFF MOV RDX, [RIP-352] ; "fizz"
- ; 4D0: 4881F917001020 CMP RCX, 537919511
- ; 4D7: 480F44D3 CMOVEQ RDX, RBX
- ; 4DB: E947FFFFFF JMP L1
- ; 4E0: L4: 488B1591FEFFFF MOV RDX, [RIP-367] ; "buzz"
- ; 4E7: E93BFFFFFF JMP L1
- ; 4EC: L5: 8F4508 POP QWORD PTR [RBP+8]
- ; Origin #x1006F6D4EF (segment 2 of 2)
- ; 4EF: 498B4C2460 MOV RCX, [R12+96] ; thread.binding-stack-pointer
- ; no-arg-parsing entry point
- ; 4F4: 48894DF0 MOV [RBP-16], RCX
- ; 4F8: 84042500000F20 TEST AL, [#x200F0000] ; safepoint
- ; 4FF: 4885DB TEST RBX, RBX
- ; 502: 7424 JEQ L6
- ; 504: 488BC6 MOV RAX, RSI
- ; 507: 4899 CQO
- ; 509: 48F7FB IDIV RAX, RBX
- ; 50C: 48D1E0 SHL RAX, 1
- ; 50F: 4885D2 TEST RDX, RDX
- ; 512: B917001020 MOV ECX, 537919511
- ; 517: 41BB4F001020 MOV R11D, 537919567 ; T
- ; 51D: 490F44CB CMOVEQ RCX, R11
- ; 521: 488BE5 MOV RSP, RBP
- ; 524: 5D POP RBP
- ; 525: C3 RET
- ; 526: CC10 BREAK 16 ; Invalid argument count trap
- ; 528: L6: CC0A BREAK 10 ; error trap
- ; 52A: 07 BYTE #X07
- ; 52B: 08 BYTE #X08 ; DIVISION-BY-ZERO-ERROR
- ; 52C: FE1A03 BYTE #XFE, #X1A, #X03 ; RSI
- ; 52F: FE9A01 BYTE #XFE, #X9A, #X01 ; RBX
- NIL
- CL-USER>
Advertisement
Add Comment
Please, Sign In to add comment