forth相关内容

将文本文件写入 Forth 上的数组

我有一个文本文件,其中包含一组数字,例如: 1 0 0 1 00 1 1 0 10 0 0 1 11 1 0 0 00 0 1 0 0 我用以下代码打开了文本文件: 变量文件ID: open_file ( -- ) \ 打开文本文件s"c:\etc\textfile.txt"r/w 打开文件抛出文件编号!; 我还创建了一个数组来存储这些数据: create an_array 25 个字符 ..
发布时间:2021-09-06 19:36:33 其他开发

实现对8051的功能调用

假设您有一个没有外部RAM的8051微控制器.内部RAM为128字节,您大约有80字节可用.并且您想编写一种用于堆栈语言的编译器. 假设您要编译RPN表达式 2 3 + .8051具有本机 push 和 pop 指令,因此您可以编写 push#2推#3 然后您可以将 + 实施为: pop A;将2弹出到寄存器A中弹出B;将3弹出到寄存器B中加A,B;A = A + B推A;将结果 ..
发布时间:2021-04-23 19:56:26 其他开发

MacOS Catalina/x64上的自修改代码

作为移植第四代编译器的一部分,我试图创建一个允许自我修改代码的二进制文件.有关详细信息,请参见 https://github.com/klapauciusisgreat/jonesforth-MacOS-x64 理想情况下,我为用户定义创建了一堆页面,然后像这样调用mprotect: #define __NR_exit 0x2000001 #define __NR_open 0x200 ..
发布时间:2020-06-15 19:11:34 其他开发

第四局部变量赋值变量

我在Forth中有一个简单的局部变量: : subtraction { a b } a b - ; 我想分配输出 a b - 另一个变量,例如c. 这可能吗? 解决方案 TO适用于VALUE和局部变量,因此: : subtraction { a b | c -- } a b - to c ; ..
发布时间:2020-06-15 19:11:31 其他开发

从终端输入缓冲区加载到参数堆栈

