Пример #1
0
        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());
        }
Пример #2
0
        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());
        }
Пример #3
0
        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());
        }
Пример #4
0
        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);
        }
Пример #5
0
        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());
        }
Пример #6
0
        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;
        }
Пример #7
0
        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");
 }
Пример #9
0
 public OperandParser(Pdp11Architecture arch, Lexer lexer, Pdp11Assembler asm)
 {
     this.arch  = arch;
     this.lexer = lexer;
     this.asm   = asm;
 }
Пример #10
0
 public RT11Platform(IServiceProvider services, Pdp11Architecture arch)
     : base(services, arch, "RT-11")
 {
     this.services = services;
     this.arch     = arch;
 }
Пример #11
0
 public void Setup()
 {
     this.arch = new Pdp11Architecture(new ServiceContainer(), "pdp11", new Dictionary <string, object>());
 }
Пример #12
0
 public void Setup()
 {
     this.arch = new Pdp11Architecture(new ServiceContainer(), "pdp11");
 }