Jim Newton
12/4/2015 11:07:00 AM
>
> It will be implementation dependant; you can use:
>
> (declaim (optimize (speed 3) (space 3) (safety 0) (debug 0)))
> (disassemble (compile nil ...
>
It does not really produce assembler code I can judge the efficiency of.
; disassembly for (LAMBDA (SEQ))
; Size: 452 bytes. Origin: #x12B516D943 (segment 1 of 2)
; 943: 498B442460 MOV RAX, [R12+96] ; thread.binding-stack-pointer
; no-arg-parsing entry point
; 948: 488945E8 MOV [RBP-24], RAX
; 94C: 498B442448 MOV RAX, [R12+72] ; thread.current-catch-block
; 951: 488945E0 MOV [RBP-32], RAX
; 955: 488965F0 MOV [RBP-16], RSP
; 959: 488D4DB8 LEA RCX, [RBP-72]
; 95D: 498B442450 MOV RAX, [R12+80] ; thread.current-unwind-protect-block
; 962: 488901 MOV [RCX], RAX
; 965: 48896908 MOV [RCX+8], RBP
; 969: 488D05D2000000 LEA RAX, [RIP+210] ; = L8
; 970: 48894110 MOV [RCX+16], RAX
; 974: 48894DB0 MOV [RBP-80], RCX
; 978: 0F1F840000000000 NOP
; 980: L0: 488BCD MOV RCX, RBP
; 983: 488D4424F0 LEA RAX, [RSP-16]
; 988: 4883EC70 SUB RSP, 112
; 98C: 488BD1 MOV RDX, RCX
; 98F: 488908 MOV [RAX], RCX
; 992: 488BE8 MOV RBP, RAX
; 995: E86A010000 CALL L15
; 99A: 4881FA17001020 CMP RDX, 537919511
; 9A1: 0F8594000000 JNE L7
; 9A7: 488BD5 MOV RDX, RBP
; 9AA: 488D4424F0 LEA RAX, [RSP-16]
; 9AF: 4883EC70 SUB RSP, 112
; 9B3: 488B75B0 MOV RSI, [RBP-80]
; 9B7: 488BCA MOV RCX, RDX
; 9BA: 488910 MOV [RAX], RDX
; 9BD: 488BE8 MOV RBP, RAX
; 9C0: E8D6000000 CALL L13
; 9C5: 4881FA17001020 CMP RDX, 537919511
; 9CC: 740D JEQ L1
; 9CE: 8D42F1 LEA EAX, [RDX-15]
; 9D1: A80F TEST AL, 15
; 9D3: 7545 JNE L4
; 9D5: 807AF145 CMP BYTE PTR [RDX-15], 69
; 9D9: 753F JNE L4
; 9DB: L1: 488BD5 MOV RDX, RBP
; 9DE: 488D4424F0 LEA RAX, [RSP-16]
; 9E3: 4883EC70 SUB RSP, 112
; 9E7: 488B75B0 MOV RSI, [RBP-80]
; 9EB: 488BCA MOV RCX, RDX
; 9EE: 488910 MOV [RAX], RDX
; 9F1: 488BE8 MOV RBP, RAX
; 9F4: E8A2000000 CALL L13
; 9F9: 8D42F1 LEA EAX, [RDX-15]
; 9FC: A801 TEST AL, 1
; 9FE: 750E JNE L2
; A00: 3C0A CMP AL, 10
; A02: 740A JEQ L2
; A04: A80F TEST AL, 15
; A06: 750B JNE L3
; A08: 807AF129 CMP BYTE PTR [RDX-15], 41
; A0C: 7705 JNBE L3
; A0E: L2: E96DFFFFFF JMP L0
; A13: L3: BE17001020 MOV ESI, 537919511
; A18: EB78 JMP L12
; A1A: L4: 8D42F1 LEA EAX, [RDX-15]
; A1D: A801 TEST AL, 1
; A1F: 7515 JNE L6
; A21: 3C0A CMP AL, 10
; A23: 7411 JEQ L6
; A25: A80F TEST AL, 15
; A27: 7506 JNE L5
; A29: 807AF129 CMP BYTE PTR [RDX-15], 41
; A2D: 7607 JBE L6
; A2F: L5: BE17001020 MOV ESI, 537919511
; A34: EB5C JMP L12
; A36: L6: E945FFFFFF JMP L0
; A3B: L7: BE4F001020 MOV ESI, 537919567 ; T
; A40: EB50 JMP L12
; A42: L8: BA17001020 MOV EDX, 537919511
; A47: E304 JRCXZ L9
; A49: 488B53F8 MOV RDX, [RBX-8]
; A4D: L9: 488B65F0 MOV RSP, [RBP-16]
; A51: 488BF2 MOV RSI, RDX
; A54: 488B45E0 MOV RAX, [RBP-32]
; A58: 4989442448 MOV [R12+72], RAX ; thread.current-catch-block
; A5D: 488B7DE8 MOV RDI, [RBP-24]
; A61: 498B4C2460 MOV RCX, [R12+96] ; thread.binding-stack-pointer
; A66: 4839CF CMP RDI, RCX
; A69: 7427 JEQ L12
; A6B: 31DB XOR EBX, EBX
; A6D: L10: 4883E910 SUB RCX, 16
; A71: 488B4108 MOV RAX, [RCX+8]
; A75: 4885C0 TEST RAX, RAX
; A78: 740B JEQ L11
; A7A: 488B11 MOV RDX, [RCX]
; A7D: 49891404 MOV [R12+RAX], RDX
; A81: 48895908 MOV [RCX+8], RBX
; A85: L11: 488919 MOV [RCX], RBX
; A88: 4839CF CMP RDI, RCX
; A8B: 75E0 JNE L10
; A8D: 49894C2460 MOV [R12+96], RCX ; thread.binding-stack-pointer
; A92: L12: 488BD6 MOV RDX, RSI
; A95: 488BE5 MOV RSP, RBP
; A98: F8 CLC
; A99: 5D POP RBP
; A9A: C3 RET
; A9B: L13: 8F4508 POP QWORD PTR [RBP+8]
; Origin #x12B516DA9E (segment 2 of 2)
; A9E: 48894DA8 MOV [RBP-88], RCX ; no-arg-parsing entry point
; AA2: 488975A0 MOV [RBP-96], RSI
; AA6: 488BDD MOV RBX, RBP
; AA9: 488D4424F0 LEA RAX, [RSP-16]
; AAE: 4883EC70 SUB RSP, 112
; AB2: 488BD1 MOV RDX, RCX
; AB5: 488918 MOV [RAX], RBX
; AB8: 488BE8 MOV RBP, RAX
; ABB: E844000000 CALL L15
; AC0: 488B75A0 MOV RSI, [RBP-96]
; AC4: 488B4DA8 MOV RCX, [RBP-88]
; AC8: 4881FA17001020 CMP RDX, 537919511
; ACF: 7519 JNE L14
; AD1: 488B41F8 MOV RAX, [RCX-8]
; AD5: 488B50F9 MOV RDX, [RAX-7]
; AD9: 488B41F8 MOV RAX, [RCX-8]
; ADD: 488B4001 MOV RAX, [RAX+1]
; AE1: 488941F8 MOV [RCX-8], RAX
; AE5: 488BE5 MOV RSP, RBP
; AE8: 5D POP RBP
; AE9: C3 RET
; AEA: L14: BA17001020 MOV EDX, 537919511
; AEF: 488BDC MOV RBX, RSP
; AF2: 52 PUSH RDX
; AF3: B902000000 MOV ECX, 2
; AF8: 488BC6 MOV RAX, RSI
; AFB: 41BB40010020 MOV R11D, 536871232 ; UNWIND
; B01: 41FFE3 JMP R11
; B04: L15: 8F4508 POP QWORD PTR [RBP+8]
NIL