You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在通过Forth创建的汇编代码中调用Forth函数?

用Forth汇编语法调用已有Forth函数的问题与解决

问题背景

我创建了一个仅调用.的Forth单词,使用see查看其汇编代码如下:

: mytest . ;
see mytest
MYTEST 
( 0010D7B0    E8BB70F1FF )            CALL    00024870  .
( 0010D7B5    C3 )                    RET/NEXT
( 6 bytes, 2 instructions )

尝试实现时的错误

我尝试用CODE和END-CODE语法手动实现相同功能,编写了以下代码:

CODE mytest2
CALL    00024870  .
NEXT, 
END-CODE

在命令行运行时触发错误:

Err# -4 ERR: Data stack underflow.
 Source: "/Users/xxx/scratch/forth/test1.fth" on line 3 
 -> NEXT, 
         ^
Received SIGHUP or SIGTERM

请问是否可以通过Forth的汇编语法创建单词并调用已有Forth函数?是语法错误还是该功能无法实现?
运行环境:VfxForth、x86_64架构、Linux系统。

问题解决

问题已解决!函数地址00024870实际是十六进制,但反汇编的显示格式容易被误认为十进制。修改代码为以下形式后成功运行:

CODE mytest2
CALL 0x00024870
NEXT,
END-CODE

使用see查看mytest2的反汇编,得到预期结果:

see mytest2
MYTEST2 
( 0010D9B0    E8BB6EF1FF )            CALL    00024870  .
( 0010D9B5    C3 )                    RET/NEXT

内容的提问来源于stack exchange,提问作者Bruce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 13:32:28