version 1.8, 2000/06/03 10:06:30
|
version 1.12, 2000/09/23 15:47:02
|
Line 1
|
Line 1
|
\ disasm.fs disassembler file (for MIPS R3000) |
\ disasm.fs disassembler file (for MIPS R3000) |
\ |
\ |
\ Copyright (C) 1995-97 Martin Anton Ertl, Christian Pirker |
\ Copyright (C) 2000 Free Software Foundation, Inc. |
\ |
|
\ This file is part of RAFTS. |
\ This file is part of Gforth. |
\ |
|
\ RAFTS is free software; you can redistribute it and/or |
\ Gforth is free software; you can redistribute it and/or |
\ modify it under the terms of the GNU General Public License |
\ modify it under the terms of the GNU General Public License |
\ as published by the Free Software Foundation; either version 2 |
\ as published by the Free Software Foundation; either version 2 |
\ of the License, or (at your option) any later version. |
\ of the License, or (at your option) any later version. |
\ |
|
\ This program is distributed in the hope that it will be useful, |
\ This program is distributed in the hope that it will be useful, |
\ but WITHOUT ANY WARRANTY; without even the implied warranty of |
\ but WITHOUT ANY WARRANTY; without even the implied warranty of |
\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
\ GNU General Public License for more details. |
\ GNU General Public License for more details. |
\ |
|
\ You should have received a copy of the GNU General Public License |
\ You should have received a copy of the GNU General Public License |
\ along with this program; if not, write to the Free Software |
\ along with this program; if not, write to the Free Software |
\ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. |
|
|
\ this disassembler is based on data from the R4400 manual |
\ this disassembler is based on data from the R4400 manual |
\ http://www.mips.com/Documentation/R4400_Uman_book_Ed2.pdf, in |
\ http://www.mips.com/Documentation/R4400_Uman_book_Ed2.pdf, in |
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 |
get-current |
vocabulary disassembler |
vocabulary disassembler |
Line 94 dup set-current
|
Line 94 dup set-current
|
\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 |
definitions |
|
|