标签: forth

如何从 Gforth 网站读取原始代码?

我想要一个像这样的词

read-site ( add n buff max -- n flag )
Run Code Online (Sandbox Code Playgroud)

其中“add n”是站点名称缓冲区,“buff max”是应读取 ASCII 文本的缓冲区,“n”是读取的字节数,flag如果操作成功则为 true。

这在 Linux、Android 或 Windows 的 Gforth 中可能吗?

networking forth gforth

2
推荐指数
1
解决办法
396
查看次数

FORTH 包括与负载?

INCLUDE显然是文件IO。但我很困惑它如何与LOAD. INCLUDE没有 a会做什么LOAD?从书中,

  • INCLUDE xxx ( -- )

    加载文本文件xxx(编译或执行)。

  • LOAD ( n -- )

    加载磁盘块(编译或执行)。

io forth gforth

2
推荐指数
1
解决办法
640
查看次数

如何查找和更改嵌入式 Forth 控制器中的变量?

在维修仪表组时,我需要使用 Forth 更换基于 Motorola MC68HC11构建的控制器。虽然我能够转储整个内存,但不知道使用的是哪个 Forth,并且可用的单词似乎非常有限。

在嵌入式 Forth 环境中如何定位和更改内存中的已知值?

embedded debugging forth 68hc11

2
推荐指数
1
解决办法
195
查看次数

在C中从头开始编写编译器

可能重复:
如何在C中编译编译器?

我将如何从头开始编写编译器(没有FlexBisonLexYacc)?我有一种语言,我为他写了一个翻译,它有点像Forth.有点.它接受符号并使用堆栈一次解释一个符号.

我如何制作编译器?

那不是特别垃圾; 只是为了向人们展示语法和简洁性.

http://github.com/tekknolagi/StackBased

c compiler-construction forth

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

Gforth 中的非阻塞输入

如果我们使用 ncurses 进行一个非常简单的计数器:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ncurses.h>

int main(void) {
  struct timespec start;
  clock_gettime(CLOCK_REALTIME, &start);
  initscr();
  cbreak();
  nodelay(stdscr, TRUE);
  {
    int key = -1;
    struct timespec delay, now;
    do {
      clock_gettime(CLOCK_REALTIME, &delay);
      delay.tv_sec = 0;
      delay.tv_nsec = 1000L * 1000L * 1000L - delay.tv_nsec;
      nanosleep(&delay, NULL);
      clock_gettime(CLOCK_REALTIME, &now);
      mvprintw(1, 1, "%ld\n", (long)(now.tv_sec - start.tv_sec));
      refresh();
      key = getch();
      if (key >= 0)
        break;
    } while (now.tv_sec - start.tv_sec < 60);
  }
  endwin();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

按任意键后它会中止(好吧,因为 …

time forth keyboard-events gforth

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

'腐'运算符的必要性

为什么Forth实现了rot运算符,为什么它在堆栈的三个最顶层项目上运行?

这只是为了方便还是在没有这样的指示的情况下Forth不是Turing-complete?三个数量是图灵完成的最小可行选择吗?

我可以想象一个人可以rotpick或实现roll.因此,如果这三个操作都没有,那么它仍然是图灵完成的吗?

forth stack-based computation computation-theory formal-languages

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

为什么328eForth中缺少"DO LOOP"?

我正在尝试直接在嵌入式系统中学习Forth,并使用Leo Brodie的Starting Forth作为文本.我正在使用的Forth版本是328eForth(eforth到ATmega328的一个端口),我已经闪现成Arduino Uno.

似乎DO LOOP字没有在328eForth中实现 - 这对我与Brodie的学习产生了麻烦.但是使用"WORDS"查看词典表明存在一系列循环词,例如BEGIN直到下一个AFT EXIT AGE REPEAT等.

我的问题如下:

Q1为什么从328eForth中省略了DO LOOP?

Q2可以用其他现有单词实现LOOP吗?如果是这样,请问,如果不是为什么?(我想必须有一个非常的DO LOOP遗漏很好的理由...)

Q3你能举一些328eForth循环词的注释例子吗?

arduino forth

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

在 Forth 中执行一个字符或字符串,就好像它是一个单词一样

假设我已经s" Hello"存储在某个地方。而且我还定义了: Hello something ;. 有没有办法像执行单词一样执行字符串?

我已阅读文档,但找不到任何相关功能。这可能很明显,但可惜我无法解决。

forth gforth

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

写入"第四盘"

你有一个单词USE,它将创建一个文件.

  • USE xxx ( -- )

    将OS文本文件xxx指定为"Forth disk".

但是,目前尚不清楚如何在交互式会话中写入该FORTH磁盘.有动词如FLUSH和,UPDATE但他们都没有看到做任何事情.我正在使用gforth.我在会话中创建单词并使用它们.我不明白FORTH磁盘在这种情况下是如何工作的.它听起来像R save.image(),除了我无法得到任何东西来保存.你能提供一系列命令,导致某些东西被写入参数USE吗?

io forth read-eval-print-loop gforth

0
推荐指数
1
解决办法
272
查看次数

如何退出 Forth 环境?

如果我在 Forth 环境中,我该如何离开,以及如何编程一个词来离开?

forth

0
推荐指数
1
解决办法
418
查看次数