说我有一个非常简单的指令集模型:
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值,我不知道从哪里开始
答案 0 :(得分: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
字母表上的任意单词。我希望你知道如何继续。