Switch to add/remove instruction mutation

This commit is contained in:
Ian Gulliver
2021-11-22 20:33:22 -08:00
parent 8f712688b9
commit a5e44a7e07
8 changed files with 52 additions and 36 deletions

View File

@@ -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

View File

@@ -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))]
}

View File

@@ -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(),

View File

@@ -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
}