private MachineInstruction[] DisassembleWords(params ushort[] words) { var bytes = new byte[words.Length * 2]; LeImageWriter writer = new LeImageWriter(bytes); foreach (ushort word in words) { writer.WriteLeUInt16(word); } var image = new MemoryArea(Address.Ptr16(0x200), bytes); var rdr = new LeImageReader(image, 0); var arch = new Pdp11Architecture("pdp11"); var dasm = new Pdp11Disassembler(rdr, arch); return(dasm.ToArray()); }
private MachineInstruction RunTest(params ushort [] words) { var bytes = new byte[words.Length * 2]; LeImageWriter writer = new LeImageWriter(bytes); foreach (ushort word in words) { writer.WriteLeUInt16(word); } var image = new LoadedImage(Address.Ptr16(0x200), bytes); var rdr = new LeImageReader(image, 0); var arch = new Pdp11Architecture(); var dasm = new Pdp11Disassembler(rdr, arch); return(dasm.First()); }
private MachineInstruction RunTest(params ushort[] words) { var bytes = new byte[words.Length * 2]; LeImageWriter writer = new LeImageWriter(bytes); foreach (ushort word in words) { writer.WriteLeUInt16(word); } var image = new ByteMemoryArea(Address.Ptr16(0x200), bytes); var rdr = new LeImageReader(image, 0); var arch = new Pdp11Architecture(new ServiceContainer(), "pdp11", new Dictionary <string, object>()); var dasm = new Pdp11Disassembler(rdr, arch); return(dasm.First()); }
public override Program LoadProgram(Address?addrLoad) { addrLoad ??= PreferredBaseAddress; var arch = new Pdp11Architecture(Services, "pdp11", new Dictionary <string, object>()); var program = new Program( new SegmentMap(addrLoad, new ImageSegment(".text", new ByteMemoryArea(addrLoad, RawImage), AccessMode.ReadWriteExecute)), arch, new RT11Platform(Services, arch)); Relocate(program, addrLoad); return(program); }
public Program Assemble(Address addrBase, TextReader reader) { arch = new Pdp11Architecture(new ServiceContainer(), "pdp11"); Assembler = new Pdp11Assembler(arch, addrBase, emitter); lexer = new Lexer(reader); // Assemblers are strongly line-oriented. while (lexer.Peek().Type != TokenType.EOF) { ProcessLine(); } //asm.ReportUnresolvedSymbols(); StartAddress = addrBase; return(Assembler.GetImage()); }
public override Program Load(Address addrLoad) { var arch = new Pdp11Architecture(Services, "pdp11", new Dictionary<string, object>()); var rdr = new LeImageReader(RawImage); var tuple = ReadDataBlocks(rdr); if (tuple == null) throw new BadImageFormatException("The file doesn't appear to be in LDA format."); var platform = new RT11Platform(Services, arch); var program = new Program { Architecture = arch, Platform = platform, SegmentMap = tuple.Item2, }; this.addrEntry = Address.Ptr16(tuple.Item1); return program; }
public override Program Load(Address?addrLoad) { var arch = new Pdp11Architecture(Services, "pdp11", new Dictionary <string, object>()); var rdr = new LeImageReader(RawImage); var(uAddrStart, segmentMap) = ReadDataBlocks(rdr); if (segmentMap is null) { throw new BadImageFormatException("The file doesn't appear to be in LDA format."); } var platform = new RT11Platform(Services, arch); var program = new Program { Architecture = arch, Platform = platform, SegmentMap = segmentMap, }; this.addrEntry = Address.Ptr16(uAddrStart); return(program); }
public void Setup() { this.arch = new Pdp11Architecture("pdp11"); }
public OperandParser(Pdp11Architecture arch, Lexer lexer, Pdp11Assembler asm) { this.arch = arch; this.lexer = lexer; this.asm = asm; }
public RT11Platform(IServiceProvider services, Pdp11Architecture arch) : base(services, arch, "RT-11") { this.services = services; this.arch = arch; }
public void Setup() { this.arch = new Pdp11Architecture(new ServiceContainer(), "pdp11", new Dictionary <string, object>()); }
public void Setup() { this.arch = new Pdp11Architecture(new ServiceContainer(), "pdp11"); }