WriteLeUInt16() 공개 메소드

public WriteLeUInt16 ( Address addr, ushort w ) : void
addr Address
w ushort
리턴 void
예제 #1
0
 private void RelocateSegmentReferences(MemoryArea image)
 {
     foreach (var seg in segments)
     {
         foreach (var reloc in seg.Relocations)
         {
             image.WriteLeUInt16((uint)((reloc.Segment.Selector - addrBase.Selector.Value) * 16u + reloc.Offset), seg.Selector);
         }
     }
 }
예제 #2
0
		// Unpacks the relocation entries in a LzExe 0.91 binary

		private SegmentMap Relocate91(byte [] abUncompressed, ushort segReloc, MemoryArea pgmImgNew)
		{
            const int CompressedRelocationTableAddress = 0x0158;
            var relocations = pgmImgNew.Relocations;
			int ifile = lzHdrOffset + CompressedRelocationTableAddress;

			int rel_off=0;
			for (;;)
			{
    			ushort span = abUncompressed[ifile++];
				if (span == 0)
				{
					span = abUncompressed[ifile++];
					span |= (ushort) (abUncompressed[ifile++] << 8);
					if (span == 0)
					{
						rel_off += 0x0FFF0;
						continue;
					}
					else if (span == 1)
					{
						break;
					}
				}

				rel_off += span;
				ushort seg = (ushort) (pgmImgNew.ReadLeUInt16((uint)rel_off) + segReloc);
				pgmImgNew.WriteLeUInt16((uint)rel_off, seg);
				relocations.AddSegmentReference((uint)rel_off, seg);
				segmentMap.AddSegment(
                    new ImageSegment(
                        seg.ToString("X4"),
                        Address.SegPtr(seg, 0),
                        this.imgLoaded,
                        AccessMode.ReadWriteExecute));
			}
			return segmentMap;
		}