mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2025-06-28 09:00:46 -07:00
Move solution and projects to src
This commit is contained in:
34
src/ARMeilleure/Decoders/OpCodeT16MemMult.cs
Normal file
34
src/ARMeilleure/Decoders/OpCodeT16MemMult.cs
Normal file
@ -0,0 +1,34 @@
|
||||
using ARMeilleure.Instructions;
|
||||
using System;
|
||||
using System.Numerics;
|
||||
|
||||
namespace ARMeilleure.Decoders
|
||||
{
|
||||
class OpCodeT16MemMult : OpCodeT16, IOpCode32MemMult
|
||||
{
|
||||
public int Rn { get; }
|
||||
public int RegisterMask { get; }
|
||||
public int PostOffset { get; }
|
||||
public bool IsLoad { get; }
|
||||
public int Offset { get; }
|
||||
|
||||
public new static OpCode Create(InstDescriptor inst, ulong address, int opCode) => new OpCodeT16MemMult(inst, address, opCode);
|
||||
|
||||
public OpCodeT16MemMult(InstDescriptor inst, ulong address, int opCode) : base(inst, address, opCode)
|
||||
{
|
||||
RegisterMask = opCode & 0xff;
|
||||
Rn = (opCode >> 8) & 7;
|
||||
|
||||
int regCount = BitOperations.PopCount((uint)RegisterMask);
|
||||
|
||||
Offset = 0;
|
||||
PostOffset = 4 * regCount;
|
||||
IsLoad = inst.Name switch
|
||||
{
|
||||
InstName.Ldm => true,
|
||||
InstName.Stm => false,
|
||||
_ => throw new InvalidOperationException()
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user