2017-09-24 65 views
0

说,我有一个指令集的一个非常简单的模型:迭代一个简单的指令的所有可能设置

opcode 0, arg1[0-1] 
ocode 1, arg1[0-2], arg2[0-1] 

所以,我正在寻找的是与它建立无限复杂的程序的方式。

第一程序是:

0,0 

next is, 
0,1 

then 
0,0 
1,0,0 

then 
0,0 
1,1,0 

etc 

使得在给定由下式定义的任意的指令集:

class Instruction 
{ 
    public int opcode; 
    public int[] argLimits; //the maximum value of each argument, and number of arguments 
} 
Instruction[] allInstructions; 

可以生成给定的前面的程序的下一个程序。 如:ExecutableInstruction[] GetNextProgram(ExecutableInstruction[] previous, Instruction[] instructionSet);

该参数的值限制将始终[0-N] 的参数都是必需的 - 如果操作码3个参数,它们都是必需的。

我知道如何做这种事情时,参数的数量是固定的,但是当每个操作码可以有N个参数,其中每个操作码的每个参数可以是值0-n,我不知道在哪里开始。

回答

3

枚举您的指示与所有可能的参数值一起,例如:

A: 0,0 
B: 0,1 
C: 1,0,0 
D: 1,0,1 
E: 1,0,2 
F: 1,1,0 
G: 1,1,1 
H: 1,1,2 
I: 1,2,0 
J: 1,2,1 
K: 1,2,2 

现在任何程序是在A-K字母的任意单词。我希望你知道如何继续。