Cosmos/source/Tests/MathTest/Lost/JIT/AMD64OLD/ModRM.cs
LostTheBlack_cp 498f293c8a Added OO-based basic parts of AMD64 jitter:
[+] Registers enumeration (only GPRs)
[+] Basic class ProcessorInstruction
[+] Base class InstructionOperand it's child GeneralPurposeRegister
[+] Added some abstraction to DestSourceInstruction
[+] Added stub for first instruction - AddWithCarry
2008-03-31 06:59:34 +00:00

29 lines
745 B
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
namespace Lost.JIT.AMD64OLD
{
static class ModRM
{
public static void EncodeRegisters(this Stream dest, Register destReg, Register sourceReg)
{
destReg &= Register.Legacy;
sourceReg &= Register.Legacy;
byte result = 0xC0; //11000000b
result |= (byte)(((byte)destReg) << 3 | (byte)sourceReg);
dest.WriteByte(result);
}
public static void EncodeIndirectMemory(this Stream dest, byte xcode, Register baseReg)
{
Debug.Assert((xcode & ~(byte)Register.Legacy) == 0);
byte modRM =(byte)((xcode << 3) | (byte)baseReg);
dest.WriteByte(modRM);
}
}
}