Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在使用以下 Forth 代码时遇到了一些问题:
HEX FFFF3E27 CONSTANT SHUTTER DECIMAL : OPEN 1 SWAP ! ; : CLOSE 0 SWAP ! ;
现在我想将“1”写入快门地址:
快门打开
这是我的错误:
:15: Invalid memory address SHUTTER >>>OPEN<<< Backtrace: $10D436398 !
我错过了什么吗?
代码基本上是正确的。我相信问题可能出在地址本身以及存储在其中的内容上。
具体来说,!存储一个单元格,它是堆栈上单词的正常大小。鉴于地址大小,我猜它是 32 位。
!
现在,问题是地址是奇数。许多硬件架构不允许将 32 位字存储在奇数地址或除可被 4 整除的地址之外的任何地址。
如果要存储单个字节,请使用C!(或 Forth 实现中的某些等效项)。
C!