This commit is contained in:
mterwoord_cp 2010-08-01 15:25:09 +00:00
parent 0454d6b0d3
commit b3e3e512db
3 changed files with 44 additions and 1 deletions

View file

@ -347,6 +347,7 @@
<Compile Include="X86\Registers.cs" />
<Compile Include="X86\Return.cs" />
<Compile Include="X86\RotateThroughCarryRight.cs" />
<Compile Include="X86\Scas.cs" />
<Compile Include="X86\SetInterruptFlag.cs" />
<Compile Include="X86\ShiftLeft.cs" />
<Compile Include="X86\ShiftRight.cs" />

View file

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Cosmos.IL2CPU.X86
{
[OpCode("scas")]
public class Scas: InstructionWithSize, IInstructionWithPrefix
{
public static void InitializeEncodingData(Instruction.InstructionData aData)
{
}
public InstructionPrefixes Prefixes
{
get;
set;
}
public override void WriteText(Cosmos.IL2CPU.Assembler aAssembler, System.IO.TextWriter aOutput)
{
if ((Prefixes & InstructionPrefixes.RepeatTillNotEqual) != 0)
{
aOutput.Write("repne ");
}
switch (Size)
{
case 32:
aOutput.Write("scasd");
return;
case 16:
aOutput.Write("scasw");
return;
case 8:
aOutput.Write("scasb");
return;
default: throw new Exception("Size not supported!");
}
}
}
}

View file

@ -9,7 +9,7 @@ namespace Cosmos.IL2CPU.X86 {
None,
Lock,
Repeat,
RepeatNotEqual
RepeatTillNotEqual
}
public interface IInstructionWithPrefix {