version 1.7, 2000/06/03 09:59:08
|
version 1.10, 2000/07/01 20:48:52
|
Line 24
|
Line 24
|
\ it is limited to the R3000 (MIPS-I) architecture, though. |
\ it is limited to the R3000 (MIPS-I) architecture, though. |
|
|
\ test this with |
\ test this with |
\ gforth arch/mips/disasm.fs -e "here" arch/mips/testdisasm.fs -e "here over - disasm-dump bye" |sed 's/([^)]*) //'|diff -u - arch/mips/testasm.fs |
\ gforth arch/mips/disasm.fs -e "here" arch/mips/testdisasm.fs -e "here over - disasm bye" |sed 's/([^)]*) //'|diff -u - arch/mips/testasm.fs |
|
|
|
get-current |
|
vocabulary disassembler |
|
also disassembler definitions |
|
|
\ instruction fields |
\ instruction fields |
|
|
Line 83 $40 disasm-table cp0-tab-entry \ COP
|
Line 87 $40 disasm-table cp0-tab-entry \ COP
|
|
|
\ disassembler central decode cascade |
\ disassembler central decode cascade |
|
|
|
dup set-current |
|
|
: disasm-inst ( addr w -- ) |
: disasm-inst ( addr w -- ) |
\G disassemble instruction w at addr (addr is used for computing |
\G disassemble instruction w at addr (addr is used for computing |
\G branch targets) |
\G branch targets) |
dup disasm-op opc-tab-entry @ execute ; |
dup disasm-op opc-tab-entry @ execute ; |
|
|
: disasm-dump ( addr u -- ) \ gforth |
: disasm ( addr u -- ) \ gforth |
\G disassemble u aus starting at addr |
\G disassemble u aus starting at addr |
bounds u+do |
bounds u+do |
cr ." ( " i hex. ." ) " i i @ disasm-inst |
cr ." ( " i hex. ." ) " i i @ disasm-inst |
1 cells +loop ; |
1 cells +loop |
|
cr ; |
|
|
|
' disasm IS discode |
|
|
|
definitions |
|
|
: disasm-special ( addr w -- ) |
: disasm-special ( addr w -- ) |
\ disassemble inst with opcode special |
\ disassemble inst with opcode special |
Line 269 does> ( addr w -- )
|
Line 280 does> ( addr w -- )
|
drop nip asm-copz-imm1 ; |
drop nip asm-copz-imm1 ; |
|
|
include ./insts.fs |
include ./insts.fs |
|
|
|
previous set-current |