diff options
author | Andy Wingo <wingo@pobox.com> | 2009-03-14 12:07:04 +0100 |
---|---|---|
committer | Andy Wingo <wingo@oblong.net> | 2009-03-17 16:47:19 +0100 |
commit | a3f0ff0faf0f1a849efc49b1a77cea620208c041 (patch) | |
tree | 891816439b360492cf9a0708ab38c44f6a19ec31 | |
parent | 6fe6a2a27d6a8285a837fce46227fedf41efc38f (diff) | |
download | guile-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.scm | 9 |
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))))))) |