summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-03-14 12:07:04 +0100
committerAndy Wingo <wingo@oblong.net>2009-03-17 16:47:19 +0100
commita3f0ff0faf0f1a849efc49b1a77cea620208c041 (patch)
tree891816439b360492cf9a0708ab38c44f6a19ec31
parent6fe6a2a27d6a8285a837fce46227fedf41efc38f (diff)
downloadguile-a3f0ff0faf0f1a849efc49b1a77cea620208c041.tar.gz
update disassembler for changes to decompiler
* module/language/assembly/disassemble.scm (disassemble-load-program) (code-annotation): And update the disassembler for changes to decompiler.
-rw-r--r--module/language/assembly/disassemble.scm9
1 files changed, 5 insertions, 4 deletions
diff --git a/module/language/assembly/disassemble.scm b/module/language/assembly/disassemble.scm
index efb0f8be7..2752934f9 100644
--- a/module/language/assembly/disassemble.scm
+++ b/module/language/assembly/disassemble.scm
@@ -64,7 +64,8 @@
(acons sym asm programs))))
(else
(print-info pos asm
- (code-annotation end asm objs nargs blocs bexts)
+ (code-annotation end asm objs nargs blocs bexts
+ labels)
(and=> (and srcs (assq end srcs)) source->string))
(lp (+ pos (byte-length asm)) (cdr code) programs)))))))
@@ -122,7 +123,7 @@
(define (make-int16 byte1 byte2)
(+ (* byte1 256) byte2))
-(define (code-annotation end-addr code objs nargs blocs bexts)
+(define (code-annotation end-addr code objs nargs blocs bexts labels)
(let* ((code (assembly-unpack code))
(inst (car code))
(args (cdr code)))
@@ -130,7 +131,7 @@
((list vector)
(list "~a element~:p" (apply make-int16 args)))
((br br-if br-if-eq br-if-not br-if-not-eq br-if-not-null br-if-null)
- (list "-> ~A" (+ end-addr (apply make-int16 args))))
+ (list "-> ~A" (assq-ref labels (car args))))
((object-ref)
(and objs (list "~s" (vector-ref objs (car args)))))
((local-ref local-set)
@@ -157,7 +158,7 @@
(list "~s" (variable-ref v))
(list "`~s'" v)))))
((mv-call)
- (list "MV -> ~A" (+ end-addr (apply make-int16 (cdr args)))))
+ (list "MV -> ~A" (assq-ref labels (cadr args))))
(else
(and=> (assembly->object code)
(lambda (obj) (list "~s" obj)))))))