Contact/support | Changelog

SBCL disassemble

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
SSO> (disassemble (lambda () (+ 2 3)))
; disassembly for (LAMBDA ())
; 0DF56D64:       BA0A000000       MOV EDX, 10                ; no-arg-parsing entry point
;       69:       488BE5           MOV RSP, RBP
;       6C:       F8               CLC
;       6D:       5D               POP RBP
;       6E:       C3               RET
;       6F:       CC0A             BREAK 10                   ; error trap
;       71:       02               BYTE #X02
;       72:       18               BYTE #X18                  ; INVALID-ARG-COUNT-ERROR
;       73:       54               BYTE #X54                  ; RCX
NIL
SSO> (disassemble (lambda () (+ 666 (random))))
; in: DISASSEMBLE (LAMBDA () (+ 666 (RANDOM)))
;     (RANDOM)
; 
; caught WARNING:
;   The function was called with zero arguments, but wants at least one.
; 
; compilation unit finished
;   caught 1 WARNING condition
; disassembly for (LAMBDA ())
; 0DF89124:       488D5424F0       LEA RDX, [RSP-16]          ; no-arg-parsing entry point
;       29:       4883EC18         SUB RSP, 24
;       2D:       488B059CFFFFFF   MOV RAX, [RIP-100]         ; #<FDEFINITION object for RANDOM>
;       34:       31C9             XOR ECX, ECX
;       36:       48892A           MOV [RDX], RBP
;       39:       488BEA           MOV RBP, RDX
;       3C:       FF5009           CALL QWORD PTR [RAX+9]
;       3F:       480F42E3         CMOVB RSP, RBX
;       43:       BF34050000       MOV EDI, 1332
;       48:       4C8D1C25E0010020 LEA R11, [#x200001E0]      ; GENERIC-+
;       50:       41FFD3           CALL R11
;       53:       480F42E3         CMOVB RSP, RBX
;       57:       488BE5           MOV RSP, RBP
;       5A:       F8               CLC
;       5B:       5D               POP RBP
;       5C:       C3               RET
;       5D:       CC0A             BREAK 10                   ; error trap
;       5F:       02               BYTE #X02
;       60:       18               BYTE #X18                  ; INVALID-ARG-COUNT-ERROR
;       61:       54               BYTE #X54                  ; RCX
NIL