private static IMemorizable[] GetIMemorizablesFromCommand(string cmd, ApplicationContext context) { IMemorizable GetMemorizableFromAssembly(string ass) // FUNCTION { Register reg; if ((reg = context.Registers.Find(r => r.Name == ass)) != null) { return(reg); } if (ass.IndexOf('[') < ass.IndexOf(']') && ass.IndexOf('[') != -1) { // TODO Byte / Word IMemorizable indirect = CheckForIndirectReference(ass.BetweenSubstring("[", "]"), context); if (indirect != null) { return(indirect); } MemoryRangePointer pointer = context.MainMemory.ExtractMemoryPointer(ass.BetweenSubstring("[", "]").ToInt(), 2); return(pointer); } MySupport.NormalizeValueString(ref ass); return(new ImmediateNumber(MySupport.GetBytesArrayFromString(ass), true)); } var memorizables = new IMemorizable[2]; var splits = cmd.Split(','); for (int i = 0; i < splits.Length; i++) { splits[i] = splits[i].Substring(splits[i].IndexOf(' ') != -1 ? splits[i].IndexOf(' ') : 0).TrimStart().TrimEnd(); memorizables[i] = GetMemorizableFromAssembly(splits[i]); } return(memorizables); }
private void UCommand(IReadOnlyList <string> debugCommandParameters, params string[] input) { if (debugCommandParameters.Count != 1) { return; } int index = int.Parse(debugCommandParameters[0], NumberStyles.HexNumber); MemoryRangePointer pointer = context.MainMemory.ExtractMemoryPointer(index, 50); var indexList = new List <int>(); List <AssemblableCommand> cmds = Disassembler.MultiCommandDisassembler(context, pointer, ref indexList); for (var i = 0; i < cmds.Count; i++) { AssemblableCommand cmd = cmds[i]; if (cmd.ToString().TrimEnd() != "????") { Console.WriteLine($"{(indexList[i] + index):X4} => {cmd.ToString()}"); } } }