在修理 Jmeter 组时,我需要更换一个控制器,该控制器是使用Forth建立在摩托罗拉MC68HC11上的。虽然我能够转储整个内存,但不知道使用的是哪一个Forth,可用的单词似乎非常有限。如何在嵌入式Forth环境中定位和更改内存中的已知值?
bqf10yzr1#
根据Forth的风格,您可以使用vlist或words列出所有“单词”。单词包括定义的任何变量或常量,变量可以使用以下运算符进行操作:
vlist
words
!
@
?
+!
对于双长度变量,有:
2!
2@
flvtvl502#
虽然在68 HC 11上运行的程序最初是用Forth编写的,但我相信它最终会被编译成在微控制器上运行的机器代码。当68 HC 11首次发布时,有几个(一些免费的)编程工具,即该微控制器的汇编语言编程器。如果您有内存转储,也许可以尝试加载到编辑器/汇编器中并通过汇编代码工作?。您甚至可以识别对您希望更改的各个端口配置、数据等的引用。希望这对你有所帮助。关于AB
2条答案
按热度按时间bqf10yzr1#
根据Forth的风格,您可以使用
vlist
或words
列出所有“单词”。单词包括定义的任何变量或常量,变量可以使用以下运算符进行操作:!
(n addr -)在地址中存储一个单一长度的数字。@
(addr - n)从addr获取该值。?
(addr -)打印地址的内容,后跟一个空格。+!
(n addr -)向地址的内容添加一个单一长度的数字。对于双长度变量,有:
2!
(d addr -)或(n1 n2 addr -)在地址addr处存储一个双倍长度的数字(或一对单倍长度的数字)。2@
(addr - d)or(addr - n1 n2)从addr中获取一个双倍长度的数字(或一对单倍长度的数字)。flvtvl502#
虽然在68 HC 11上运行的程序最初是用Forth编写的,但我相信它最终会被编译成在微控制器上运行的机器代码。当68 HC 11首次发布时,有几个(一些免费的)编程工具,即该微控制器的汇编语言编程器。如果您有内存转储,也许可以尝试加载到编辑器/汇编器中并通过汇编代码工作?。您甚至可以识别对您希望更改的各个端口配置、数据等的引用。希望这对你有所帮助。关于AB