Diff for /gforth/arch/alpha/disasm.fs between versions 1.2 and 1.4

version 1.2, 1999/10/13 13:00:08 version 1.4, 2000/06/17 19:38:28
Line 4 Line 4
   
 \ util  \ util
   
 : h@ ( addr -- n )  \ 32 bit fetch  require asm.fs
 dup dup aligned = if  
   @  \  : h@ ( addr -- n )  \ 32 bit fetch
   $00000000ffffffff and  \  dup dup aligned = if
 else  \    @
   4 - @  \    $00000000ffffffff and
   $20 rshift  \  else
 endif  \    4 - @
 ;  \    $20 rshift
   \  endif
   \  ;
   
   also assembler
   vocabulary disassembler
   get-current
   also disassembler definitions
   
 create string_table  create string_table
 1000 allot  1000 allot
Line 260  create decode_code Line 267  create decode_code
 : decode_Bra ( instruction tbentry -- )  : decode_Bra ( instruction tbentry -- )
   swap    swap
   dup $03e00000 and 21 rshift decode_register    dup $03e00000 and 21 rshift decode_register
   $001fffff and .    $001fffff and hex.
   print_string    print_string
 ;  ;
   
Line 282  create decode_code Line 289  create decode_code
 : decode_Mem ( instruction tbentry -- )  : decode_Mem ( instruction tbentry -- )
   swap    swap
   dup $03e00000 and 21 rshift decode_register    dup $03e00000 and 21 rshift decode_register
   dup $0000ffff and .    dup $0000ffff and dup 15 rshift negate 15 lshift or .
   $001f0000 and 16 rshift decode_register    $001f0000 and 16 rshift decode_register
   print_string    print_string
 ;  ;
Line 415  create opcode_table Line 422  create opcode_table
   
 drop \ string_table end  drop \ string_table end
   
 : decode_inst ( n -- )  \ instruction decoder  set-current
   
   : disasm-inst ( n -- )  \ instruction decoder
   dup $fc000000 and    dup $fc000000 and
   26 rshift cells    26 rshift cells
   opcode_table +    opcode_table +
Line 424  drop \ string_table end Line 433  drop \ string_table end
   $2c emit cr    $2c emit cr
 ;  ;
   
 : disasm ( addr n -- )  \ disassembler  : disasm ( addr u -- )  \ gforth
 cr 0      \G disassemble u aus starting at addr
 ?do      cr bounds
   dup h@      u+do
   over $28 emit space . $29 emit space          ." ( " i hex. ."  ) "
   decode_inst          i h@ disasm-inst
   4 +          4
 loop      +loop ;
 drop  
 ;  ' disasm is discode
   
   previous previous

Removed from v.1.2  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>