Skip to content

Commit

Permalink
Port changes to crossgen2 shared files
Browse files Browse the repository at this point in the history
Changes from dotnet/corert#7944 to enable x86 support.
  • Loading branch information
MichalStrehovsky committed Jan 14, 2020
1 parent 2c54bd9 commit cfc7a8a
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@ public X86Emitter(NodeFactory factory, bool relocsOnly)
public ObjectDataBuilder Builder;
public TargetRegisterMap TargetRegister;

public void EmitCMP(ref AddrMode addrMode, sbyte immediate)
{
if (addrMode.Size == AddrModeSize.Int16)
Builder.EmitByte(0x66);
EmitIndirInstruction((byte)((addrMode.Size != AddrModeSize.Int8) ? 0x83 : 0x80), 0x7, ref addrMode);
Builder.EmitByte((byte)immediate);
}

public void EmitADD(ref AddrMode addrMode, sbyte immediate)
{
if (addrMode.Size == AddrModeSize.Int16)
Expand Down Expand Up @@ -76,7 +84,13 @@ public void EmitPUSH(ISymbolNode node)
}
}

public void EmitMOV(Register register, ISymbolNode node)
public void EmitMOV(Register regDst, Register regSrc)
{
Builder.EmitByte(0x8B);
Builder.EmitByte((byte)(0xC0 | (((int)regDst & 0x07) << 3) | (((int)regSrc & 0x07))));
}

public void EmitMOV(Register register, ISymbolNode node, int delta = 0)
{
if (node.RepresentsIndirectionCell)
{
Expand All @@ -89,14 +103,29 @@ public void EmitMOV(Register register, ISymbolNode node)
// mov register, immediate
Builder.EmitByte((byte)(0xB8 + (byte)register));
}
Builder.EmitReloc(node, RelocType.IMAGE_REL_BASED_HIGHLOW);
Builder.EmitReloc(node, RelocType.IMAGE_REL_BASED_HIGHLOW, delta);
}

public void EmitINT3()
{
Builder.EmitByte(0xCC);
}

public void EmitRET()
{
Builder.EmitByte(0xC3);
}

public void EmitRETIfEqual()
{
// jne @+1
Builder.EmitByte(0x75);
Builder.EmitByte(0x01);

// ret
Builder.EmitByte(0xC3);
}

private bool InSignedByteRange(int i)
{
return i == (int)(sbyte)i;
Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/src/tools/crossgen2/jitinterface/jithost.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
class JitConfigProvider
{
public:
virtual int getIntConfigValue(
virtual int STDMETHODCALLTYPE getIntConfigValue(
const wchar_t* name,
int defaultValue
) = 0;

virtual int getStringConfigValue(
virtual int STDMETHODCALLTYPE getStringConfigValue(
const wchar_t* name,
wchar_t* retBuffer,
int retBufferLength
Expand Down

0 comments on commit cfc7a8a

Please sign in to comment.