MCPcopy Create free account
hub / github.com/djhworld/simple-computer / parseOneRegisterInstruction

Function parseOneRegisterInstruction

asm/parser.go:243–269  ·  view source on GitHub ↗
(name string, operands string)

Source from the content-addressed store, hash-verified

241}
242
243func parseOneRegisterInstruction(name string, operands string) (Instruction, error) {
244 registers := ONE_REGISTER_EXTRACTOR.FindStringSubmatch(operands)
245
246 if len(registers) != 2 {
247 return nil, fmt.Errorf("Instruction %s only supports one register", name)
248 }
249
250 var register1 REGISTER
251 if v, ok := REGISTERS[registers[1]]; !ok {
252 return nil, fmt.Errorf("Unknown register %s for instruction %s", registers[1], name)
253 } else {
254 register1 = v
255 }
256
257 switch name {
258 case "SHL":
259 return SHL{register1}, nil
260 case "SHR":
261 return SHR{register1}, nil
262 case "NOT":
263 return NOT{register1}, nil
264 case "JR":
265 return JR{register1}, nil
266 default:
267 return nil, fmt.Errorf("unknown/unsupported instruction %s", name)
268 }
269}
270
271/*
272func parseDataInstruction(operands string) (Instruction, error) {

Callers 1

parseInstructionFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected