2021-11-20 17:59:22 -10:00
|
|
|
package gen
|
|
|
|
|
|
|
|
|
|
import "math/rand"
|
|
|
|
|
|
|
|
|
|
import "github.com/firestuff/subcoding/vm"
|
|
|
|
|
|
|
|
|
|
var opCodes = []vm.OpCodeType{
|
|
|
|
|
vm.OpNop,
|
|
|
|
|
|
|
|
|
|
vm.OpMov,
|
|
|
|
|
|
|
|
|
|
vm.OpAdd,
|
2021-11-24 19:52:22 -08:00
|
|
|
// vm.OpSub,
|
2021-11-20 17:59:22 -10:00
|
|
|
vm.OpMul,
|
2021-11-24 19:52:22 -08:00
|
|
|
// vm.OpDivU,
|
|
|
|
|
// vm.OpDivS,
|
2021-11-20 17:59:22 -10:00
|
|
|
|
2021-11-24 19:52:22 -08:00
|
|
|
// vm.OpNot,
|
|
|
|
|
// vm.OpAnd,
|
|
|
|
|
// vm.OpOr,
|
2021-11-20 17:59:22 -10:00
|
|
|
vm.OpXor,
|
|
|
|
|
|
2021-11-24 19:52:22 -08:00
|
|
|
// vm.OpShR,
|
|
|
|
|
// vm.OpShL,
|
|
|
|
|
|
|
|
|
|
// vm.OpEq,
|
|
|
|
|
// vm.OpLTU,
|
|
|
|
|
// vm.OpLTS,
|
|
|
|
|
// vm.OpGTU,
|
|
|
|
|
// vm.OpGTS,
|
|
|
|
|
// vm.OpLTEU,
|
|
|
|
|
// vm.OpLTES,
|
|
|
|
|
// vm.OpGTEU,
|
|
|
|
|
// vm.OpGTES,
|
|
|
|
|
|
|
|
|
|
// vm.OpJmp,
|
|
|
|
|
// vm.OpJmpT,
|
|
|
|
|
// vm.OpJmpF,
|
|
|
|
|
|
|
|
|
|
// vm.OpCal,
|
|
|
|
|
// vm.OpCalT,
|
|
|
|
|
// vm.OpCalF,
|
|
|
|
|
|
|
|
|
|
// vm.OpRet,
|
|
|
|
|
// vm.OpRetT,
|
|
|
|
|
// vm.OpRetF,
|
2021-11-21 17:04:58 -08:00
|
|
|
|
|
|
|
|
vm.OpSqrt,
|
2021-11-20 17:59:22 -10:00
|
|
|
}
|
|
|
|
|
|
2021-11-22 20:33:22 -08:00
|
|
|
func RandOpCode() vm.OpCodeType {
|
2021-11-20 17:59:22 -10:00
|
|
|
// Uniform distribution
|
|
|
|
|
return opCodes[rand.Intn(len(opCodes))]
|
|
|
|
|
}
|