没有复合指令的最小理论无状态指令集

时间:2018-09-10 00:53:39

标签: assembly turing-complete

自从我在大学里学会了如何操纵装配以来,我就着迷于尽可能小地开始并逐渐达到无限的复杂性的想法。我一直在研究自己的理论上最小的指令集,该指令集避免了诸如“ subleq”之类的复合指令。我对这类指令的问题在于,它们的行为就像是两个(或多个)具有维护状态的单独指令。换句话说,可以将它们分解为(IBM Pseudocode):

S       R0,NUMBER
CLI     R0,XL4'00'
BNH     DESTINATION

因此,我想用来建立更多复杂性的最小指令集应该已经被原子化,并且不应包含状态。

到目前为止,我想出了三个指令:(s)撕裂,(n)和(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    ...

很明显,允许指令编辑有效地使条件跳转成为条件,但我尚不完全确定如何完成这样的任务。如此简单的事情还是图灵完成的,还是这个想法在空中?

0 个答案:

没有答案