这个累加器架构的自修改程序什么时候终止?

时间:2017-11-16 20:13:47

标签: cpu computer-science cpu-architecture accumulator

我有一个累加器架构的机器代码。 该架构为8位;指令编码看起来像 真实的机器代码用于指令一例如: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?

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

1 个答案:

答案 0 :(得分:1)

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

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

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

这应该足以让你逐步了解你的循环何时终止以及单元格15中的内容。