Switch to add/remove instruction mutation
This commit is contained in:
@@ -2,13 +2,13 @@ package gen
|
||||
|
||||
import "github.com/firestuff/subcoding/vm"
|
||||
|
||||
func randInstruction(prog *vm.Program) *vm.Instruction {
|
||||
func RandInstruction(prog *vm.Program) *vm.Instruction {
|
||||
instr := &vm.Instruction{
|
||||
OpCode: randOpCode(),
|
||||
OpCode: RandOpCode(),
|
||||
}
|
||||
|
||||
for i, t := range vm.OperandsByOpCode[instr.OpCode] {
|
||||
instr.Operands[i] = randOperand(prog, t)
|
||||
instr.Operands[i] = RandOperand(prog, t)
|
||||
}
|
||||
|
||||
return instr
|
||||
|
||||
@@ -48,7 +48,7 @@ var opCodes = []vm.OpCodeType{
|
||||
vm.OpSqrt,
|
||||
}
|
||||
|
||||
func randOpCode() vm.OpCodeType {
|
||||
func RandOpCode() vm.OpCodeType {
|
||||
// Uniform distribution
|
||||
return opCodes[rand.Intn(len(opCodes))]
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import "math/rand"
|
||||
|
||||
import "github.com/firestuff/subcoding/vm"
|
||||
|
||||
func randOperand(prog *vm.Program, t vm.OperandNumericType) *vm.Operand {
|
||||
func RandOperand(prog *vm.Program, t vm.OperandNumericType) *vm.Operand {
|
||||
for {
|
||||
op := &vm.Operand{
|
||||
Type: randOperandType(),
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
package gen
|
||||
|
||||
import "github.com/firestuff/subcoding/vm"
|
||||
|
||||
func RandProgram(globalMemorySize, functionMemorySize, instructionLimit uint64) *vm.Program {
|
||||
prog := &vm.Program{
|
||||
GlobalMemorySize: globalMemorySize,
|
||||
FunctionMemorySize: functionMemorySize,
|
||||
InstructionLimit: instructionLimit,
|
||||
}
|
||||
|
||||
prog.Functions = append(prog.Functions, &vm.Function{
|
||||
Instructions: []*vm.Instruction{
|
||||
randInstruction(prog),
|
||||
},
|
||||
})
|
||||
|
||||
return prog
|
||||
}
|
||||
Reference in New Issue
Block a user