这个用于累加器架构的自修改程序何时终止?

When does this self-modifying program for an accumulator architecture terminate?

我有这个累加器架构的机器代码。 该架构是八位的;指令编码看起来像 真正的机器代码是指令一,例如:001 1 0001,001 表示 LOAD,1 告诉我们这是一个值,001 是十进制的 1,所以它的 LOAD #1

0---LOAD #1
1---STORE 15
2---LOAD #0
3---EQUAL #4
4---JUMP #6
5---HALT
6---LOAD 3
7---SUB #1
8---STORE 3
9---LOAD 15
10--ADD 15
11--STORE 15
12--JUMP #2
13-- 000 0 0000
14-- 000 0 0000
15-- 000 0 0000

我必须找到程序停止时存储单元 15 中的内容。

但是如果你跳转到指令 2,这意味着累加器的值为 0,它永远不会等于 4,程序将 运行 作为无限循环,对吧?

如果存储单元 3 为空,STORE 3 会做什么?是不是表示当一个内存单元为空时,它的值为0?

不回答这两个问题就无法继续下去

我假设这是针对 n 累加器架构的,并且我必须对该架构做出一些假设。您真的需要更多地描述您的 CPU 如何使这个问题成为一个可回答的问题。

是的,在#3 处,累加器将始终为 0。 是的,如果指令 #3 永远不会改变,那么 0 永远不会等于 4,程序将永远循环。

但是,当您存储到存储单元 3 时,我认为您最终会将单元 3 中的指令替换为现在累加器中的指令。 所以,有趣的问题是当你从 equal #4 的指令表示中减去 1 时会发生什么。 这取决于您的特定架构,但我强烈猜测您会得到 equal #3 并将其存储在单元格 3 中。

这应该足以让您遍历并找出循环何时终止以及单元格 15 中的内容。