body, table{font-family: 微软雅黑}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}

快速运算符
PC/FORTH定点原理-LMLPHP
1+ 代替 + 的好处,第一,每次使用都能节省一些词典空间;第二,由于这种词都是用各个具体机器语言特殊定义的,具有该机器结构上的优点,执行起来比用 1 和 + 快;第三,可节省编译时间;

杂项算术运算符
PC/FORTH定点原理-LMLPHP
ABS  求栈顶的数的绝对值再放回栈中 PC/FORTH定点原理-LMLPHP
MIN  取栈中最前面的两个数比较大小,取最小的一个数放回栈中 PC/FORTH定点原理-LMLPHP
  

返回堆栈
  
   forth系统两个堆栈,一个参数堆栈(通常使用,一般叫做堆栈),一个返回堆栈
参数堆栈: 参数堆栈用来保存词与词之间所传递的参数(或称自变量)的堆栈。
返回堆栈: 用来保存一些“指针”的堆栈。也可以当作参数堆栈的辅助栈来使用,在参数堆栈进行操作时,可用返回堆栈暂存某些值。
注意:返回堆栈中无论放了什么内容,当你到达定义结束(;)之前必须把它们再移出返回堆栈,因为此时 FORTH 系统要在返回堆栈中寻找指针了。返回堆栈不能用来传递词与词之间的参数。
PC/FORTH定点原理-LMLPHP//图片中的栈标志都是描述参数堆栈的
R@  复制返回栈顶的参数到参数栈
>R  和   <R  两个词必须成对出现在同一定义中。如果是用会话方式执行,则必须成对用于输入的同一行(即在按RETURN之前)
>R   SWAP   R>
PC/FORTH定点原理-LMLPHP
利用返回栈计算 ax^2 + bx + c ( a  b  c  x  -  -  )
PC/FORTH定点原理-LMLPHP//后面三个与我用的pc/forth 2.0有区别




浮点运算
浮点显示:PC/FORTH定点原理-LMLPHP
PC/FORTH定点原理-LMLPHP
定点计算效率高于浮点运算,效率高三倍;但是采用浮点运算程序设计效率会提高,程序员不必考虑输出结果的时候插入小数点。

乘—除换算符
*/  ( n1  n2  n3  --   n  result  )  ===>    ( n1*n2 ) / n3
PC/FORTH定点原理-LMLPHP
n1 * n2 的中间结果为32位,是 "一个双子长中间结果"  , 用  *  和  /  不一定能代替  */  
PC/FORTH定点原理-LMLPHP
PC/FORTH定点原理-LMLPHP// 第三个的四舍五入错误,应该是73。
定义一个能舍入的白分词  R%
:  R%     10  */  5  +  10  /  ;   先除以10在加上5,这样四舍五入的时候能保证正确
PC/FORTH定点原理-LMLPHP

比例换算的透视

*/     和      */MOD 
PC/FORTH定点原理-LMLPHP
PC/FORTH定点原理-LMLPHP
PC/FORTH定点原理-LMLPHP
05-08 15:08