gpt4 book ai didi

memory - 在 Forth 中使用 HERE 作为临时空间

转载 作者:行者123 更新时间:2023-12-04 13:13:25 24 4
gpt4 key购买 nike

我正在用 Forth 编写游戏(出于学习目的)。

游戏在“10 格棋盘”上进行。我正在尝试新事物,所以我做到了

here 10 [char] - fill

设置板的空间。
然后,在位置 3 上打'X'

[char] X here 3 + c!

这一直工作正常,但提出了问题

这样可以吗?
如果电路板有 100 万个单元宽怎么办?

谢谢

最佳答案

所描述的方法具有一定的环境依赖性,因此您的程序只需符合您的 Forth 系统(即您使用的)程序的环境限制即可。

1。数据空间大小

单词UNUSED返回“由 HERE 寻址的区域中剩余的空间量”。因此,程序可以检查可用空间。

另外,根据小节4.1.3 Other system documentation第四标准:

A system shall provide the following information:[...]program data space available, in address units;

因此,您只需检查您的 Forth 系统是否为您的程序提供了足够的数据空间,以及如何配置可用数据空间(如果有的话)。

2。过渡区域

在一般情况下,可移植程序使用数据空间而不保留数据空间是不安全的。

根据 3.3.3.6 Other transient regions 部分Forth 标准中,PADWORD#> 标识的数据空间区域的内容在数据空间被删除后可能会失效分配。因此,HERE 标识的区域的内容可能在PADWORD 标识的区域内容之后失效#> 已更改。

另见 A.3.3.3.6 Other transient regions :

In many existing Forth systems, these areas are at HERE or just beyond it, hence the many restrictions.

此外,某些 Forth 系统可能会在翻译期间出于内部目的使用由 HERE 标识的区域。例如。 Gforth 0.7.9 在解码转义字符串时使用这个区域。短语:

s\" test\-passed" cr here over type cr type cr

输出:

test-passed
test-passed

因此,您必须检查您的 Forth 系统的限制,您是否可以在不保留空间的情况下使用由 HERE 标识的区域(以及在什么条件下)。

关于memory - 在 Forth 中使用 HERE 作为临时空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62695261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com