asm support for all opcodes
This commit is contained in:
@@ -7,20 +7,6 @@ import "strings"
|
||||
import "github.com/firestuff/subcoding/vm"
|
||||
import "github.com/pkg/errors"
|
||||
|
||||
var opCodeByName = map[string]vm.OpCodeType{
|
||||
"add": vm.OpAdd,
|
||||
"call": vm.OpCall,
|
||||
"ltu": vm.OpLTU,
|
||||
"jmpt": vm.OpJmpT,
|
||||
}
|
||||
|
||||
var operandsByOpCode = map[vm.OpCodeType]int{
|
||||
vm.OpAdd: 2,
|
||||
vm.OpCall: 1,
|
||||
vm.OpLTU: 2,
|
||||
vm.OpJmpT: 1,
|
||||
}
|
||||
|
||||
func Assemble(src []byte) ([][]*vm.Instruction, error) {
|
||||
prog, err := parse(src)
|
||||
if err != nil {
|
||||
@@ -67,7 +53,7 @@ func assembleInstruction(in instruction) (*vm.Instruction, error) {
|
||||
|
||||
instr := &vm.Instruction{}
|
||||
|
||||
opCode, found := opCodeByName[in[0]]
|
||||
opCode, found := opCodeByName[strings.ToLower(in[0])]
|
||||
if !found {
|
||||
return nil, fmt.Errorf("Invalid op name: %s\n", in[0])
|
||||
}
|
||||
@@ -101,6 +87,7 @@ func assembleInstruction(in instruction) (*vm.Instruction, error) {
|
||||
}
|
||||
|
||||
func assembleOperand(op string) (vm.Operand, error) {
|
||||
op = strings.ToLower(op)
|
||||
ret := vm.Operand{}
|
||||
numStr := ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user