--- gforth/simp-see.fs 2003/03/09 15:16:52 1.4 +++ gforth/simp-see.fs 2007/12/31 17:34:58 1.6 @@ -1,6 +1,6 @@ \ simple-minded see (good for seeing what the compiler produces) -\ Copyright (C) 2001,2003 Free Software Foundation, Inc. +\ Copyright (C) 2001,2003,2007 Free Software Foundation, Inc. \ This file is part of Gforth. @@ -20,11 +20,13 @@ require see.fs +: simple-see-word { addr -- } + xpos off addr hex. addr cell+ addr @ .word drop ; + : simple-see-range ( addr1 addr2 -- ) \ gforth swap u+do - cr xpos off i hex. i cell+ i @ .word drop - cell +loop -; + cr i simple-see-word + cell +loop ; : simple-see ( "name" -- ) \ gforth \G a simple decompiler that's closer to @code{dump} than @code{see}. @@ -32,3 +34,29 @@ require see.fs \ comment in HEAD?) ' >body dup next-head simple-see-range ; +: see-code-next-inline { addr1 addr2 -- addr3 } + \ decompile starting at addr1 until an inlined primitive is found, + \ or addr2 is reached; addr3 is addr2 or the next inlined + \ primitive + addr1 begin { addr } + addr addr2 u< while + addr @ dup decompile-prim = while + addr cr simple-see-word + addr cell+ + repeat then + addr ; + +: see-code-range { addr1 addr2 -- } \ gforth + cr addr1 begin { a } + a simple-see-word + a cell+ addr2 see-code-next-inline { b } + b addr2 u< while + a @ b @ over - discode + b + repeat ; + +: see-code ( "name" -- ) \ gforth +\G like @code{simple-see}, but also shows the dynamic native code for +\G the inlined primitives (except for the last). + ' >body dup next-head see-code-range ; +