Пример #1
0
        public void Hexldr_LoadOneSegtTests()
        {
            string data =
                @"
:020000040000FA
:10010000214601360121470136007EFE09D2190140
:100110002146017E17C20001FF5F16002148011928
:10012000194E79234623965778239EDA3F01B2CAA7
:100130003F0156702B5E712B722B732146013421C7
:00000001FF
";
            var hex     = new HexLoader(sc, "foo.text", Encoding.ASCII.GetBytes(data));
            var arch    = new FakeArchitecture(sc);
            var program = hex.Load(Address.Ptr32(0x00), arch, new DefaultPlatform(sc, arch));

            Assert.AreEqual(1, program.SegmentMap.Segments.Count, "Wrong number of segments");

            var bmem0 = (ByteMemoryArea)program.SegmentMap.Segments.Values[0].MemoryArea;

            Assert.AreEqual(Address.Ptr32(0x100), bmem0.BaseAddress);
            Assert.AreEqual(64, bmem0.Length);
            Assert.AreEqual(0x21, bmem0.Bytes[0]);
            Assert.AreEqual(0x21, bmem0.Bytes[0x10]);
            Assert.AreEqual(0x19, bmem0.Bytes[0x20]);
            Assert.AreEqual(0x34, bmem0.Bytes[0x3E]);
        }
Пример #2
0
        public void Hexldr_Load()
        {
            string data =
@":10010000214601360121470136007EFE09D2190140
:100110002146017E17C20001FF5F16002148011928
:10012000194E79234623965778239EDA3F01B2CAA7
:100130003F0156702B5E712B722B732146013421C7
:00000001FF
";
            var hex = new HexLoader(sc, "foo.text", Encoding.ASCII.GetBytes(data));
            var arch = new FakeArchitecture();
            var program = hex.Load(Address.Ptr32(0x00), arch, new DefaultPlatform(sc, arch));
            Assert.AreEqual(1, program.SegmentMap.Segments.Count);
            Assert.AreEqual(0x21, program.SegmentMap.Segments.Values[0].MemoryArea.Bytes[0]);
        }
Пример #3
0
        public void Hexldr_LoadMultSegtsTests()
        {
            string data =
                @"
:020000040030CA
:0100000024DB
:010001000EF0
:0100020039C4
:0100030014E8

:01000500807A
:01000600C039

:010008000FE8
:01000900C036
:01000A000FE6
:01000B00E014
:01000C000FE4
:01000D0040B2

:020000040000FA
:08000000000097EF1DF0120053
:060008000CEF18F01200DD

:060018003BEF18F012009E
:02001E001200CE
:100020000201526B4E6B516B4F6B4D6B5C6B5D6B9A
:100030005E6B1200D9CFE6FFE1CFD9FF81E947E837
:10004000076A0750060DF3CFF6FFF4CFF7FFB80E9F
:10005000F6262D0EF7220900F550016E0900F55025
:10006000026E0900F550036E0900F550046E090098
:10007000F550056E0900F550066E015013E0D95099
:00000001FF
";
            var hex     = new HexLoader(sc, "foo.text", Encoding.ASCII.GetBytes(data));
            var arch    = new FakeArchitecture(sc);
            var program = hex.Load(Address.Ptr32(0x00), arch, new DefaultPlatform(sc, arch));

            Assert.AreEqual(5, program.SegmentMap.Segments.Count, "Wrong number of segments");

            var bmem0 = (ByteMemoryArea)program.SegmentMap.Segments.Values[0].MemoryArea;

            Assert.AreEqual(Address.Ptr32(0), bmem0.BaseAddress);
            Assert.AreEqual(14, bmem0.Length);
            Assert.AreEqual(0x00, bmem0.Bytes[0]);
            Assert.AreEqual(0x97, bmem0.Bytes[2]);

            var bmem1 = (ByteMemoryArea)program.SegmentMap.Segments.Values[1].MemoryArea;

            Assert.AreEqual(Address.Ptr32(0x18), bmem1.BaseAddress);
            Assert.AreEqual(104, bmem1.Length);
            Assert.AreEqual(0x3B, bmem1.Bytes[0]);

            var bmem2 = (ByteMemoryArea)program.SegmentMap.Segments.Values[2].MemoryArea;

            Assert.AreEqual(Address.Ptr32(0x300000), bmem2.BaseAddress);
            Assert.AreEqual(4, bmem2.Length);
            Assert.AreEqual(0x24, bmem2.Bytes[0]);

            var bmem3 = (ByteMemoryArea)program.SegmentMap.Segments.Values[3].MemoryArea;

            Assert.AreEqual(Address.Ptr32(0x300005), bmem3.BaseAddress);
            Assert.AreEqual(2, bmem3.Length);
            Assert.AreEqual(0x80, bmem3.Bytes[0]);

            var bmem4 = (ByteMemoryArea)program.SegmentMap.Segments.Values[4].MemoryArea;

            Assert.AreEqual(Address.Ptr32(0x300008), bmem4.BaseAddress);
            Assert.AreEqual(6, bmem4.Length);
            Assert.AreEqual(0x0F, bmem4.Bytes[0]);
        }