标签: forth

如何以非零退出状态退出 Forth?

我想以非零退出状态退出 Forth 程序(使用 Gforth 0.7.3)。

我试过了:

1 bye
Run Code Online (Sandbox Code Playgroud)

但 1 不会被解释为 的参数bye(而且我也没想到这会起作用;我在文档中找不到任何bye接受参数的提示)。

请注意,我不想触发异常,因为这也会打印错误消息(除非有办法从 Forth 程序本身中抑制异常的错误消息)。

那么,如何将 Forth 程序退出回托管环境/操作系统并提供非零退出状态?(基本上,我正在寻找return EXIT_FAILURE; // from main()(C) 或exit(EXIT_FAILURE);(C) 或System.exit(1);(Java) 的等效项。)

forth gforth

5
推荐指数
1
解决办法
180
查看次数

是否可以运行在GA144上模拟的C代码?

这家公司有一个有趣的CPU,以惊人的速度运行.是否有可能模拟C或内存太小?

c c++ emulation forth

4
推荐指数
1
解决办法
979
查看次数

在没有Gforth的情况下编译Gforth?

当我尝试编译Gforth 0.7.0时,我收到以下错误:

$ ./configure
$ make
#compiling… 
Undefined symbols:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[3]: *** [gforth-ll] Error 1
./preforth -p ".:~+:." -e 's" mach16b.fs"' ./kernel/main.fs -e "save-cross kernl16b.fi- /usr/local/bin/gforth-0.7.0 bye"
You need to configure with a gforth in $PATH to build this part
make[3]: *** [kernl16b.fi-] Error 1
make[2]: *** [gforth-ll] Error 2
make[1]: *** [optgforth] Error 2
make: *** [gforth] Error 2
[22:16:01] gforth-0.7.0$ 
Run Code Online (Sandbox Code Playgroud)

通过端口安装时出现同样的错误.我想问题是Gforth是写的,至少部分是在Forth中,所以如何在没有先安装它的情况下安装它(或者是其他问题)?

我使用的是Mac OS …

compiler-construction macos forth

4
推荐指数
1
解决办法
1001
查看次数

如何访问Forth中的程序名称/ argv [0]?

Gforth文件说,通过调用访问论点next-arg,但这种省略的程序名,这将在一个类似C语言进行打印.

因为argv[0]似乎是自动从Forth中的参数向量中删除,是否有一个我可以调用它返回它的特殊函数?

forth gforth

4
推荐指数
1
解决办法
245
查看次数

从Forth中的堆栈中获取第n个元素

有没有办法通过Forth中的索引访问堆栈的元素,而不会弹出它上面的所有元素?

例如,如果我将数字1到1000推入堆栈,我如何获得第500个元素?

forth

4
推荐指数
2
解决办法
465
查看次数

使用Gforth获取ASCII代码

当进入'a'Gforth时,字符的ASCII编号(通过使用key单词并按下将被放入堆栈的相同数字a)放入堆栈.

例如,这不适用于' '(空格).代替:

' '  ok
.s <1> 34384939008  ok
Run Code Online (Sandbox Code Playgroud)

数字"应该"为32.这个行为有什么解释?除了手动将对应于' '(空间)的ASCII数字放在堆栈上之外,可以做些什么 ?

forth char gforth

4
推荐指数
1
解决办法
197
查看次数

Forth词汇表和单词列表之间有区别吗?

当我阅读Stephen Pelc的"Programming Forth"时,文本似乎暗示词汇表和单词列表可能是不同的东西.我认为字典词条有一个名字字段,代码字段等,所以有单独的单词列表对我没有意义.

单词列表只是一种谈论Forth单词的名称字段的方式,还是单词列表与字典条目分开的实际数据结构?(与主流语言相比,第四语言资源有点稀缺)

forth

4
推荐指数
1
解决办法
277
查看次数

在Forth中对字符串数组进行排序

我曾经用来CREATE创建一个字符串数组:

create mystringarray s" This" , s" is" , s" a", s" list" ,
Run Code Online (Sandbox Code Playgroud)

我想按升序排序.我在线发现了汇编语言的一些教程,但我想在Forth中完成.什么是最佳实践方法?

sorting forth gforth

4
推荐指数
2
解决办法
264
查看次数

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

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

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

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

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

gforth example.fs
1 2 .s cr        \ <2> 1 2
1.0e 2.0e f. cr  \ 2.
bye
Run Code Online (Sandbox Code Playgroud)

stack forth

4
推荐指数
1
解决办法
348
查看次数

如何在Forth中转储单词?

目的是在字典中创建一个Forth单词,然后打印出该单词的内存内容。第一步很容易。这个: main词的创建方法与教程中所述相同。创建单词后,字典指针将移至下一个位置,因此我必须从中减去一些项目,现在可以转储创建单词的内存区域了:

\ create a dummy routine
: main 1 dup + . ;

\ put dictionary pointer to the stack
\ and subtract 50 indizies
dp 50 - 

\ print out 20 cells to the screen from dp-50 until dp+50
\ but where is my newly created routine ": main"?
100 dump

bye
------
gforth "a.fs"

7F81DF443FC6: 00 00 20 17  12 AF 60 55 - 00 00 04 00  00 00 00 00  .. ...`U........
7F81DF443FD6: …
Run Code Online (Sandbox Code Playgroud)

forth gforth

4
推荐指数
1
解决办法
154
查看次数

标签 统计

forth ×10

gforth ×5

c ×1

c++ ×1

char ×1

compiler-construction ×1

emulation ×1

macos ×1

sorting ×1

stack ×1