Cosmos/source/Cosmos.Assembler/x86/SSEAndMMX2/SSEInit.cs
2016-05-28 14:43:48 +02:00

29 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Cosmos.Assembler.x86.SSE
{
public class SSEInit
{
public SSEInit() {
new Comment("BEGIN - SSE Init");
// CR4[bit 9]=1, CR4[bit 10]=1, CR0[bit 2]=0, CR0[bit 1]=1
new Mov { DestinationReg = Registers.EAX, SourceReg = Registers.CR4 };
new Or { DestinationReg = Registers.EAX, SourceValue = 0x100 };
new Mov { DestinationReg = Registers.CR4, SourceReg = Registers.EAX };
new Mov { DestinationReg = Registers.EAX, SourceReg = Registers.CR4 };
new Or { DestinationReg = Registers.EAX, SourceValue = 0x200 };
new Mov { DestinationReg = Registers.CR4, SourceReg = Registers.EAX };
new Mov { DestinationReg = Registers.EAX, SourceReg = Registers.CR0 };
new And { DestinationReg = Registers.EAX, SourceValue = 0xfffffffd };
new Mov { DestinationReg = Registers.CR0, SourceReg = Registers.EAX };
new Mov { DestinationReg = Registers.EAX, SourceReg = Registers.CR0 };
new And { DestinationReg = Registers.EAX, SourceValue = 1 };
new Mov { DestinationReg = Registers.CR0, SourceReg = Registers.EAX };
new Comment("END - SSE Init");
}
}
}