public static JMP Create(ILineInfo line) { if (line.NumberOfArguments != 1) { throw new Exceptions.ArgumentNumberException("JMP", line.NumberOfArguments); } var cmd = new JMP() { LineNumber = line.LineNumber }; switch (line.TypeOfArgument(1)) { case Lexer.ArgumentType.Name: cmd.LabelName = line.Argument(1).ToLower(); cmd.Capture = line.LastCapture; cmd.Assemble = cmd.assemble; break; } if (cmd.Assemble == null) { throw new Exceptions.ArgumentException("JMP", line.TypeOfArgument(1)); } return(cmd); }
byte[] assemble(MemoryManager mgr) { if (!mgr.IsLabelDecalared(LabelName)) { throw new Exceptions.LabelNotDeclaredException(LabelName, "JMP", Capture); } Int16 from = mgr.Pointer; Int16 to = mgr.Labels[LabelName]; return(JMP.Code(from, to)); }