Cosmos/source/Compiler/Indy.IL2CPU.X86/IL/x86/Ldc_R8.cs

22 lines
No EOL
718 B
C#

using System;
using System.Linq;
using CPU = Indy.IL2CPU.Assembler.X86;
using Indy.IL2CPU.Assembler;
namespace Indy.IL2CPU.IL.X86 {
[OpCode(OpCodeEnum.Ldc_R8)]
public class Ldc_R8: Op {
private readonly Double mValue;
public Ldc_R8(ILReader aReader, MethodInformation aMethodInfo)
: base(aReader, aMethodInfo) {
mValue = aReader.OperandValueDouble;
}
public override void DoAssemble() {
byte[] xBytes = BitConverter.GetBytes(mValue);
new CPU.Push { DestinationValue = BitConverter.ToUInt32(xBytes, 0) };
new CPU.Push { DestinationValue = BitConverter.ToUInt32(xBytes, 4) };
Assembler.StackContents.Push(new StackContent(8, typeof(Double)));
}
}
}