The GForth debugger is giving me weird results when I'm trying stuff with
recursion, for example take this factorial word

: FACTORIAL ( +n1 -- +n2)
   DUP 2 < IF DROP 1 EXIT THEN
   DUP 1- RECURSE *
;


If I try 3 dbg FACTORIAL I get

: FACTORIAL
Scanning code...

Nesting debugger ready!
[ 1 ] 00003
7F4E5EC372F0 55ED908EF498 dup            -> [ 2 ] 00003 00003
7F4E5EC372F8 55ED908EF1C0 2              -> [ 3 ] 00003 00003 00002
7F4E5EC37308 55ED908EF320 <              -> [ 2 ] 00003 00000
7F4E5EC37310 55ED908EF0B8 IF             -> [ 1 ] 00003
7F4E5EC37340 55ED908EF498 THEN dup       -> [ 2 ] 00003 00003
7F4E5EC37348 55ED908EF1F8 1-             -> [ 2 ] 00003 00002
7F4E5EC37350 55ED908EF070 FACTORIAL      -> [ 3 ] 00003 00002 00001
7F4E5EC37360 55ED908EF218 *              -> [ 2 ] 00003 00002
7F4E5EC37368 55ED908EF088 ;              ->  ok
  ok
.s <1> 6  ok


So the debugger makes it seem like when I run 3 FACTORIAL the result should
be 2, 3 in the stack, which isn't what it should show. If I run 3 FACTORIAL
without debugging then the result is 6 in the stack.

Reply via email to