common lispのdisassembleを使うとアセンブラっぽく出力できる。
* (defun add1 (a) (+ a 1))
ADD1
* (disassemble 'add1)
; disassembly for ADD1
; 119CBD7A: 8B55F4 MOV EDX, [EBP-12] ; no-arg-parsing entry point
; 7D: BF04000000 MOV EDI, 4
; 82: E8B94363F2 CALL #x4000140 ; GENERIC-+
; 87: 7302 JNB L0
; 89: 8BE3 MOV ESP, EBX
; 8B: L0: 8D65F8 LEA ESP, [EBP-8]
; 8E: F8 CLC
; 8F: 8B6DFC MOV EBP, [EBP-4]
; 92: C20400 RET 4
; 95: 0F0B0A BREAK 10 ; error trap
; 98: 02 BYTE #X02
; 99: 18 BYTE #X18 ; INVALID-ARG-COUNT-ERROR
; 9A: 4D BYTE #X4D ; ECX
NIL
プログラミングの力を生み出す本を読んだので、アセンブラもちょっとは楽しくなってきた。
で、この本の後ろのほうの章(マルチスレッドとか)が気になっているんだけど、ちと高い。