为什么此代码不起作用? TIB 10 ACCEPT TIB SP@ 1 cells - 10 cmove 在该代码中,我尝试输入一个字符串并将其存储在终端输入缓冲区中,然后将其存储在参数堆栈中. 但是使用.S,我认为那是行不通的. 解决方案 参数堆栈朝着内存不足的方向增长 该示例代码的主要问题是参数堆栈朝着内存不足的方向增长.因此,复制目标的起点应位于较高的内存地址( ..
发布时间:2020-06-15 19:11:28 其他开发

可以仅使用一个堆栈来实现类似Forth的语言吗?

Forth有一个堆栈和一个返回堆栈. 据我了解,返回堆栈的重点是存储程序计数器的先前值. C程序将程序计数器的先前值放在堆栈上,并且不使用返回堆栈. Forth是否仅需要返回堆栈,因为它返回了堆栈上的结果,因此程序计数器的先前值可以被掩埋? 解决方案 “便携式汇编语言"应该关闭.对于与标准/传统Forth几乎相同的语言而言,这是一个编译器的概念.可以编写哪种程序有一些限制 ..
发布时间:2020-06-15 19:11:25 其他开发

如何在Forth中比较两个字符串?

我可以在if语句中执行此操作吗?还是应该将辅助布尔值设置为变量?这是我到目前为止的代码.顺便说一句,IOX@是要从用户那里获取输入. : var compile: VARIABLE complile: ; : lock compile: var realPass$ compile: realPass$ "password" ! compile: ." Enter Password: " c ..
发布时间:2020-06-15 19:11:23 其他开发

重新定义单词

在Forth中,如果重新定义单词,那么使用重新定义的单词的另一个单词的预期行为是什么? 例如如果x调用y: : Y ." Old Y " CR ; : X 10 0 DO Y LOOP ; \ ... : Y ." New Y " ; 然后在重新定义Y之后,X,Old Y或New Y的输出应该是什么? 解决方案 简短的答案:X将输出Old Y,另请参见在Forth中,重定义只是 ..
发布时间:2020-06-15 19:11:21 其他开发

如何在Forth中输入数字

在Basic中是否有诸如Basic中的input或C中的scanf("%d")之类的东西? 可能是这样的: 200 buffer: buf : input ( -- n ) buf 200 accept some-magic-filter buf swap evaluate ; 上述代码中的问题是如何定义仅传递数字而不传递任何单词,定义等的过滤器? 解决方案 该标 ..
发布时间:2020-06-15 19:11:18 其他开发

带变量的Gforth条件表达式-仅部分正确

简单表达式: variable x ok 4 x ! ok 3 x . 0 ok 但这似乎是正常且正确的: variable x ok 3 x ! ok x 4 . -1 ok 第二个代码块是错误的.什么是错误的评估?这是什么问题? 解决方案 variable x创建新变量,但是x返回地址,而 ..
发布时间:2020-06-15 19:11:15 其他开发

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

我想要一个词 read-site ( add n buff max -- n flag ) 其中"add n"是站点名称缓冲区,"buff max"是应将ASCII文本读取到的缓冲区,"n"是已读取的字节数,如果操作,则flag为true成功. 在Linux,Android或Windows的Gforth中这可能吗? 解决方案 只是方法列表 最简单的正确方法应该是在Fo ..
发布时间:2020-06-15 19:11:13 其他开发

GNU FORTH是否有编辑器?

启动FORTH 的第3章, 现在,您已经将一个块设为“当前",您可以通过简单地键入单词"L"将其列出.与LIST不同,L不想以块号开头.而是列出当前块. 运行180 LIST时,我得到 Screen 180 not modified 0 .. ..
发布时间:2020-06-15 19:11:09 其他开发

如何使用GDB调试jonesforth?

jonesforth通常以如下方式启动: cat jonesforth.f - | ./jonesforth 什么是调试jonesforth的好方法? 解决方案 在Ubuntu上? 如果您使用的是Ubuntu,请允许gdb附加到正在运行的进程: echo 0 > /proc/sys/kernel/yama/ptrace_scope 如果您希望该设置在重新启动后保 ..
发布时间:2020-06-15 19:11:06 其他开发

无限循环或if语句的第四语言EBNF规则

是否存在 EBNF 规则,该规则描述了Forth无限循环或如果声明? 解决方案 EBNF用于描述语法.循环是无限循环或其他情况通常不会落入它所描述的范围内.这样,您可能会在EBNF中看到一个不确定的循环,看起来像: indefinite_loop ::= 'BEGIN' statements cond 'UNTIL' 通常,cond将在堆栈上压入0或1,以确定是否继续循环(0表示 ..
发布时间:2020-06-13 18:51:09 其他开发

什么是原始的Forth运算符?

我对实现Forth系统感兴趣,只是我可以获得构建简单的VM和运行时的经验. 从Forth开始时,通常通常首先了解堆栈及其操作符(DROP,DUP,SWAP等),因此很自然地将它们视为原始操作符.但事实并非如此.它们中的每一个都可以分解为直接操作内存和堆栈指针的运算符.后来,人们了解了可用于实现DUP,SWAP等(ha!)的存储(!)和获取(@). 那么什么是原始运算符?哪些必须在可以构 ..
发布时间:2020-05-21 19:58:57 其他开发

Forth中的内存管理

因此,我只是在学习Forth,并好奇是否有人可以帮助我了解内存管理的总体工作原理.目前,我对C stack-vs-heap范例只有(部分)经验. 据我了解,一个人可以在Dictionary或堆中进行分配.字典是否像C中的堆栈一样更快/更受青睐?但是与C语言不同,它没有作用域和自动堆栈回收,因此我想知道是否仅将字典用于全局数据结构(如果有的话). 就堆而言,它与C差不多吗?堆管理是一个标 ..
发布时间:2020-05-08 21:52:08 其他开发

逻辑与在Forth?

我知道AND字定义了二进制and ...,但是什么定义了逻辑and? 解决方案 相同的词AND也用于逻辑和.但是,建议AND的两个输入值是格式正确的标志; true 和 false 由两个值表示,位全部置为(-1),位全部未置为(0).除此以外的其他值可能都适用(如C中所述),但可能会导致细微的错误. 所有比较运算符均返回格式正确的标志,但例如,-则不返回.以下结果为假(0). ..
发布时间:2020-04-26 09:33:35 其他开发

gforth是否包含网络套接字功能?

通常,在学习语言时,我会编写某种服务器。 gforth 是否有能力使用网络套接字? 我在手册。 解决方案 虽然我没有看到任何关于它的文档,但是有一个 GNU FD L,从由IanOsgood (提交) 包括unix / socket.fs 128常量尺寸 :(回声)(袜子buf - 袜子buf) 开始 cr。“等待......” 2dup 2dup size ..
发布时间:2018-09-26 14:23:22 其它硬件开发