disassembleの結果をハイライト — #:g1

Posted 2011-10-31 15:42:00 GMT


ぼーっとしてたら思い付いたので、SBCL限定ですが、disassembleの結果をハイライトするものを作ってみました。



(declaim (inline thru))
(defun thru (rdx)
(declare (optimize (safety 0) (speed 3) (debug 0)))
rdx)

(defun 4thru (rdx)
(declare (optimize (safety 0) (speed 3) (debug 0)))
(thru (thru (thru (thru rdx)))))

(4thru (* most-positive-fixnum most-positive-fixnum))
;=> 1329227995784915870597964051066650625

こんなコードがある場合、
thru の上で slime-disasm-symbol すると

; disassembly for THRU (4 lines)
MOV RSP, RBP ; no-arg-parsing entry point
CLC
POP RBP
RET

4thru の上で slime-disasm-symbol すると

; disassembly for 4THRU (4 lines)
MOV RSP, RBP ; no-arg-parsing entry point
CLC
POP RBP
RET

という感じです。
SBCLはどうやらインストラクションの出力もカスタマイズできるように見えるのですが、どういう作りになっているのか、ぱっと見理解できなかったので出力の整形は cl-ppcre で逃げました。
SBCLはインテル構文で出力されるのがデフォルトですが、色々できるのかもしれません。
カスタマイズ手段があるなら、いつかはそっちの方法でやってみたいところです。

comments powered by Disqus