Cosmos/source/Indy.IL2CPU/Assembler/x86/Push.cs
mterwoord_cp 21ec33c46d
2008-11-15 17:47:57 +00:00

42 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Indy.IL2CPU.Assembler.X86 {
[OpCode("push")]
public class Push : InstructionWithDestination {
public static void InitializeEncodingData(Instruction.InstructionData aData) {
aData.EncodingOptions.Add(new InstructionData.InstructionEncodingOption {
OpCode = new byte[] { 0x50 },
AllowedSizes = InstructionSizes.DWord,
DestinationReg = Guid.Empty,
DestinationRegByte = 0,
DestinationRegBitShiftLeft = 0
}); // register
aData.EncodingOptions.Add(new InstructionData.InstructionEncodingOption {
OpCode = new byte[] { 0x68 },
AllowedSizes = InstructionSizes.DWord,
DestinationImmediate = true
}); // immediate
aData.EncodingOptions.Add(new InstructionData.InstructionEncodingOption {
AllowedSizes = InstructionSizes.DWord,
OpCode = new byte[] { 0xFF },
NeedsModRMByte = true,
DestinationMemory = true,
DefaultSize = InstructionSize.DWord,
InitialModRMByteValue = 0x30
}); // pop to memory
}
public Push() {
//Changed without size
//Size = 32;
}
public override string ToString() {
return this.mMnemonic + " dword " + this.GetDestinationAsString();
}
}
}