Example #1
0
		public override void Emit(x86Stream strm)
		{
			if (PopSize == 0)
			{
				// No pop
				if (Segment == x86Segment.CS)
				{
					// Near return
					strm.WriteByte(0xC3);
				}
				else
				{
					// Far return
					strm.WriteByte(0xCB);
				}
			}
			else
			{
				// pop
				if (Segment == x86Segment.CS)
				{
					// Near return
					strm.WriteByte(0xC2);
					strm.WriteImm16(PopSize);
				}
				else
				{
					// Far return
					strm.WriteByte(0xCA);
					strm.WriteImm16(PopSize);
				}
			}
		}
Example #2
0
		public override void Emit(x86Stream strm)
		{
			strm.WriteByte(0x8B);
			strm.WriteMem(0, 0);
			this.PatchableLocations.Add(
				new PatchableLocationDescription() 
				{
					TargetLabel = target, 
					PatchLocation = (uint)strm.Position - 4,
				}
			);
		}
Example #3
0
		public override void Emit(x86Stream strm)
		{
			strm.WriteByte(0x90);
		}