mirror of
https://git.743378673.xyz/MeloNX/MeloNX.git
synced 2025-07-24 15:37:10 +02:00
aloha
This commit is contained in:
commit
b7e1d9930d
230 changed files with 17548 additions and 0 deletions
142
Ryujinx/Cpu/State/ARegister.cs
Normal file
142
Ryujinx/Cpu/State/ARegister.cs
Normal file
|
@ -0,0 +1,142 @@
|
|||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
namespace ChocolArm64.State
|
||||
{
|
||||
struct ARegister
|
||||
{
|
||||
public int Index;
|
||||
|
||||
public ARegisterType Type;
|
||||
|
||||
public ARegister(int Index, ARegisterType Type)
|
||||
{
|
||||
this.Index = Index;
|
||||
this.Type = Type;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return (ushort)Index | ((ushort)Type << 16);
|
||||
}
|
||||
|
||||
public override bool Equals(object Obj)
|
||||
{
|
||||
return Obj is ARegister Reg &&
|
||||
Reg.Index == Index &&
|
||||
Reg.Type == Type;
|
||||
}
|
||||
|
||||
public FieldInfo GetField()
|
||||
{
|
||||
switch (Type)
|
||||
{
|
||||
case ARegisterType.Flag: return GetFieldFlag();
|
||||
case ARegisterType.Int: return GetFieldInt();
|
||||
case ARegisterType.Vector: return GetFieldVector();
|
||||
}
|
||||
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
|
||||
private FieldInfo GetFieldFlag()
|
||||
{
|
||||
switch ((APState)Index)
|
||||
{
|
||||
case APState.VBit: return GetField(nameof(ARegisters.Overflow));
|
||||
case APState.CBit: return GetField(nameof(ARegisters.Carry));
|
||||
case APState.ZBit: return GetField(nameof(ARegisters.Zero));
|
||||
case APState.NBit: return GetField(nameof(ARegisters.Negative));
|
||||
}
|
||||
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
|
||||
private FieldInfo GetFieldInt()
|
||||
{
|
||||
switch (Index)
|
||||
{
|
||||
case 0: return GetField(nameof(ARegisters.X0));
|
||||
case 1: return GetField(nameof(ARegisters.X1));
|
||||
case 2: return GetField(nameof(ARegisters.X2));
|
||||
case 3: return GetField(nameof(ARegisters.X3));
|
||||
case 4: return GetField(nameof(ARegisters.X4));
|
||||
case 5: return GetField(nameof(ARegisters.X5));
|
||||
case 6: return GetField(nameof(ARegisters.X6));
|
||||
case 7: return GetField(nameof(ARegisters.X7));
|
||||
case 8: return GetField(nameof(ARegisters.X8));
|
||||
case 9: return GetField(nameof(ARegisters.X9));
|
||||
case 10: return GetField(nameof(ARegisters.X10));
|
||||
case 11: return GetField(nameof(ARegisters.X11));
|
||||
case 12: return GetField(nameof(ARegisters.X12));
|
||||
case 13: return GetField(nameof(ARegisters.X13));
|
||||
case 14: return GetField(nameof(ARegisters.X14));
|
||||
case 15: return GetField(nameof(ARegisters.X15));
|
||||
case 16: return GetField(nameof(ARegisters.X16));
|
||||
case 17: return GetField(nameof(ARegisters.X17));
|
||||
case 18: return GetField(nameof(ARegisters.X18));
|
||||
case 19: return GetField(nameof(ARegisters.X19));
|
||||
case 20: return GetField(nameof(ARegisters.X20));
|
||||
case 21: return GetField(nameof(ARegisters.X21));
|
||||
case 22: return GetField(nameof(ARegisters.X22));
|
||||
case 23: return GetField(nameof(ARegisters.X23));
|
||||
case 24: return GetField(nameof(ARegisters.X24));
|
||||
case 25: return GetField(nameof(ARegisters.X25));
|
||||
case 26: return GetField(nameof(ARegisters.X26));
|
||||
case 27: return GetField(nameof(ARegisters.X27));
|
||||
case 28: return GetField(nameof(ARegisters.X28));
|
||||
case 29: return GetField(nameof(ARegisters.X29));
|
||||
case 30: return GetField(nameof(ARegisters.X30));
|
||||
case 31: return GetField(nameof(ARegisters.X31));
|
||||
}
|
||||
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
|
||||
private FieldInfo GetFieldVector()
|
||||
{
|
||||
switch (Index)
|
||||
{
|
||||
case 0: return GetField(nameof(ARegisters.V0));
|
||||
case 1: return GetField(nameof(ARegisters.V1));
|
||||
case 2: return GetField(nameof(ARegisters.V2));
|
||||
case 3: return GetField(nameof(ARegisters.V3));
|
||||
case 4: return GetField(nameof(ARegisters.V4));
|
||||
case 5: return GetField(nameof(ARegisters.V5));
|
||||
case 6: return GetField(nameof(ARegisters.V6));
|
||||
case 7: return GetField(nameof(ARegisters.V7));
|
||||
case 8: return GetField(nameof(ARegisters.V8));
|
||||
case 9: return GetField(nameof(ARegisters.V9));
|
||||
case 10: return GetField(nameof(ARegisters.V10));
|
||||
case 11: return GetField(nameof(ARegisters.V11));
|
||||
case 12: return GetField(nameof(ARegisters.V12));
|
||||
case 13: return GetField(nameof(ARegisters.V13));
|
||||
case 14: return GetField(nameof(ARegisters.V14));
|
||||
case 15: return GetField(nameof(ARegisters.V15));
|
||||
case 16: return GetField(nameof(ARegisters.V16));
|
||||
case 17: return GetField(nameof(ARegisters.V17));
|
||||
case 18: return GetField(nameof(ARegisters.V18));
|
||||
case 19: return GetField(nameof(ARegisters.V19));
|
||||
case 20: return GetField(nameof(ARegisters.V20));
|
||||
case 21: return GetField(nameof(ARegisters.V21));
|
||||
case 22: return GetField(nameof(ARegisters.V22));
|
||||
case 23: return GetField(nameof(ARegisters.V23));
|
||||
case 24: return GetField(nameof(ARegisters.V24));
|
||||
case 25: return GetField(nameof(ARegisters.V25));
|
||||
case 26: return GetField(nameof(ARegisters.V26));
|
||||
case 27: return GetField(nameof(ARegisters.V27));
|
||||
case 28: return GetField(nameof(ARegisters.V28));
|
||||
case 29: return GetField(nameof(ARegisters.V29));
|
||||
case 30: return GetField(nameof(ARegisters.V30));
|
||||
case 31: return GetField(nameof(ARegisters.V31));
|
||||
}
|
||||
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
|
||||
private FieldInfo GetField(string Name)
|
||||
{
|
||||
return typeof(ARegisters).GetField(Name);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue