Exemplo n.º 1
0
        private void RunTest(AssemblerFragment fragment, string sExp)
        {
            Address      addrBase = Address.SegPtr(0xC00, 0);
            X86Assembler asm      = new X86Assembler(new IntelArchitecture(ProcessorMode.Real), addrBase, new List <EntryPoint>());

            fragment.Build(asm);
            Program lr = asm.GetImage();

            X86Disassembler dasm = new X86Disassembler(
                lr.Image.CreateLeReader(lr.Image.BaseAddress),
                PrimitiveType.Word16,
                PrimitiveType.Word16,
                false);
            StringBuilder sb = new StringBuilder();

            try
            {
                foreach (var instr in dasm)
                {
                    sb.AppendFormat("{0}\t{1}", instr.Address, instr);
                    sb.AppendLine();
                }
                Assert.AreEqual(sExp, sb.ToString());
            }
            catch
            {
                Console.WriteLine(sb.ToString());
                throw;
            }
        }
Exemplo n.º 2
0
        private void RunTest(AssemblerFragment fragment, string sExp)
        {
            Address      addrBase = Address.SegPtr(0xC00, 0);
            X86Assembler asm      = new X86Assembler(sc, new MsdosPlatform(sc, new X86ArchitectureReal("x86-real-16")), addrBase, new List <ImageSymbol>());

            fragment.Build(asm);
            Program         lr   = asm.GetImage();
            var             mem  = lr.SegmentMap.Segments.Values.First().MemoryArea;
            X86Disassembler dasm = new X86Disassembler(
                ProcessorMode.Real,
                mem.CreateLeReader(mem.BaseAddress),
                PrimitiveType.Word16,
                PrimitiveType.Word16,
                false);
            StringBuilder sb = new StringBuilder();

            try
            {
                foreach (var instr in dasm)
                {
                    sb.AppendFormat("{0}\t{1}", instr.Address, instr);
                    sb.AppendLine();
                }
                Assert.AreEqual(sExp, sb.ToString());
            }
            catch
            {
                Console.WriteLine(sb.ToString());
                throw;
            }
        }