自从我在大学里学会了如何操作装配以来,我就对从尽可能小的开始并建立无限复杂性的想法着迷。我一直在研究我自己的理论最小指令集,它避免了像“subleq”这样的复合指令。我对这类指令的问题是它们的行为就像两个(或更多)独立的指令,并保持状态。换句话说,它们可以分解为(IBM 伪代码):
S R0,NUMBER
CLI R0,XL4'00'
BNH DESTINATION
所以我想用来在其上构建更多复杂性的最小指令集应该已经被原子化并且不应该包含状态。
到目前为止,我想出了三个指令:(s)tore、(n)and 和 (j)ump。有一个累加器和一个 PC 计数器 - 没有别的了。所有指令都采用两位后跟包含相对地址的 X 位,这意味着没有“立即”值。我可以使用这些指令(8位)将一个值加载到累加器中:
00 000111 LOAD S HOLDER ; first we must zero-out the accumulator
01 000110 N HOLDER
01 000101 N HOLDER
00 000100 S HOLDER
01 000011 N HOLDER ; accumulator is now equal to zero
01 XXXXXX N NUMBER ; load number into accumulator
10 000010 J NEXT ; jump over the helper to the next instruction
00 000000 HOLDER = 0
XX XXXXXX NEXT ...
很明显,指令编辑允许有效地进行有条件的跳转,但我还不完全确定如何完成这样的任务。如此简单的事情仍然是图灵完整的,还是这是天上掉馅饼的想法?