Plaster
New
List
Login
common-lisp
default
anonymous
2024.01.25 12:35:05
CL-USER> (labels ((bar (x) (if (= x 0) :bar (foo (1- x)))) (foo (x) (if (= x 0) :foo (baz))) (baz () :baz)) (disassemble #'foo) (disassemble #'bar) (disassemble #'baz)) ; disassembly for (LABELS FOO) ; Size: 38 bytes. Origin: #x5506B223 ; (LABELS FOO) ; 23: 498B4D10 MOV RCX, [R13+16] ; thread.binding-stack-pointer ; 27: 48894DE8 MOV [RBP-24], RCX ; 2B: 488945D0 MOV [RBP-48], RAX ; 2F: 31FF XOR EDI, EDI ; 31: 488BD0 MOV RDX, RAX ; 34: FF142578060050 CALL [#x50000678] ; #x53E01140: GENERIC-= ; 3B: 488B45D0 MOV RAX, [RBP-48] ; 3F: 75AE JNE #x5506B1EF <------------------------------------------------------ HERE ; 41: BABF513750 MOV EDX, #x503751BF ; ':FOO ; 46: C9 LEAVE ; 47: F8 CLC ; 48: C3 RET ; disassembly for (LABELS BAR) ; Size: 63 bytes. Origin: #x5506B270 ; (LABELS BAR) ; 70: 498B4510 MOV RAX, [R13+16] ; thread.binding-stack-pointer ; 74: 488945E0 MOV [RBP-32], RAX ; 78: 488B55D8 MOV RDX, [RBP-40] ; 7C: 31FF XOR EDI, EDI ; 7E: FF142578060050 CALL [#x50000678] ; #x53E01140: GENERIC-= ; 85: 7418 JEQ L0 ; 87: 488B55D8 MOV RDX, [RBP-40] ; 8B: BF02000000 MOV EDI, 2 ; 90: FF142550060050 CALL [#x50000650] ; #x53E00F80: GENERIC-- ; 97: 488BC2 MOV RAX, RDX ; 9A: E984FFFFFF JMP #x5506B223 <------------------------------------------------------ AND HERE ; 9F: L0: BAEF513750 MOV EDX, #x503751EF ; ':BAR ; A4: C9 LEAVE ; A5: F8 CLC ; A6: C3 RET ; A7: CC10 INT3 16 ; Invalid argument count trap ; A9: CC10 INT3 16 ; Invalid argument count trap ; AB: CC10 INT3 16 ; Invalid argument count trap ; AD: CC10 INT3 16 ; Invalid argument count trap ; disassembly for (LABELS BAZ) ; Size: 16 bytes. Origin: #x5506B1EF ; (LABELS BAZ) ; EF: 498B4510 MOV RAX, [R13+16] ; thread.binding-stack-pointer ; F3: 488945F0 MOV [RBP-16], RAX ; F7: BA1F523750 MOV EDX, #x5037521F ; ':BAZ ; FC: C9 LEAVE ; FD: F8 CLC ; FE: C3 RET
Raw
Annotate
Repaste
Edit