听说只要在运算符前面加一个F,然后在最后加一个(.),就可以计算出浮点数,然后显示出来。但它给了我这个答案:
2 3 F/ .
:8: Floating-point stack underflow
2 3 >>>F/<<< .
Backtrace:
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到0.66666667 ok?
jonesforth 通常按如下方式启动:
cat jonesforth.f - | ./jonesforth
Run Code Online (Sandbox Code Playgroud)
有什么好的调试方法吗jonesforth?
在试图找出 Forth 如何管理字典(以及一般内存)时,我遇到了这个页面。熟悉 C 语言后,我对指针的概念没有任何问题,并且我认为我对所有内容的理解都是正确的。然而,在页面的最后有几个练习,在这里我注意到一些奇怪的事情。
练习9.4,假设DATE已被定义为a VARIABLE,询问之间的区别是什么
DATE .
Run Code Online (Sandbox Code Playgroud)
和
' DATE .
Run Code Online (Sandbox Code Playgroud)
练习9.5使用用户变量执行相同的操作BASE。
根据提供的答案,两个短语将给出相同的结果(也带有BASE)。然而,使用Win32Forth尝试此操作,得到的结果相差 4 个字节(1 个单元格)。这是我所做的:
here . 4494668 ok
variable x ok
x . 4494672 ok
' x . 4494668 ok
Run Code Online (Sandbox Code Playgroud)
创建另一个变量会产生类似的结果:
variable y ok
y . 4494680 ok
' y . 4494676 ok
Run Code Online (Sandbox Code Playgroud)
因此,看起来每个变量不仅仅是一个单元格(用于值),而是两个单元格。变量本身指向实际值的存储位置,并检索执行令牌处的内容(使用' x ?)给出0040101F这两个变量。
对于练习 9.5,我的结果是:
base . 195F90 ok
' base …Run Code Online (Sandbox Code Playgroud) 我想为我的Raspberry Pi编写一个Forth程序。该程序应从现有文件中读取一些传感器数据,并将其发送到存储数据的网站。
在网上搜索大量关于Forth的便捷程度以及如何计算斐波纳契数的文档。但是我该如何请求URL?如何将数据发送到网站并处理结果?
如果没有套接字支持:是否可以启动外部程序(例如curl / wget)来执行请求?
"嗨,你能不能为我改写一些东西",我的老板说,"一些遗留代码".是的,遗留代码写在早期中生代的某处.
我还剩30个小时,我还是不知道,这是什么样的语法!VHLD?VBA?程序是专门做的事情与音频文件,并专门为DOS下运行.
你能给我一个暗示这是什么意思吗?怎么编译呢?
代码段:
enter \ Load - main screen
empty forth definitions decimal
application warning on
: TITLE ." KCS version 0.8 28-Jan-06" cr ;
cr .( Compiling: ) title 2 load
cr .( Save to disk? ) y/n
[if]
\ pad reserve @ + 256 + limit s0 @ - + set-limit
turnkey program KCS
[then]
\ Load - defaults
variable RESERVE 0 reserve ! \ reserved memory tally
defer ?BREAK ' noop is ?break \ …Run Code Online (Sandbox Code Playgroud) 当尝试在 Ubuntu 16.04.4 64 位(Xenial Xerus)上构建Jonesforth (32 位 GNU 汇编程序)时,我看到以下内容:
~/src/jonesforth $ make
gcc -m32 -nostdlib -static -o jonesforth jonesforth.S
jonesforth.S:1154:24: fatal error: asm/unistd.h: No such file or directory
compilation terminated.
Makefile:11: recipe for target 'jonesforth' failed
Run Code Online (Sandbox Code Playgroud)
查看文件jonesforth.S,我注意到以下几行:
//#include <asm-i386/unistd.h> // You might need this instead
#include <asm/unistd.h>
Run Code Online (Sandbox Code Playgroud)
我尝试过使用asm-i386/unistd.h它,但这似乎也没有帮助。
最好的做法是通过安装更多标头sudo apt install linux-headers...吗?如果是这样,我应该选择哪个?应该linux-headers-generic够了吧?
jonesforth.S或者,我应该更改所指的标题吗?
我正在尝试使用两个循环反转堆栈,第一个循环将数据堆栈中的项目发送到返回堆栈。另一个将它们从返回堆栈转移到数据堆栈。不幸的是,它不起作用& gforth 返回堆栈下溢错误。下面是代码:
: srev ( n n2 n3 n4 n5 -- n5 n4 n3 n2 n)
6 0 do >r loop
6 0 do r> loop ;
1 2 3 4 5 srev
Run Code Online (Sandbox Code Playgroud) 阅读 Gforth 手册,可以使用单词 来更改值TO,那么它与变量有何不同?
如何检查Forth的素数?
这是我现在使用的,但是随着数字的增加它会变慢:
: prime ( n - f )
DUP 2 < IF
DROP 0 EXIT
THEN
DUP 2 ?DO
DUP I I * < IF
DROP -1 LEAVE
THEN
DUP I MOD 0= IF
DROP 0 LEAVE
THEN
LOOP ;
Run Code Online (Sandbox Code Playgroud)