CL-USER> (disassemble (compile nil (lambda (x) (loop for i below (length x) do (setf (aref x i) (floor (aref x i) 2)))))) ; disassembly for (LAMBDA (X)) ; Size: 336 bytes. Origin: #x536C0115 ; (LAMBDA (X)) ; 115: 498B4510 MOV RAX, [R13+16] ; thread.binding-stack-pointer ; 119: 488945F8 MOV [RBP-8], RAX ; 11D: 4883EC10 SUB RSP, 16 ; 121: 488B55F0 MOV RDX, [RBP-16] ; 125: B902000000 MOV ECX, 2 ; 12A: 48892C24 MOV [RSP], RBP ; 12E: 488BEC MOV RBP, RSP ; 131: B8901AA052 MOV EAX, #x52A01A90 ; LENGTH ; 136: FFD0 CALL RAX ; 138: 488955E0 MOV [RBP-32], RDX ; 13C: 48C745E800000000 MOV QWORD PTR [RBP-24], 0 ; 144: E9F2000000 JMP L4 ; 149: 0F1F8000000000 NOP ; 150: L0: 488B45E8 MOV RAX, [RBP-24] ; 154: 488945D8 MOV [RBP-40], RAX ; 158: 488B7DE8 MOV RDI, [RBP-24] ; 15C: 488B4DF0 MOV RCX, [RBP-16] ; 160: 488D41F1 LEA RAX, [RCX-15] ; 164: A80F TEST AL, 15 ; 166: 7506 JNE L1 ; 168: 8A00 MOV AL, [RAX] ; 16A: 2C85 SUB AL, -123 ; 16C: 3C71 CMP AL, 113 ; 16E: L1: 0F83E8000000 JNB L7 ; 174: 488B55F0 MOV RDX, [RBP-16] ; 178: 4883EC10 SUB RSP, 16 ; 17C: B904000000 MOV ECX, 4 ; 181: 48892C24 MOV [RSP], RBP ; 185: 488BEC MOV RBP, RSP ; 188: B822BE3550 MOV EAX, #x5035BE22 ; # ; 18D: FFD0 CALL RAX ; 18F: 4C8BC2 MOV R8, RDX ; 192: 4C8945D0 MOV [RBP-48], R8 ; 196: 498D40F1 LEA RAX, [R8-15] ; 19A: A801 TEST AL, 1 ; 19C: 7515 JNE L2 ; 19E: 3C0A CMP AL, 10 ; 1A0: 7411 JEQ L2 ; 1A2: A80F TEST AL, 15 ; 1A4: 0F85AF000000 JNE L6 ; 1AA: 80381D CMP BYTE PTR [RAX], 29 ; 1AD: 0F87A6000000 JNBE L6 ; 1B3: L2: 498BD0 MOV RDX, R8 ; 1B6: 4883EC10 SUB RSP, 16 ; 1BA: BF04000000 MOV EDI, 4 ; 1BF: B904000000 MOV ECX, 4 ; 1C4: 48892C24 MOV [RSP], RBP ; 1C8: 488BEC MOV RBP, RSP ; 1CB: B8A2483550 MOV EAX, #x503548A2 ; # ; 1D0: FFD0 CALL RAX ; 1D2: 4C8B45D0 MOV R8, [RBP-48] ; 1D6: 4C8BCA MOV R9, RDX ; 1D9: 4C894DC8 MOV [RBP-56], R9 ; 1DD: 488BD7 MOV RDX, RDI ; 1E0: 31FF XOR EDI, EDI ; 1E2: FF14254001A052 CALL QWORD PTR [#x52A00140] ; SB-VM::GENERIC-= ; 1E9: 4C8B4DC8 MOV R9, [RBP-56] ; 1ED: 4C8B45D0 MOV R8, [RBP-48] ; 1F1: 7461 JEQ L5 ; 1F3: 31FF XOR EDI, EDI ; 1F5: 498BD0 MOV RDX, R8 ; 1F8: FF14253001A052 CALL QWORD PTR [#x52A00130] ; SB-VM::GENERIC-< ; 1FF: 4C8B4DC8 MOV R9, [RBP-56] ; 203: 7D4F JNL L5 ; 205: BF02000000 MOV EDI, 2 ; 20A: 498BD1 MOV RDX, R9 ; 20D: FF14251801A052 CALL QWORD PTR [#x52A00118] ; SB-VM::GENERIC-- ; 214: 488BF2 MOV RSI, RDX ; 217: L3: 4883EC10 SUB RSP, 16 ; 21B: 488B55F0 MOV RDX, [RBP-16] ; 21F: 488B7DD8 MOV RDI, [RBP-40] ; 223: B906000000 MOV ECX, 6 ; 228: 48892C24 MOV [RSP], RBP ; 22C: 488BEC MOV RBP, RSP ; 22F: B8A20D3750 MOV EAX, #x50370DA2 ; # ; 234: FFD0 CALL RAX ; 236: 488345E802 ADD QWORD PTR [RBP-24], 2 ; 23B: L4: 488B45E8 MOV RAX, [RBP-24] ; 23F: 483B45E0 CMP RAX, [RBP-32] ; 243: 0F8C07FFFFFF JL L0 ; 249: BA17011050 MOV EDX, #x50100117 ; NIL ; 24E: 488BE5 MOV RSP, RBP ; 251: F8 CLC ; 252: 5D POP RBP ; 253: C3 RET ; 254: L5: 498BF1 MOV RSI, R9 ; 257: EBBE JMP L3 ; 259: L6: CC5D INT3 93 ; OBJECT-NOT-REAL-ERROR ; 25B: 20 BYTE #X20 ; R8(d) ; 25C: L7: 488B45F0 MOV RAX, [RBP-16] ; 260: CC53 INT3 83 ; OBJECT-NOT-VECTOR-ERROR ; 262: 00 BYTE #X00 ; RAX(d) ; 263: CC10 INT3 16 ; Invalid argument count trap NIL CL-USER> (disassemble (compile nil (lambda (x) (declare (type (simple-array fixnum (*)) x) (optimize speed)) (loop for i below (length x) do (setf (aref x i) (floor (aref x i) 2)))))) ; disassembly for (LAMBDA (X)) ; Size: 59 bytes. Origin: #x536AFE8C ; (LAMBDA (X)) ; 8C: 488B72F9 MOV RSI, [RDX-7] ; 90: 31C9 XOR ECX, ECX ; 92: EB21 JMP L1 ; 94: 660F1F840000000000 NOP ; 9D: 0F1F00 NOP ; A0: L0: 488B5C8A01 MOV RBX, [RDX+RCX*4+1] ; A5: 48D1FB SAR RBX, 1 ; A8: 4883E3FE AND RBX, -2 ; AC: 48895C8A01 MOV [RDX+RCX*4+1], RBX ; B1: 4883C102 ADD RCX, 2 ; B5: L1: 4839F1 CMP RCX, RSI ; B8: 7CE6 JL L0 ; BA: BA17011050 MOV EDX, #x50100117 ; NIL ; BF: 488BE5 MOV RSP, RBP ; C2: F8 CLC ; C3: 5D POP RBP ; C4: C3 RET ; C5: CC10 INT3 16 ; Invalid argument count trap