diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-03-23 21:44:22 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-03-23 21:44:22 -0700 |
commit | 4eb3be4a62a87e92d3ad674825611b340c1c38e5 (patch) | |
tree | ff1772113eba6b0fc15cd66bd5c20a5aa35b816f | |
parent | 19eb7cd0248775b847daaa6e69949f82661167b6 (diff) | |
download | txr-4eb3be4a62a87e92d3ad674825611b340c1c38e5.tar.gz txr-4eb3be4a62a87e92d3ad674825611b340c1c38e5.tar.bz2 txr-4eb3be4a62a87e92d3ad674825611b340c1c38e5.zip |
asm: report instruction count in disassembly.
* share/txr/stdlib/asm.tl (assembler dis-listing): Return the
number of instructions that were traversed.
(disassemble-c-d): Print count after instruction listing.
-rw-r--r-- | share/txr/stdlib/asm.tl | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/share/txr/stdlib/asm.tl b/share/txr/stdlib/asm.tl index 34eeed45..b6e8dff5 100644 --- a/share/txr/stdlib/asm.tl +++ b/share/txr/stdlib/asm.tl @@ -203,18 +203,21 @@ (defmeth assembler dis-listing (me : (stream *stdout*)) (let ((p 0) + (c 0) (l (len me.buf))) me.(set-pos p) (while (< p l) (let* ((dis me.(dis-one)) (dis-txt (cat-str [mapcar tostringp dis] " ")) (q me.(cur-pos))) + (inc c) me.(set-pos p) (format t "~,5d: ~,08X ~a\n" (trunc p 4) me.(get-word) dis-txt) (while (< (inc p 4) q) (format t "~,5d: ~,08X\n" (trunc p 4) me.(get-word))) me.(set-pos q) - (set p q))))) + (set p q))) + c)) (defvarl %oc-list-builder% (new list-builder)) @@ -670,7 +673,9 @@ (put-line "funs:") (mapdo (do format t "~5d: ~s\n" @1 @2) (range 0) funv) (put-line "code:") - asm.(dis-listing))) + (let ((ninsn asm.(dis-listing))) + (put-line "instruction count:") + (format t "~5d\n" ninsn)))) (defun usr:disassemble (obj : (stream *stdout*)) (typecase obj |