From 747876dc6711b8cdf5751c1089b1f1311c46628d Mon Sep 17 00:00:00 2001 From: merry Date: Fri, 18 Feb 2022 00:33:43 +0000 Subject: [PATCH] Decoders: Add IOpCode32HasSetFlags (#3136) --- ARMeilleure/Decoders/IOpCode32Alu.cs | 4 +--- ARMeilleure/Decoders/IOpCode32HasSetFlags.cs | 7 +++++++ ARMeilleure/Decoders/OpCode32AluUmull.cs | 2 +- ARMeilleure/Instructions/InstEmitAluHelper.cs | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 ARMeilleure/Decoders/IOpCode32HasSetFlags.cs diff --git a/ARMeilleure/Decoders/IOpCode32Alu.cs b/ARMeilleure/Decoders/IOpCode32Alu.cs index 9876f107..69fee164 100644 --- a/ARMeilleure/Decoders/IOpCode32Alu.cs +++ b/ARMeilleure/Decoders/IOpCode32Alu.cs @@ -1,10 +1,8 @@ namespace ARMeilleure.Decoders { - interface IOpCode32Alu : IOpCode32 + interface IOpCode32Alu : IOpCode32, IOpCode32HasSetFlags { int Rd { get; } int Rn { get; } - - bool? SetFlags { get; } } } \ No newline at end of file diff --git a/ARMeilleure/Decoders/IOpCode32HasSetFlags.cs b/ARMeilleure/Decoders/IOpCode32HasSetFlags.cs new file mode 100644 index 00000000..71ca6d19 --- /dev/null +++ b/ARMeilleure/Decoders/IOpCode32HasSetFlags.cs @@ -0,0 +1,7 @@ +namespace ARMeilleure.Decoders +{ + interface IOpCode32HasSetFlags + { + bool? SetFlags { get; } + } +} \ No newline at end of file diff --git a/ARMeilleure/Decoders/OpCode32AluUmull.cs b/ARMeilleure/Decoders/OpCode32AluUmull.cs index bbdaaeae..1b31239b 100644 --- a/ARMeilleure/Decoders/OpCode32AluUmull.cs +++ b/ARMeilleure/Decoders/OpCode32AluUmull.cs @@ -1,6 +1,6 @@ namespace ARMeilleure.Decoders { - class OpCode32AluUmull : OpCode32 + class OpCode32AluUmull : OpCode32, IOpCode32HasSetFlags { public int RdLo { get; } public int RdHi { get; } diff --git a/ARMeilleure/Instructions/InstEmitAluHelper.cs b/ARMeilleure/Instructions/InstEmitAluHelper.cs index fe555767..8bf53ed4 100644 --- a/ARMeilleure/Instructions/InstEmitAluHelper.cs +++ b/ARMeilleure/Instructions/InstEmitAluHelper.cs @@ -14,7 +14,7 @@ namespace ARMeilleure.Instructions { public static bool ShouldSetFlags(ArmEmitterContext context) { - IOpCode32Alu op = (IOpCode32Alu)context.CurrOp; + IOpCode32HasSetFlags op = (IOpCode32HasSetFlags)context.CurrOp; if (op.SetFlags == null) {