如何使整个浮动堆栈可见?

时间:2018-12-26 10:50:15

标签: stack forth

Forth编程语言使用堆栈在函数之间传递参数。代替给子函数一个数字作为直接信息,该值首先放在数据堆栈中,另一个函数从堆栈中获取该值。

Forth的一个特殊功能是处理不同堆栈上的整数值和浮点值。这意味着不可能将浮点值推入数据栈。用Forth编写简短的程序时,通常需要调试代码行。

这可以通过打印出堆栈中的内容来实现。如果开发人员看到了当前堆栈中的内容,那么他​​/她就很容易理解代码有什么问题。打印出堆栈的内容对于错误跟踪很重要。

将两个数字压入普通数据栈后,可以显示其内容。在此示例中,输入“ .s”命令后,两个整数均被打印出来。但是,如果我将两个浮点数推入专用的浮点堆栈,则仅显示最后一个元素。如何使整个浮动堆栈可见?

gforth example.fs
1 2 .s cr        \ <2> 1 2
1.0e 2.0e f. cr  \ 2.
bye

2 个答案:

答案 0 :(得分:3)

Gforth带有f.s一词,完全可以满足您的需求。

请参阅Gforth手册的"Examining" section

答案 1 :(得分:1)

一种可能的便携式解决方案(Forth-2012计划)

\ print floating-point stack content
: .f ( F: i*r -- i*r )
  fdepth 0= if exit then
  here df! 1 dfloats allot
  recurse -1 dfloats allot
  here df@ fdup f.
;