chore(analysis): scaffold project with opcode field/category/kind types
This commit is contained in:
1 parent
244a4f9b04
commit
95dcacd18a
4 files changed
+112
No files matched your search
@@ -0,0 +1,16 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<ImplicitUsings>disable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<RootNamespace>Chip8.Analysis</RootNamespace>
|
||||||
|
<AssemblyName>Chip8.Analysis</AssemblyName>
|
||||||
|
<LangVersion>10</LangVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Chip8.Core\Chip8.Core.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
namespace Chip8.Analysis;
|
||||||
|
|
||||||
|
public enum InstructionCategory
|
||||||
|
{
|
||||||
|
Control,
|
||||||
|
Skip,
|
||||||
|
Arithmetic,
|
||||||
|
Memory,
|
||||||
|
Draw,
|
||||||
|
Io,
|
||||||
|
Timer,
|
||||||
|
Sound,
|
||||||
|
Data,
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
namespace Chip8.Analysis;
|
||||||
|
|
||||||
|
public enum InstructionKind
|
||||||
|
{
|
||||||
|
System,
|
||||||
|
ClearScreen,
|
||||||
|
Return,
|
||||||
|
ScrollDown,
|
||||||
|
ScrollUp,
|
||||||
|
ScrollRight,
|
||||||
|
ScrollLeft,
|
||||||
|
Exit,
|
||||||
|
LowRes,
|
||||||
|
HiRes,
|
||||||
|
Jump,
|
||||||
|
Call,
|
||||||
|
SkipEqualImmediate,
|
||||||
|
SkipNotEqualImmediate,
|
||||||
|
SkipEqualRegister,
|
||||||
|
SkipNotEqualRegister,
|
||||||
|
SkipKeyPressed,
|
||||||
|
SkipKeyReleased,
|
||||||
|
LoadImmediate,
|
||||||
|
AddImmediate,
|
||||||
|
Arithmetic,
|
||||||
|
LoadIndex,
|
||||||
|
JumpWithOffset,
|
||||||
|
Random,
|
||||||
|
Draw,
|
||||||
|
LoadDelay,
|
||||||
|
WaitKey,
|
||||||
|
SetDelay,
|
||||||
|
SetSound,
|
||||||
|
AddIndex,
|
||||||
|
LoadFont,
|
||||||
|
LoadBigFont,
|
||||||
|
StoreBcd,
|
||||||
|
StoreRegisters,
|
||||||
|
LoadRegisters,
|
||||||
|
StoreFlags,
|
||||||
|
LoadFlags,
|
||||||
|
LoadLong,
|
||||||
|
Plane,
|
||||||
|
Audio,
|
||||||
|
Pitch,
|
||||||
|
SaveRange,
|
||||||
|
LoadRange,
|
||||||
|
Data,
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
namespace Chip8.Analysis;
|
||||||
|
|
||||||
|
public readonly struct OpcodeFields
|
||||||
|
{
|
||||||
|
public OpcodeFields(ushort opcode)
|
||||||
|
{
|
||||||
|
this.opcode = opcode;
|
||||||
|
x = (opcode & 0x0F00) >> 8;
|
||||||
|
y = (opcode & 0x00F0) >> 4;
|
||||||
|
n = opcode & 0x000F;
|
||||||
|
nn = opcode & 0x00FF;
|
||||||
|
nnn = (ushort)(opcode & 0x0FFF);
|
||||||
|
highNibble = (opcode & 0xF000) >> 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort opcode { get; }
|
||||||
|
public int highNibble { get; }
|
||||||
|
public int x { get; }
|
||||||
|
public int y { get; }
|
||||||
|
public int n { get; }
|
||||||
|
public int nn { get; }
|
||||||
|
public ushort nnn { get; }
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return "0x" + opcode.ToString("X4", CultureInfo.InvariantCulture)
|
||||||
|
+ " x=" + x + " y=" + y + " n=" + n
|
||||||
|
+ " nn=0x" + nn.ToString("X2", CultureInfo.InvariantCulture)
|
||||||
|
+ " nnn=0x" + nnn.ToString("X3", CultureInfo.InvariantCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user